@maizzle/framework 6.0.0-rc.9 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/README.md +3 -3
  2. package/bin/maizzle.mjs +1 -1
  3. package/dist/build.d.ts +38 -0
  4. package/dist/build.d.ts.map +1 -0
  5. package/dist/build.js +234 -0
  6. package/dist/build.js.map +1 -0
  7. package/dist/components/Body.vue +32 -3
  8. package/dist/components/Button.vue +91 -62
  9. package/dist/components/CodeBlock.vue +6 -4
  10. package/dist/components/CodeInline.vue +77 -6
  11. package/dist/components/Column.vue +67 -31
  12. package/dist/components/Container.vue +73 -12
  13. package/dist/components/Font.vue +96 -0
  14. package/dist/components/Head.vue +1 -1
  15. package/dist/components/Heading.vue +1 -1
  16. package/dist/components/Hr.vue +33 -0
  17. package/dist/components/Html.vue +36 -3
  18. package/dist/components/Img.vue +332 -0
  19. package/dist/components/Layout.vue +71 -21
  20. package/dist/components/Link.vue +1 -1
  21. package/dist/components/Markdown.vue +51 -24
  22. package/dist/components/MarkdownLayout.vue +39 -0
  23. package/dist/components/NotPlaintext.vue +14 -0
  24. package/dist/components/Outlook.vue +38 -11
  25. package/dist/components/OutlookBg.vue +241 -0
  26. package/dist/components/Plaintext.vue +14 -0
  27. package/dist/components/Preheader.vue +35 -10
  28. package/dist/components/QrCode.vue +157 -0
  29. package/dist/components/Raw.vue +28 -0
  30. package/dist/components/Row.vue +115 -22
  31. package/dist/components/Section.vue +65 -26
  32. package/dist/components/Spacer.vue +35 -29
  33. package/dist/components/Tailwind.vue +45 -0
  34. package/dist/components/Text.vue +3 -3
  35. package/dist/components/Vml.vue +207 -94
  36. package/dist/components/utils.d.ts +53 -0
  37. package/dist/components/utils.d.ts.map +1 -0
  38. package/dist/components/utils.js +80 -0
  39. package/dist/components/utils.js.map +1 -0
  40. package/dist/components/utils.ts +102 -0
  41. package/dist/composables/defineConfig.d.ts +13 -0
  42. package/dist/composables/defineConfig.d.ts.map +1 -0
  43. package/dist/composables/{defineConfig.mjs → defineConfig.js} +7 -9
  44. package/dist/composables/defineConfig.js.map +1 -0
  45. package/dist/composables/renderContext.d.ts +37 -0
  46. package/dist/composables/renderContext.d.ts.map +1 -0
  47. package/dist/composables/renderContext.js +6 -0
  48. package/dist/composables/renderContext.js.map +1 -0
  49. package/dist/composables/useBaseUrl.d.ts +19 -0
  50. package/dist/composables/useBaseUrl.d.ts.map +1 -0
  51. package/dist/composables/useBaseUrl.js +26 -0
  52. package/dist/composables/useBaseUrl.js.map +1 -0
  53. package/dist/composables/useConfig.d.ts +16 -0
  54. package/dist/composables/useConfig.d.ts.map +1 -0
  55. package/dist/composables/useConfig.js +19 -0
  56. package/dist/composables/useConfig.js.map +1 -0
  57. package/dist/composables/useCurrentTemplate.d.ts +31 -0
  58. package/dist/composables/useCurrentTemplate.d.ts.map +1 -0
  59. package/dist/composables/useCurrentTemplate.js +42 -0
  60. package/dist/composables/useCurrentTemplate.js.map +1 -0
  61. package/dist/composables/{useDoctype.d.mts → useDoctype.d.ts} +1 -1
  62. package/dist/composables/useDoctype.d.ts.map +1 -0
  63. package/dist/composables/{useDoctype.mjs → useDoctype.js} +3 -4
  64. package/dist/composables/useDoctype.js.map +1 -0
  65. package/dist/composables/{useEvent.d.mts → useEvent.d.ts} +3 -3
  66. package/dist/composables/useEvent.d.ts.map +1 -0
  67. package/dist/composables/{useEvent.mjs → useEvent.js} +4 -5
  68. package/dist/composables/useEvent.js.map +1 -0
  69. package/dist/composables/useFont.d.ts +50 -0
  70. package/dist/composables/useFont.d.ts.map +1 -0
  71. package/dist/composables/useFont.js +92 -0
  72. package/dist/composables/useFont.js.map +1 -0
  73. package/dist/composables/useOutlookFallback.d.ts +21 -0
  74. package/dist/composables/useOutlookFallback.d.ts.map +1 -0
  75. package/dist/composables/useOutlookFallback.js +29 -0
  76. package/dist/composables/useOutlookFallback.js.map +1 -0
  77. package/dist/composables/useOutputPath.d.ts +17 -0
  78. package/dist/composables/useOutputPath.d.ts.map +1 -0
  79. package/dist/composables/useOutputPath.js +23 -0
  80. package/dist/composables/useOutputPath.js.map +1 -0
  81. package/dist/composables/{usePlaintext.d.mts → usePlaintext.d.ts} +3 -1
  82. package/dist/composables/usePlaintext.d.ts.map +1 -0
  83. package/dist/composables/{usePlaintext.mjs → usePlaintext.js} +4 -4
  84. package/dist/composables/usePlaintext.js.map +1 -0
  85. package/dist/composables/usePreheader.d.ts +25 -0
  86. package/dist/composables/usePreheader.d.ts.map +1 -0
  87. package/dist/composables/usePreheader.js +28 -0
  88. package/dist/composables/usePreheader.js.map +1 -0
  89. package/dist/composables/useTransformers.d.ts +34 -0
  90. package/dist/composables/useTransformers.d.ts.map +1 -0
  91. package/dist/composables/useTransformers.js +48 -0
  92. package/dist/composables/useTransformers.js.map +1 -0
  93. package/dist/composables/useUrlQuery.d.ts +19 -0
  94. package/dist/composables/useUrlQuery.d.ts.map +1 -0
  95. package/dist/composables/useUrlQuery.js +26 -0
  96. package/dist/composables/useUrlQuery.js.map +1 -0
  97. package/dist/config/{defaults.d.mts → defaults.d.ts} +2 -2
  98. package/dist/config/defaults.d.ts.map +1 -0
  99. package/dist/config/{defaults.mjs → defaults.js} +10 -6
  100. package/dist/config/defaults.js.map +1 -0
  101. package/dist/config/index.d.ts +24 -0
  102. package/dist/config/index.d.ts.map +1 -0
  103. package/dist/config/{index.mjs → index.js} +45 -14
  104. package/dist/config/index.js.map +1 -0
  105. package/dist/events/{index.d.mts → index.d.ts} +35 -12
  106. package/dist/events/index.d.ts.map +1 -0
  107. package/dist/events/{index.mjs → index.js} +31 -13
  108. package/dist/events/index.js.map +1 -0
  109. package/dist/index.d.ts +41 -0
  110. package/dist/index.js +40 -0
  111. package/dist/{plaintext.d.mts → plaintext.d.ts} +1 -1
  112. package/dist/plaintext.d.ts.map +1 -0
  113. package/dist/{plaintext.mjs → plaintext.js} +4 -5
  114. package/dist/plaintext.js.map +1 -0
  115. package/dist/{plugin.d.mts → plugin.d.ts} +2 -2
  116. package/dist/plugin.d.ts.map +1 -0
  117. package/dist/{plugin.mjs → plugin.js} +8 -9
  118. package/dist/plugin.js.map +1 -0
  119. package/dist/plugins/postcss/{mergeMediaQueries.d.mts → mergeMediaQueries.d.ts} +2 -2
  120. package/dist/plugins/postcss/mergeMediaQueries.d.ts.map +1 -0
  121. package/dist/plugins/postcss/{mergeMediaQueries.mjs → mergeMediaQueries.js} +2 -3
  122. package/dist/plugins/postcss/mergeMediaQueries.js.map +1 -0
  123. package/dist/plugins/postcss/{pruneVars.d.mts → pruneVars.d.ts} +1 -1
  124. package/dist/plugins/postcss/pruneVars.d.ts.map +1 -0
  125. package/dist/plugins/postcss/{pruneVars.mjs → pruneVars.js} +2 -2
  126. package/dist/plugins/postcss/pruneVars.js.map +1 -0
  127. package/dist/plugins/postcss/quoteFontFamilies.d.ts +13 -0
  128. package/dist/plugins/postcss/quoteFontFamilies.d.ts.map +1 -0
  129. package/dist/plugins/postcss/quoteFontFamilies.js +84 -0
  130. package/dist/plugins/postcss/quoteFontFamilies.js.map +1 -0
  131. package/dist/plugins/postcss/{removeDeclarations.d.mts → removeDeclarations.d.ts} +1 -1
  132. package/dist/plugins/postcss/removeDeclarations.d.ts.map +1 -0
  133. package/dist/plugins/postcss/{removeDeclarations.mjs → removeDeclarations.js} +2 -2
  134. package/dist/plugins/postcss/removeDeclarations.js.map +1 -0
  135. package/dist/plugins/postcss/resolveMaizzleImports.d.ts +16 -0
  136. package/dist/plugins/postcss/resolveMaizzleImports.d.ts.map +1 -0
  137. package/dist/plugins/postcss/resolveMaizzleImports.js +39 -0
  138. package/dist/plugins/postcss/resolveMaizzleImports.js.map +1 -0
  139. package/dist/plugins/postcss/resolveProps.d.ts +8 -0
  140. package/dist/plugins/postcss/resolveProps.d.ts.map +1 -0
  141. package/dist/plugins/postcss/resolveProps.js +155 -0
  142. package/dist/plugins/postcss/resolveProps.js.map +1 -0
  143. package/dist/plugins/postcss/{tailwindCleanup.d.mts → tailwindCleanup.d.ts} +2 -2
  144. package/dist/plugins/postcss/tailwindCleanup.d.ts.map +1 -0
  145. package/dist/plugins/postcss/{tailwindCleanup.mjs → tailwindCleanup.js} +5 -3
  146. package/dist/plugins/postcss/tailwindCleanup.js.map +1 -0
  147. package/dist/prepare.d.ts +17 -0
  148. package/dist/prepare.d.ts.map +1 -0
  149. package/dist/prepare.js +44 -0
  150. package/dist/prepare.js.map +1 -0
  151. package/dist/render/active.d.ts +8 -0
  152. package/dist/render/active.d.ts.map +1 -0
  153. package/dist/render/active.js +12 -0
  154. package/dist/render/active.js.map +1 -0
  155. package/dist/render/buildTemplate.d.ts +49 -0
  156. package/dist/render/buildTemplate.d.ts.map +1 -0
  157. package/dist/render/buildTemplate.js +141 -0
  158. package/dist/render/buildTemplate.js.map +1 -0
  159. package/dist/render/{createRenderer.d.mts → createRenderer.d.ts} +14 -6
  160. package/dist/render/createRenderer.d.ts.map +1 -0
  161. package/dist/render/createRenderer.js +468 -0
  162. package/dist/render/createRenderer.js.map +1 -0
  163. package/dist/render/index.d.ts +18 -0
  164. package/dist/render/index.d.ts.map +1 -0
  165. package/dist/render/index.js +59 -0
  166. package/dist/render/index.js.map +1 -0
  167. package/dist/render/injectFonts.d.ts +15 -0
  168. package/dist/render/injectFonts.d.ts.map +1 -0
  169. package/dist/render/injectFonts.js +45 -0
  170. package/dist/render/injectFonts.js.map +1 -0
  171. package/dist/render/parallel/buildWorker.d.ts +31 -0
  172. package/dist/render/parallel/buildWorker.d.ts.map +1 -0
  173. package/dist/render/parallel/buildWorker.js +66 -0
  174. package/dist/render/parallel/buildWorker.js.map +1 -0
  175. package/dist/render/parallel/worker.mjs +28 -0
  176. package/dist/render/plugins/codeBlockExtract.d.ts +14 -0
  177. package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -0
  178. package/dist/render/plugins/codeBlockExtract.js +38 -0
  179. package/dist/render/plugins/codeBlockExtract.js.map +1 -0
  180. package/dist/render/plugins/markdownExtract.d.ts +12 -0
  181. package/dist/render/plugins/markdownExtract.d.ts.map +1 -0
  182. package/dist/render/plugins/markdownExtract.js +49 -0
  183. package/dist/render/plugins/markdownExtract.js.map +1 -0
  184. package/dist/render/plugins/rawExtract.d.ts +14 -0
  185. package/dist/render/plugins/rawExtract.d.ts.map +1 -0
  186. package/dist/render/plugins/rawExtract.js +34 -0
  187. package/dist/render/plugins/rawExtract.js.map +1 -0
  188. package/dist/render/plugins/rowSourceLocation.d.ts +18 -0
  189. package/dist/render/plugins/rowSourceLocation.d.ts.map +1 -0
  190. package/dist/render/plugins/rowSourceLocation.js +45 -0
  191. package/dist/render/plugins/rowSourceLocation.js.map +1 -0
  192. package/dist/{serve.d.mts → serve.d.ts} +5 -3
  193. package/dist/serve.d.ts.map +1 -0
  194. package/dist/{serve.mjs → serve.js} +201 -107
  195. package/dist/serve.js.map +1 -0
  196. package/dist/server/compatibility.d.ts +59 -0
  197. package/dist/server/compatibility.d.ts.map +1 -0
  198. package/dist/server/compatibility.js +959 -0
  199. package/dist/server/compatibility.js.map +1 -0
  200. package/dist/server/{email.d.mts → email.d.ts} +2 -2
  201. package/dist/server/email.d.ts.map +1 -0
  202. package/dist/server/{email.mjs → email.js} +2 -3
  203. package/dist/server/email.js.map +1 -0
  204. package/dist/server/linter.d.ts +20 -0
  205. package/dist/server/linter.d.ts.map +1 -0
  206. package/dist/server/linter.js +345 -0
  207. package/dist/server/linter.js.map +1 -0
  208. package/dist/server/sfc-utils.d.ts +21 -0
  209. package/dist/server/sfc-utils.d.ts.map +1 -0
  210. package/dist/server/sfc-utils.js +198 -0
  211. package/dist/server/sfc-utils.js.map +1 -0
  212. package/dist/server/ui/.vite/deps/@lucide_vue.js +44967 -0
  213. package/dist/server/ui/.vite/deps/@lucide_vue.js.map +1 -0
  214. package/dist/server/ui/.vite/deps/@vueuse_core.js +8155 -0
  215. package/dist/server/ui/.vite/deps/@vueuse_core.js.map +1 -0
  216. package/dist/server/ui/.vite/deps/@vueuse_shared.js +1859 -0
  217. package/dist/server/ui/.vite/deps/@vueuse_shared.js.map +1 -0
  218. package/dist/server/ui/.vite/deps/_metadata.json +78 -0
  219. package/dist/server/ui/.vite/deps/chunk-EAsCxrDo.js +14 -0
  220. package/dist/server/ui/.vite/deps/class-variance-authority.js +57 -0
  221. package/dist/server/ui/.vite/deps/class-variance-authority.js.map +1 -0
  222. package/dist/server/ui/.vite/deps/clsx.js +18 -0
  223. package/dist/server/ui/.vite/deps/clsx.js.map +1 -0
  224. package/dist/server/ui/.vite/deps/culori.js +4312 -0
  225. package/dist/server/ui/.vite/deps/culori.js.map +1 -0
  226. package/dist/server/ui/.vite/deps/package.json +3 -0
  227. package/dist/server/ui/.vite/deps/reka-ui.js +44464 -0
  228. package/dist/server/ui/.vite/deps/reka-ui.js.map +1 -0
  229. package/dist/server/ui/.vite/deps/tailwind-merge.js +3458 -0
  230. package/dist/server/ui/.vite/deps/tailwind-merge.js.map +1 -0
  231. package/dist/server/ui/.vite/deps/vue-router.js +6383 -0
  232. package/dist/server/ui/.vite/deps/vue-router.js.map +1 -0
  233. package/dist/server/ui/.vite/deps/vue.js +2 -0
  234. package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-DaqjATE_.js +8785 -0
  235. package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-DaqjATE_.js.map +1 -0
  236. package/dist/server/ui/App.vue +106 -66
  237. package/dist/server/ui/components/SidebarClose.vue +12 -0
  238. package/dist/server/ui/components/ui/checkbox/Checkbox.vue +1 -1
  239. package/dist/server/ui/components/ui/command/Command.vue +5 -1
  240. package/dist/server/ui/components/ui/command/CommandInput.vue +2 -2
  241. package/dist/server/ui/components/ui/dialog/DialogContent.vue +1 -1
  242. package/dist/server/ui/components/ui/dialog/DialogScrollContent.vue +1 -1
  243. package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +1 -1
  244. package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +1 -1
  245. package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +1 -1
  246. package/dist/server/ui/components/ui/input/Input.vue +1 -1
  247. package/dist/server/ui/components/ui/sheet/SheetContent.vue +1 -1
  248. package/dist/server/ui/components/ui/sidebar/SidebarTrigger.vue +2 -2
  249. package/dist/server/ui/components/ui/tags-input/TagsInputInput.vue +1 -1
  250. package/dist/server/ui/components/ui/tags-input/TagsInputItemDelete.vue +1 -1
  251. package/dist/server/ui/lib/emulated-dark-mode.ts +146 -0
  252. package/dist/server/ui/main.css +25 -0
  253. package/dist/server/ui/pages/Home.vue +1 -1
  254. package/dist/server/ui/pages/Preview.vue +377 -186
  255. package/dist/server/ui/vite-env.d.ts +1 -0
  256. package/dist/tests/render/_helpers.d.ts +6 -0
  257. package/dist/tests/render/_helpers.d.ts.map +1 -0
  258. package/dist/tests/render/_helpers.js +16 -0
  259. package/dist/tests/render/_helpers.js.map +1 -0
  260. package/dist/transformers/addAttributes.d.ts +42 -0
  261. package/dist/transformers/addAttributes.d.ts.map +1 -0
  262. package/dist/transformers/{addAttributes.mjs → addAttributes.js} +40 -24
  263. package/dist/transformers/addAttributes.js.map +1 -0
  264. package/dist/transformers/attributeToStyle.d.ts +38 -0
  265. package/dist/transformers/attributeToStyle.d.ts.map +1 -0
  266. package/dist/transformers/attributeToStyle.js +94 -0
  267. package/dist/transformers/attributeToStyle.js.map +1 -0
  268. package/dist/transformers/base.d.ts +71 -0
  269. package/dist/transformers/base.d.ts.map +1 -0
  270. package/dist/transformers/{base.mjs → base.js} +65 -40
  271. package/dist/transformers/base.js.map +1 -0
  272. package/dist/transformers/columnWidth.d.ts +31 -0
  273. package/dist/transformers/columnWidth.d.ts.map +1 -0
  274. package/dist/transformers/columnWidth.js +527 -0
  275. package/dist/transformers/columnWidth.js.map +1 -0
  276. package/dist/transformers/entities.d.ts +37 -0
  277. package/dist/transformers/entities.d.ts.map +1 -0
  278. package/dist/transformers/entities.js +74 -0
  279. package/dist/transformers/entities.js.map +1 -0
  280. package/dist/transformers/filters/{defaults.d.mts → defaults.d.ts} +1 -1
  281. package/dist/transformers/filters/defaults.d.ts.map +1 -0
  282. package/dist/transformers/filters/{defaults.mjs → defaults.js} +2 -2
  283. package/dist/transformers/filters/defaults.js.map +1 -0
  284. package/dist/transformers/filters/index.d.ts +43 -0
  285. package/dist/transformers/filters/index.d.ts.map +1 -0
  286. package/dist/transformers/filters/index.js +89 -0
  287. package/dist/transformers/filters/index.js.map +1 -0
  288. package/dist/transformers/format.d.ts +22 -0
  289. package/dist/transformers/format.d.ts.map +1 -0
  290. package/dist/transformers/format.js +30 -0
  291. package/dist/transformers/format.js.map +1 -0
  292. package/dist/transformers/imgWidth.d.ts +20 -0
  293. package/dist/transformers/imgWidth.d.ts.map +1 -0
  294. package/dist/transformers/imgWidth.js +76 -0
  295. package/dist/transformers/imgWidth.js.map +1 -0
  296. package/dist/transformers/{index.d.mts → index.d.ts} +4 -3
  297. package/dist/transformers/index.d.ts.map +1 -0
  298. package/dist/transformers/index.js +163 -0
  299. package/dist/transformers/index.js.map +1 -0
  300. package/dist/transformers/inlineCss.d.ts +85 -0
  301. package/dist/transformers/inlineCss.d.ts.map +1 -0
  302. package/dist/transformers/inlineCss.js +112 -0
  303. package/dist/transformers/inlineCss.js.map +1 -0
  304. package/dist/transformers/inlineLink.d.ts +35 -0
  305. package/dist/transformers/inlineLink.d.ts.map +1 -0
  306. package/dist/transformers/{inlineLink.mjs → inlineLink.js} +35 -11
  307. package/dist/transformers/inlineLink.js.map +1 -0
  308. package/dist/transformers/minify.d.ts +21 -0
  309. package/dist/transformers/minify.d.ts.map +1 -0
  310. package/dist/transformers/minify.js +25 -0
  311. package/dist/transformers/minify.js.map +1 -0
  312. package/dist/transformers/minifyCodeInline.d.ts +29 -0
  313. package/dist/transformers/minifyCodeInline.d.ts.map +1 -0
  314. package/dist/transformers/minifyCodeInline.js +36 -0
  315. package/dist/transformers/minifyCodeInline.js.map +1 -0
  316. package/dist/transformers/msoPlaceholders.d.ts +33 -0
  317. package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
  318. package/dist/transformers/msoPlaceholders.js +114 -0
  319. package/dist/transformers/msoPlaceholders.js.map +1 -0
  320. package/dist/transformers/purgeCss.d.ts +43 -0
  321. package/dist/transformers/purgeCss.d.ts.map +1 -0
  322. package/dist/transformers/purgeCss.js +207 -0
  323. package/dist/transformers/purgeCss.js.map +1 -0
  324. package/dist/transformers/removeAttributes.d.ts +54 -0
  325. package/dist/transformers/removeAttributes.d.ts.map +1 -0
  326. package/dist/transformers/removeAttributes.js +72 -0
  327. package/dist/transformers/removeAttributes.js.map +1 -0
  328. package/dist/transformers/{replaceStrings.d.mts → replaceStrings.d.ts} +2 -2
  329. package/dist/transformers/replaceStrings.d.ts.map +1 -0
  330. package/dist/transformers/{replaceStrings.mjs → replaceStrings.js} +2 -2
  331. package/dist/transformers/replaceStrings.js.map +1 -0
  332. package/dist/transformers/safeSelectors.d.ts +37 -0
  333. package/dist/transformers/safeSelectors.d.ts.map +1 -0
  334. package/dist/transformers/{safeClassNames.mjs → safeSelectors.js} +40 -10
  335. package/dist/transformers/safeSelectors.js.map +1 -0
  336. package/dist/transformers/shorthandCss.d.ts +47 -0
  337. package/dist/transformers/shorthandCss.d.ts.map +1 -0
  338. package/dist/transformers/shorthandCss.js +92 -0
  339. package/dist/transformers/shorthandCss.js.map +1 -0
  340. package/dist/transformers/sixHex.d.ts +25 -0
  341. package/dist/transformers/sixHex.d.ts.map +1 -0
  342. package/dist/transformers/sixHex.js +42 -0
  343. package/dist/transformers/sixHex.js.map +1 -0
  344. package/dist/transformers/tailwindComponent.d.ts +16 -0
  345. package/dist/transformers/tailwindComponent.d.ts.map +1 -0
  346. package/dist/transformers/tailwindComponent.js +101 -0
  347. package/dist/transformers/tailwindComponent.js.map +1 -0
  348. package/dist/transformers/{tailwindcss.d.mts → tailwindcss.d.ts} +2 -2
  349. package/dist/transformers/tailwindcss.d.ts.map +1 -0
  350. package/dist/transformers/{tailwindcss.mjs → tailwindcss.js} +33 -74
  351. package/dist/transformers/tailwindcss.js.map +1 -0
  352. package/dist/transformers/urlQuery.d.ts +36 -0
  353. package/dist/transformers/urlQuery.d.ts.map +1 -0
  354. package/dist/transformers/urlQuery.js +77 -0
  355. package/dist/transformers/urlQuery.js.map +1 -0
  356. package/dist/types/{config.d.mts → config.d.ts} +231 -46
  357. package/dist/types/config.d.ts.map +1 -0
  358. package/dist/types/config.js +1 -0
  359. package/dist/types/index.d.ts +2 -0
  360. package/dist/types/index.js +1 -0
  361. package/dist/utils/ast/index.d.ts +4 -0
  362. package/dist/utils/ast/index.js +4 -0
  363. package/dist/utils/ast/{parser.d.mts → parser.d.ts} +1 -1
  364. package/dist/utils/ast/parser.d.ts.map +1 -0
  365. package/dist/utils/ast/{parser.mjs → parser.js} +2 -3
  366. package/dist/utils/ast/parser.js.map +1 -0
  367. package/dist/utils/ast/{serializer.d.mts → serializer.d.ts} +1 -1
  368. package/dist/utils/ast/serializer.d.ts.map +1 -0
  369. package/dist/utils/ast/serializer.js +46 -0
  370. package/dist/utils/ast/serializer.js.map +1 -0
  371. package/dist/utils/ast/{walker.d.mts → walker.d.ts} +1 -1
  372. package/dist/utils/ast/walker.d.ts.map +1 -0
  373. package/dist/utils/ast/{walker.mjs → walker.js} +2 -2
  374. package/dist/utils/ast/walker.js.map +1 -0
  375. package/dist/utils/cloneConfig.d.ts +13 -0
  376. package/dist/utils/cloneConfig.d.ts.map +1 -0
  377. package/dist/utils/cloneConfig.js +21 -0
  378. package/dist/utils/cloneConfig.js.map +1 -0
  379. package/dist/utils/compileTailwindCss.d.ts +16 -0
  380. package/dist/utils/compileTailwindCss.d.ts.map +1 -0
  381. package/dist/utils/compileTailwindCss.js +55 -0
  382. package/dist/utils/compileTailwindCss.js.map +1 -0
  383. package/dist/utils/componentSources.d.ts +50 -0
  384. package/dist/utils/componentSources.d.ts.map +1 -0
  385. package/dist/utils/componentSources.js +50 -0
  386. package/dist/utils/componentSources.js.map +1 -0
  387. package/dist/utils/cssBox.d.ts +42 -0
  388. package/dist/utils/cssBox.d.ts.map +1 -0
  389. package/dist/utils/cssBox.js +151 -0
  390. package/dist/utils/cssBox.js.map +1 -0
  391. package/dist/utils/decodeStyleEntities.d.ts +15 -0
  392. package/dist/utils/decodeStyleEntities.d.ts.map +1 -0
  393. package/dist/utils/decodeStyleEntities.js +18 -0
  394. package/dist/utils/decodeStyleEntities.js.map +1 -0
  395. package/dist/utils/{detect.d.mts → detect.d.ts} +1 -1
  396. package/dist/utils/detect.d.ts.map +1 -0
  397. package/dist/utils/{detect.mjs → detect.js} +2 -3
  398. package/dist/utils/detect.js.map +1 -0
  399. package/dist/utils/output-markers.d.ts +29 -0
  400. package/dist/utils/output-markers.d.ts.map +1 -0
  401. package/dist/utils/output-markers.js +68 -0
  402. package/dist/utils/output-markers.js.map +1 -0
  403. package/dist/utils/{url.d.mts → url.d.ts} +1 -1
  404. package/dist/utils/url.d.ts.map +1 -0
  405. package/dist/utils/{url.mjs → url.js} +2 -3
  406. package/dist/utils/url.js.map +1 -0
  407. package/dist/utils/watchPaths.d.ts +11 -0
  408. package/dist/utils/watchPaths.d.ts.map +1 -0
  409. package/dist/utils/watchPaths.js +19 -0
  410. package/dist/utils/watchPaths.js.map +1 -0
  411. package/node_modules/@clack/core/CHANGELOG.md +44 -0
  412. package/node_modules/@clack/core/dist/index.d.mts +125 -5
  413. package/node_modules/@clack/core/dist/index.mjs +972 -11
  414. package/node_modules/@clack/core/package.json +6 -2
  415. package/node_modules/@clack/prompts/CHANGELOG.md +70 -0
  416. package/node_modules/@clack/prompts/README.md +129 -3
  417. package/node_modules/@clack/prompts/dist/index.d.mts +567 -33
  418. package/node_modules/@clack/prompts/dist/index.mjs +1378 -133
  419. package/node_modules/@clack/prompts/package.json +7 -4
  420. package/node_modules/fast-string-truncated-width/dist/index.js +36 -96
  421. package/node_modules/fast-string-truncated-width/dist/types.d.ts +0 -3
  422. package/node_modules/fast-string-truncated-width/dist/utils.d.ts +3 -3
  423. package/node_modules/fast-string-truncated-width/dist/utils.js +14 -9
  424. package/node_modules/fast-string-truncated-width/package.json +1 -1
  425. package/node_modules/fast-string-truncated-width/readme.md +2 -3
  426. package/node_modules/fast-string-width/package.json +2 -2
  427. package/node_modules/fast-string-width/readme.md +0 -3
  428. package/node_modules/fast-wrap-ansi/lib/main.js +4 -2
  429. package/node_modules/fast-wrap-ansi/package.json +11 -11
  430. package/node_modules/maizzle/README.md +24 -0
  431. package/node_modules/maizzle/dist/commands/make/component.mjs +1 -1
  432. package/node_modules/maizzle/dist/commands/make/config.mjs +8 -7
  433. package/node_modules/maizzle/dist/commands/make/layout.mjs +3 -3
  434. package/node_modules/maizzle/dist/commands/make/scaffold.mjs +1 -1
  435. package/node_modules/maizzle/dist/commands/make/stubs/Layout.vue +146 -0
  436. package/node_modules/maizzle/dist/commands/make/stubs/component.vue +2 -4
  437. package/node_modules/maizzle/dist/commands/make/stubs/config.ts +1 -5
  438. package/node_modules/maizzle/dist/commands/make/template.mjs +1 -1
  439. package/node_modules/maizzle/dist/commands/new.mjs +46 -135
  440. package/node_modules/maizzle/dist/index.d.mts +1 -0
  441. package/node_modules/maizzle/dist/index.mjs +30 -7
  442. package/node_modules/maizzle/package.json +5 -4
  443. package/node_modules/nypm/dist/cli.mjs +28 -5
  444. package/node_modules/nypm/dist/index.d.mts +0 -8
  445. package/node_modules/nypm/dist/index.mjs +27 -4
  446. package/node_modules/nypm/package.json +12 -12
  447. package/node_modules/tinyexec/README.md +9 -1
  448. package/node_modules/tinyexec/dist/main.d.mts +22 -7
  449. package/node_modules/tinyexec/dist/main.mjs +189 -491
  450. package/node_modules/tinyexec/package.json +14 -16
  451. package/package.json +37 -30
  452. package/dist/_virtual/_rolldown/runtime.mjs +0 -32
  453. package/dist/build.d.mts +0 -19
  454. package/dist/build.d.mts.map +0 -1
  455. package/dist/build.mjs +0 -141
  456. package/dist/build.mjs.map +0 -1
  457. package/dist/components/Divider.vue +0 -133
  458. package/dist/components/Image.vue +0 -70
  459. package/dist/components/Overlap.vue +0 -80
  460. package/dist/components/utils.d.mts +0 -5
  461. package/dist/components/utils.d.mts.map +0 -1
  462. package/dist/components/utils.mjs +0 -9
  463. package/dist/components/utils.mjs.map +0 -1
  464. package/dist/composables/defineConfig.d.mts +0 -14
  465. package/dist/composables/defineConfig.d.mts.map +0 -1
  466. package/dist/composables/defineConfig.mjs.map +0 -1
  467. package/dist/composables/renderContext.d.mts +0 -24
  468. package/dist/composables/renderContext.d.mts.map +0 -1
  469. package/dist/composables/renderContext.mjs +0 -6
  470. package/dist/composables/renderContext.mjs.map +0 -1
  471. package/dist/composables/useConfig.d.mts +0 -9
  472. package/dist/composables/useConfig.d.mts.map +0 -1
  473. package/dist/composables/useConfig.mjs +0 -13
  474. package/dist/composables/useConfig.mjs.map +0 -1
  475. package/dist/composables/useDoctype.d.mts.map +0 -1
  476. package/dist/composables/useDoctype.mjs.map +0 -1
  477. package/dist/composables/useEvent.d.mts.map +0 -1
  478. package/dist/composables/useEvent.mjs.map +0 -1
  479. package/dist/composables/usePlaintext.d.mts.map +0 -1
  480. package/dist/composables/usePlaintext.mjs.map +0 -1
  481. package/dist/composables/usePreviewText.d.mts +0 -24
  482. package/dist/composables/usePreviewText.d.mts.map +0 -1
  483. package/dist/composables/usePreviewText.mjs +0 -29
  484. package/dist/composables/usePreviewText.mjs.map +0 -1
  485. package/dist/config/defaults.d.mts.map +0 -1
  486. package/dist/config/defaults.mjs.map +0 -1
  487. package/dist/config/index.d.mts +0 -15
  488. package/dist/config/index.d.mts.map +0 -1
  489. package/dist/config/index.mjs.map +0 -1
  490. package/dist/events/index.d.mts.map +0 -1
  491. package/dist/events/index.mjs.map +0 -1
  492. package/dist/index.d.mts +0 -31
  493. package/dist/index.mjs +0 -31
  494. package/dist/node_modules/picomatch/index.mjs +0 -13
  495. package/dist/node_modules/picomatch/index.mjs.map +0 -1
  496. package/dist/node_modules/picomatch/lib/constants.mjs +0 -174
  497. package/dist/node_modules/picomatch/lib/constants.mjs.map +0 -1
  498. package/dist/node_modules/picomatch/lib/parse.mjs +0 -1067
  499. package/dist/node_modules/picomatch/lib/parse.mjs.map +0 -1
  500. package/dist/node_modules/picomatch/lib/picomatch.mjs +0 -304
  501. package/dist/node_modules/picomatch/lib/picomatch.mjs.map +0 -1
  502. package/dist/node_modules/picomatch/lib/scan.mjs +0 -296
  503. package/dist/node_modules/picomatch/lib/scan.mjs.map +0 -1
  504. package/dist/node_modules/picomatch/lib/utils.mjs +0 -53
  505. package/dist/node_modules/picomatch/lib/utils.mjs.map +0 -1
  506. package/dist/plaintext.d.mts.map +0 -1
  507. package/dist/plaintext.mjs.map +0 -1
  508. package/dist/plugin.d.mts.map +0 -1
  509. package/dist/plugin.mjs.map +0 -1
  510. package/dist/plugins/postcss/mergeMediaQueries.d.mts.map +0 -1
  511. package/dist/plugins/postcss/mergeMediaQueries.mjs.map +0 -1
  512. package/dist/plugins/postcss/pruneVars.d.mts.map +0 -1
  513. package/dist/plugins/postcss/pruneVars.mjs.map +0 -1
  514. package/dist/plugins/postcss/removeDeclarations.d.mts.map +0 -1
  515. package/dist/plugins/postcss/removeDeclarations.mjs.map +0 -1
  516. package/dist/plugins/postcss/tailwindCleanup.d.mts.map +0 -1
  517. package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
  518. package/dist/render/createRenderer.d.mts.map +0 -1
  519. package/dist/render/createRenderer.mjs +0 -286
  520. package/dist/render/createRenderer.mjs.map +0 -1
  521. package/dist/render/index.d.mts +0 -26
  522. package/dist/render/index.d.mts.map +0 -1
  523. package/dist/render/index.mjs +0 -46
  524. package/dist/render/index.mjs.map +0 -1
  525. package/dist/serve.d.mts.map +0 -1
  526. package/dist/serve.mjs.map +0 -1
  527. package/dist/server/compatibility.d.mts +0 -5
  528. package/dist/server/compatibility.d.mts.map +0 -1
  529. package/dist/server/compatibility.mjs +0 -97
  530. package/dist/server/compatibility.mjs.map +0 -1
  531. package/dist/server/email.d.mts.map +0 -1
  532. package/dist/server/email.mjs.map +0 -1
  533. package/dist/server/linter.d.mts +0 -5
  534. package/dist/server/linter.d.mts.map +0 -1
  535. package/dist/server/linter.mjs +0 -189
  536. package/dist/server/linter.mjs.map +0 -1
  537. package/dist/transformers/addAttributes.d.mts +0 -32
  538. package/dist/transformers/addAttributes.d.mts.map +0 -1
  539. package/dist/transformers/addAttributes.mjs.map +0 -1
  540. package/dist/transformers/attributeToStyle.d.mts +0 -25
  541. package/dist/transformers/attributeToStyle.d.mts.map +0 -1
  542. package/dist/transformers/attributeToStyle.mjs +0 -80
  543. package/dist/transformers/attributeToStyle.mjs.map +0 -1
  544. package/dist/transformers/base.d.mts +0 -8
  545. package/dist/transformers/base.d.mts.map +0 -1
  546. package/dist/transformers/base.mjs.map +0 -1
  547. package/dist/transformers/entities.d.mts +0 -8
  548. package/dist/transformers/entities.d.mts.map +0 -1
  549. package/dist/transformers/entities.mjs +0 -41
  550. package/dist/transformers/entities.mjs.map +0 -1
  551. package/dist/transformers/filters/defaults.d.mts.map +0 -1
  552. package/dist/transformers/filters/defaults.mjs.map +0 -1
  553. package/dist/transformers/filters/index.d.mts +0 -22
  554. package/dist/transformers/filters/index.d.mts.map +0 -1
  555. package/dist/transformers/filters/index.mjs +0 -67
  556. package/dist/transformers/filters/index.mjs.map +0 -1
  557. package/dist/transformers/format.d.mts +0 -15
  558. package/dist/transformers/format.d.mts.map +0 -1
  559. package/dist/transformers/format.mjs +0 -26
  560. package/dist/transformers/format.mjs.map +0 -1
  561. package/dist/transformers/index.d.mts.map +0 -1
  562. package/dist/transformers/index.mjs +0 -81
  563. package/dist/transformers/index.mjs.map +0 -1
  564. package/dist/transformers/inlineCSS.d.mts +0 -17
  565. package/dist/transformers/inlineCSS.d.mts.map +0 -1
  566. package/dist/transformers/inlineCSS.mjs +0 -70
  567. package/dist/transformers/inlineCSS.mjs.map +0 -1
  568. package/dist/transformers/inlineLink.d.mts +0 -14
  569. package/dist/transformers/inlineLink.d.mts.map +0 -1
  570. package/dist/transformers/inlineLink.mjs.map +0 -1
  571. package/dist/transformers/minify.d.mts +0 -17
  572. package/dist/transformers/minify.d.mts.map +0 -1
  573. package/dist/transformers/minify.mjs +0 -24
  574. package/dist/transformers/minify.mjs.map +0 -1
  575. package/dist/transformers/purgeCSS.d.mts +0 -23
  576. package/dist/transformers/purgeCSS.d.mts.map +0 -1
  577. package/dist/transformers/purgeCSS.mjs +0 -132
  578. package/dist/transformers/purgeCSS.mjs.map +0 -1
  579. package/dist/transformers/removeAttributes.d.mts +0 -31
  580. package/dist/transformers/removeAttributes.d.mts.map +0 -1
  581. package/dist/transformers/removeAttributes.mjs +0 -63
  582. package/dist/transformers/removeAttributes.mjs.map +0 -1
  583. package/dist/transformers/replaceStrings.d.mts.map +0 -1
  584. package/dist/transformers/replaceStrings.mjs.map +0 -1
  585. package/dist/transformers/safeClassNames.d.mts +0 -22
  586. package/dist/transformers/safeClassNames.d.mts.map +0 -1
  587. package/dist/transformers/safeClassNames.mjs.map +0 -1
  588. package/dist/transformers/shorthandCSS.d.mts +0 -24
  589. package/dist/transformers/shorthandCSS.d.mts.map +0 -1
  590. package/dist/transformers/shorthandCSS.mjs +0 -48
  591. package/dist/transformers/shorthandCSS.mjs.map +0 -1
  592. package/dist/transformers/sixHex.d.mts +0 -16
  593. package/dist/transformers/sixHex.d.mts.map +0 -1
  594. package/dist/transformers/sixHex.mjs +0 -30
  595. package/dist/transformers/sixHex.mjs.map +0 -1
  596. package/dist/transformers/tailwindcss.d.mts.map +0 -1
  597. package/dist/transformers/tailwindcss.mjs.map +0 -1
  598. package/dist/transformers/urlQuery.d.mts +0 -24
  599. package/dist/transformers/urlQuery.d.mts.map +0 -1
  600. package/dist/transformers/urlQuery.mjs +0 -65
  601. package/dist/transformers/urlQuery.mjs.map +0 -1
  602. package/dist/types/config.d.mts.map +0 -1
  603. package/dist/types/config.mjs +0 -1
  604. package/dist/types/index.d.mts +0 -2
  605. package/dist/types/index.mjs +0 -1
  606. package/dist/utils/ast/index.d.mts +0 -4
  607. package/dist/utils/ast/index.mjs +0 -5
  608. package/dist/utils/ast/parser.d.mts.map +0 -1
  609. package/dist/utils/ast/parser.mjs.map +0 -1
  610. package/dist/utils/ast/serializer.d.mts.map +0 -1
  611. package/dist/utils/ast/serializer.mjs +0 -37
  612. package/dist/utils/ast/serializer.mjs.map +0 -1
  613. package/dist/utils/ast/walker.d.mts.map +0 -1
  614. package/dist/utils/ast/walker.mjs.map +0 -1
  615. package/dist/utils/detect.d.mts.map +0 -1
  616. package/dist/utils/detect.mjs.map +0 -1
  617. package/dist/utils/url.d.mts.map +0 -1
  618. package/dist/utils/url.mjs.map +0 -1
  619. package/node_modules/@clack/core/dist/index.mjs.map +0 -1
  620. package/node_modules/@clack/prompts/dist/index.mjs.map +0 -1
  621. package/node_modules/fast-wrap-ansi/lib/main.js.map +0 -1
  622. package/node_modules/maizzle/dist/commands/make/stubs/layout.vue +0 -39
  623. package/node_modules/tinyexec/dist/LICENSES.txt +0 -83
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entities.d.ts","names":[],"sources":["../../src/transformers/entities.ts"],"mappings":";;;;;;;AAsDA;;;;;;;;AAAoE;AASpE;;;;;;;;;;;iBATgB,QAAA,CAAS,IAAA,UAAc,MAAA,GAAQ,cAAqB;;;AASmB;;;iBAAvE,WAAA,CAAY,GAAA,EAAK,SAAA,IAAa,MAAA,GAAQ,cAAA,GAAwB,SAAA"}
@@ -0,0 +1,74 @@
1
+ import { parse } from "../utils/ast/parser.js";
2
+ import { walk } from "../utils/ast/walker.js";
3
+ import { serialize } from "../utils/ast/serializer.js";
4
+ import "../utils/ast/index.js";
5
+ import { defu as defu$1 } from "defu";
6
+ //#region src/transformers/entities.ts
7
+ const DEFAULT_ENTITIES = {
8
+ "‍": "‍",
9
+ "‌": "‌",
10
+ "\xA0": " ",
11
+ "­": "­",
12
+ "​": "​",
13
+ " ": " ",
14
+ "": "",
15
+ "͏": "͏",
16
+ " ": " ",
17
+ "\u2028": "&LineSeparator;",
18
+ "\u2029": "&ParagraphSeparator;",
19
+ "·": "·",
20
+ "–": "–",
21
+ "—": "—",
22
+ "‘": "‘",
23
+ "’": "’",
24
+ "“": "“",
25
+ "”": "”",
26
+ "«": "«",
27
+ "»": "»",
28
+ "•": "•",
29
+ "‹": "‹",
30
+ "›": "›"
31
+ };
32
+ /**
33
+ * Replace literal Unicode characters in text nodes with their HTML entity
34
+ * equivalents (zero-width joiners, non-breaking spaces, smart quotes,
35
+ * dashes, etc.) for better email-client rendering.
36
+ *
37
+ * @param html HTML string to transform.
38
+ * @param custom Extra entries merged on top of the built-in entity map, or
39
+ * `false` to disable the transform. Defaults to `true`
40
+ * (built-ins only).
41
+ * @returns The transformed HTML string.
42
+ *
43
+ * @example
44
+ * import { entities } from '@maizzle/framework'
45
+ *
46
+ * // Defaults only
47
+ * entities('hello world') // → 'hello world'
48
+ *
49
+ * // Add a custom mapping
50
+ * entities('© Maizzle', { '©': '©' })
51
+ *
52
+ * // Disable the transform
53
+ * entities('hello world', false)
54
+ */
55
+ function entities(html, custom = true) {
56
+ return serialize(entitiesDom(parse(html), custom));
57
+ }
58
+ /**
59
+ * DOM-form of {@link entities} used by the internal transformer pipeline.
60
+ * Takes a parsed DOM, returns a parsed DOM — avoids redundant
61
+ * serialize/parse round-trips when chained with other transformers.
62
+ */
63
+ function entitiesDom(dom, custom = true) {
64
+ if (!custom) return dom;
65
+ const map = typeof custom === "object" ? defu$1(custom, DEFAULT_ENTITIES) : DEFAULT_ENTITIES;
66
+ walk(dom, (node) => {
67
+ if (node.type === "text") for (const [char, entity] of Object.entries(map)) node.data = node.data.split(char).join(entity);
68
+ });
69
+ return dom;
70
+ }
71
+ //#endregion
72
+ export { entities, entitiesDom };
73
+
74
+ //# sourceMappingURL=entities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entities.js","names":["merge"],"sources":["../../src/transformers/entities.ts"],"sourcesContent":["import { defu as merge } from 'defu'\nimport type { ChildNode } from 'domhandler'\nimport { parse, serialize, walk } from '../utils/ast/index.ts'\nimport type { EntitiesConfig } from '../types/index.ts'\n\nconst DEFAULT_ENTITIES: Record<string, string> = {\n '\\u200D': '&zwj;',\n '\\u200C': '&zwnj;',\n '\\u00A0': '&nbsp;',\n '\\u00AD': '&shy;',\n '\\u200B': '&#8203;',\n '\\u2007': '&#8199;',\n '\\uFEFF': '&#65279;',\n '\\u034F': '&#847;',\n '\\u2003': '&emsp;',\n '\\u2028': '&LineSeparator;',\n '\\u2029': '&ParagraphSeparator;',\n '\\u00B7': '&middot;',\n '\\u2013': '&ndash;',\n '\\u2014': '&mdash;',\n '\\u2018': '&lsquo;',\n '\\u2019': '&rsquo;',\n '\\u201C': '&ldquo;',\n '\\u201D': '&rdquo;',\n '\\u00AB': '&laquo;',\n '\\u00BB': '&raquo;',\n '\\u2022': '&bull;',\n '\\u2039': '&lsaquo;',\n '\\u203A': '&rsaquo;'\n}\n\n/**\n * Replace literal Unicode characters in text nodes with their HTML entity\n * equivalents (zero-width joiners, non-breaking spaces, smart quotes,\n * dashes, etc.) for better email-client rendering.\n *\n * @param html HTML string to transform.\n * @param custom Extra entries merged on top of the built-in entity map, or\n * `false` to disable the transform. Defaults to `true`\n * (built-ins only).\n * @returns The transformed HTML string.\n *\n * @example\n * import { entities } from '@maizzle/framework'\n *\n * // Defaults only\n * entities('hello world') // → 'hello&nbsp;world'\n *\n * // Add a custom mapping\n * entities('© Maizzle', { '©': '&copy;' })\n *\n * // Disable the transform\n * entities('hello world', false)\n */\nexport function entities(html: string, custom: EntitiesConfig = true): string {\n return serialize(entitiesDom(parse(html), custom))\n}\n\n/**\n * DOM-form of {@link entities} used by the internal transformer pipeline.\n * Takes a parsed DOM, returns a parsed DOM — avoids redundant\n * serialize/parse round-trips when chained with other transformers.\n */\nexport function entitiesDom(dom: ChildNode[], custom: EntitiesConfig = true): ChildNode[] {\n if (!custom) return dom\n\n const map = typeof custom === 'object'\n ? merge(custom as Record<string, string>, DEFAULT_ENTITIES)\n : DEFAULT_ENTITIES\n\n walk(dom, (node) => {\n if (node.type === 'text') {\n for (const [char, entity] of Object.entries(map)) {\n node.data = node.data.split(char).join(entity)\n }\n }\n })\n\n return dom\n}\n"],"mappings":";;;;;;AAKA,MAAM,mBAA2C;CAC/C,KAAU;CACV,KAAU;CACV,QAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,UAAU;CACV,UAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;CACV,KAAU;AACZ;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,SAAS,MAAc,SAAyB,MAAc;CAC5E,OAAO,UAAU,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC;AACnD;;;;;;AAOA,SAAgB,YAAY,KAAkB,SAAyB,MAAmB;CACxF,IAAI,CAAC,QAAQ,OAAO;CAEpB,MAAM,MAAM,OAAO,WAAW,WAC1BA,OAAM,QAAkC,gBAAgB,IACxD;CAEJ,KAAK,MAAM,SAAS;EAClB,IAAI,KAAK,SAAS,QAChB,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,GAAG,GAC7C,KAAK,OAAO,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,MAAM;CAGnD,CAAC;CAED,OAAO;AACT"}
@@ -3,4 +3,4 @@ type FilterFunction = (str: string, value: string) => string;
3
3
  declare const defaults: Record<string, FilterFunction>;
4
4
  //#endregion
5
5
  export { FilterFunction, defaults };
6
- //# sourceMappingURL=defaults.d.mts.map
6
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","names":[],"sources":["../../../src/transformers/filters/defaults.ts"],"mappings":";KAAY,cAAA,IAAkB,GAAA,UAAa,KAAa;AAAA,cAgB3C,QAAA,EAAU,MAAM,SAAS,cAAA"}
@@ -72,7 +72,7 @@ const defaults = {
72
72
  "url-decode": (str) => decodeURIComponent(str.replace(/\+/g, " ")),
73
73
  "url-encode": (str) => encodeURIComponent(str)
74
74
  };
75
-
76
75
  //#endregion
77
76
  export { defaults };
78
- //# sourceMappingURL=defaults.mjs.map
77
+
78
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","names":[],"sources":["../../../src/transformers/filters/defaults.ts"],"sourcesContent":["export type FilterFunction = (str: string, value: string) => string\n\nconst escapeMap: Record<string, string> = {\n '\"': '&#34;',\n '&': '&amp;',\n \"'\": '&#39;',\n '<': '&lt;',\n '>': '&gt;',\n}\n\nconst escapeRegex = /[\"&'<>]/g\n\nfunction escapeHtml(str: string): string {\n return str.replace(escapeRegex, ch => escapeMap[ch])\n}\n\nexport const defaults: Record<string, FilterFunction> = {\n append: (str, value) => str + value,\n prepend: (str, value) => value + str,\n uppercase: str => str.toUpperCase(),\n lowercase: str => str.toLowerCase(),\n capitalize: str => str.charAt(0).toUpperCase() + str.slice(1),\n ceil: str => String(Math.ceil(Number.parseFloat(str))),\n floor: str => String(Math.floor(Number.parseFloat(str))),\n round: str => String(Math.round(Number.parseFloat(str))),\n escape: str => escapeHtml(str),\n 'escape-once': str => {\n const decoded = str\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&#34;/g, '\"')\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&apos;/g, \"'\")\n\n return escapeHtml(decoded)\n },\n lstrip: str => str.trimStart(),\n rstrip: str => str.trimEnd(),\n trim: str => str.trim(),\n minus: (str, value) => String(Number.parseFloat(str) - Number.parseFloat(value)),\n plus: (str, value) => String(Number.parseFloat(str) + Number.parseFloat(value)),\n multiply: (str, value) => String(Number.parseFloat(str) * Number.parseFloat(value)),\n times: (str, value) => String(Number.parseFloat(str) * Number.parseFloat(value)),\n 'divide-by': (str, value) => String(Number.parseFloat(str) / Number.parseFloat(value)),\n divide: (str, value) => String(Number.parseFloat(str) / Number.parseFloat(value)),\n modulo: (str, value) => String(Number.parseFloat(str) % Number.parseFloat(value)),\n 'newline-to-br': str => str.replace(/\\n/g, '<br>'),\n 'strip-newlines': str => str.replace(/\\n/g, ''),\n remove: (str, value) => str.split(value).join(''),\n 'remove-first': (str, value) => {\n const i = str.indexOf(value)\n return i === -1 ? str : str.slice(0, i) + str.slice(i + value.length)\n },\n replace: (str, value) => {\n const [search = '', replacement = ''] = value.split('|')\n return str.split(search).join(replacement)\n },\n 'replace-first': (str, value) => {\n const [search = '', replacement = ''] = value.split('|')\n const i = str.indexOf(search)\n return i === -1 ? str : str.slice(0, i) + replacement + str.slice(i + search.length)\n },\n size: str => String(str.length),\n slice: (str, value) => {\n const args = value.split(',').map(s => Number.parseInt(s.trim(), 10))\n return str.slice(args[0], args[1])\n },\n truncate: (str, value) => {\n const commaIndex = value.indexOf(',')\n const length = Number.parseInt(commaIndex === -1 ? value : value.slice(0, commaIndex), 10)\n const ellipsis = commaIndex === -1 ? '...' : value.slice(commaIndex + 1)\n\n if (str.length <= length) return str\n\n return str.slice(0, length) + ellipsis\n },\n 'truncate-words': (str, value) => {\n const commaIndex = value.indexOf(',')\n const count = Number.parseInt(commaIndex === -1 ? value : value.slice(0, commaIndex), 10)\n const ellipsis = commaIndex === -1 ? '...' : value.slice(commaIndex + 1)\n const words = str.split(/\\s+/).filter(Boolean)\n\n if (words.length <= count) return str\n\n return words.slice(0, count).join(' ') + ellipsis\n },\n 'url-decode': str => decodeURIComponent(str.replace(/\\+/g, ' ')),\n 'url-encode': str => encodeURIComponent(str),\n}\n"],"mappings":";AAEA,MAAM,YAAoC;CACxC,MAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;AAEA,MAAM,cAAc;AAEpB,SAAS,WAAW,KAAqB;CACvC,OAAO,IAAI,QAAQ,cAAa,OAAM,UAAU,GAAG;AACrD;AAEA,MAAa,WAA2C;CACtD,SAAS,KAAK,UAAU,MAAM;CAC9B,UAAU,KAAK,UAAU,QAAQ;CACjC,YAAW,QAAO,IAAI,YAAY;CAClC,YAAW,QAAO,IAAI,YAAY;CAClC,aAAY,QAAO,IAAI,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,MAAM,CAAC;CAC5D,OAAM,QAAO,OAAO,KAAK,KAAK,OAAO,WAAW,GAAG,CAAC,CAAC;CACrD,QAAO,QAAO,OAAO,KAAK,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;CACvD,QAAO,QAAO,OAAO,KAAK,MAAM,OAAO,WAAW,GAAG,CAAC,CAAC;CACvD,SAAQ,QAAO,WAAW,GAAG;CAC7B,gBAAe,QAAO;EAUpB,OAAO,WATS,IACb,QAAQ,UAAU,GAAG,CAAC,CACtB,QAAQ,SAAS,GAAG,CAAC,CACrB,QAAQ,SAAS,GAAG,CAAC,CACrB,QAAQ,UAAU,IAAG,CAAC,CACtB,QAAQ,WAAW,IAAG,CAAC,CACvB,QAAQ,UAAU,GAAG,CAAC,CACtB,QAAQ,WAAW,GAEE,CAAC;CAC3B;CACA,SAAQ,QAAO,IAAI,UAAU;CAC7B,SAAQ,QAAO,IAAI,QAAQ;CAC3B,OAAM,QAAO,IAAI,KAAK;CACtB,QAAQ,KAAK,UAAU,OAAO,OAAO,WAAW,GAAG,IAAI,OAAO,WAAW,KAAK,CAAC;CAC/E,OAAO,KAAK,UAAU,OAAO,OAAO,WAAW,GAAG,IAAI,OAAO,WAAW,KAAK,CAAC;CAC9E,WAAW,KAAK,UAAU,OAAO,OAAO,WAAW,GAAG,IAAI,OAAO,WAAW,KAAK,CAAC;CAClF,QAAQ,KAAK,UAAU,OAAO,OAAO,WAAW,GAAG,IAAI,OAAO,WAAW,KAAK,CAAC;CAC/E,cAAc,KAAK,UAAU,OAAO,OAAO,WAAW,GAAG,IAAI,OAAO,WAAW,KAAK,CAAC;CACrF,SAAS,KAAK,UAAU,OAAO,OAAO,WAAW,GAAG,IAAI,OAAO,WAAW,KAAK,CAAC;CAChF,SAAS,KAAK,UAAU,OAAO,OAAO,WAAW,GAAG,IAAI,OAAO,WAAW,KAAK,CAAC;CAChF,kBAAiB,QAAO,IAAI,QAAQ,OAAO,MAAM;CACjD,mBAAkB,QAAO,IAAI,QAAQ,OAAO,EAAE;CAC9C,SAAS,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE;CAChD,iBAAiB,KAAK,UAAU;EAC9B,MAAM,IAAI,IAAI,QAAQ,KAAK;EAC3B,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,MAAM,IAAI,MAAM,MAAM;CACtE;CACA,UAAU,KAAK,UAAU;EACvB,MAAM,CAAC,SAAS,IAAI,cAAc,MAAM,MAAM,MAAM,GAAG;EACvD,OAAO,IAAI,MAAM,MAAM,CAAC,CAAC,KAAK,WAAW;CAC3C;CACA,kBAAkB,KAAK,UAAU;EAC/B,MAAM,CAAC,SAAS,IAAI,cAAc,MAAM,MAAM,MAAM,GAAG;EACvD,MAAM,IAAI,IAAI,QAAQ,MAAM;EAC5B,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,cAAc,IAAI,MAAM,IAAI,OAAO,MAAM;CACrF;CACA,OAAM,QAAO,OAAO,IAAI,MAAM;CAC9B,QAAQ,KAAK,UAAU;EACrB,MAAM,OAAO,MAAM,MAAM,GAAG,CAAC,CAAC,KAAI,MAAK,OAAO,SAAS,EAAE,KAAK,GAAG,EAAE,CAAC;EACpE,OAAO,IAAI,MAAM,KAAK,IAAI,KAAK,EAAE;CACnC;CACA,WAAW,KAAK,UAAU;EACxB,MAAM,aAAa,MAAM,QAAQ,GAAG;EACpC,MAAM,SAAS,OAAO,SAAS,eAAe,KAAK,QAAQ,MAAM,MAAM,GAAG,UAAU,GAAG,EAAE;EACzF,MAAM,WAAW,eAAe,KAAK,QAAQ,MAAM,MAAM,aAAa,CAAC;EAEvE,IAAI,IAAI,UAAU,QAAQ,OAAO;EAEjC,OAAO,IAAI,MAAM,GAAG,MAAM,IAAI;CAChC;CACA,mBAAmB,KAAK,UAAU;EAChC,MAAM,aAAa,MAAM,QAAQ,GAAG;EACpC,MAAM,QAAQ,OAAO,SAAS,eAAe,KAAK,QAAQ,MAAM,MAAM,GAAG,UAAU,GAAG,EAAE;EACxF,MAAM,WAAW,eAAe,KAAK,QAAQ,MAAM,MAAM,aAAa,CAAC;EACvE,MAAM,QAAQ,IAAI,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;EAE7C,IAAI,MAAM,UAAU,OAAO,OAAO;EAElC,OAAO,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI;CAC3C;CACA,eAAc,QAAO,mBAAmB,IAAI,QAAQ,OAAO,GAAG,CAAC;CAC/D,eAAc,QAAO,mBAAmB,GAAG;AAC7C"}
@@ -0,0 +1,43 @@
1
+ import { FilterFunction } from "./defaults.js";
2
+ import { ChildNode } from "domhandler";
3
+
4
+ //#region src/transformers/filters/index.d.ts
5
+ type FiltersConfig = false | Record<string, (str: string, value: string) => string>;
6
+ /**
7
+ * Apply transformation functions to the content of elements that have
8
+ * matching filter attributes. Multiple filters on the same element are
9
+ * executed in the order the attributes are defined.
10
+ *
11
+ * Default filters include string manipulation (`uppercase`, `lowercase`,
12
+ * `trim`, etc.), math operations (`plus`, `minus`, `multiply`, etc.),
13
+ * and more.
14
+ *
15
+ * @param html HTML string to transform.
16
+ * @param custom Custom filters to merge with the defaults. Pass `false`
17
+ * to disable all filters (including the defaults).
18
+ * @returns The transformed HTML string.
19
+ *
20
+ * @example
21
+ * import { filters } from '@maizzle/framework'
22
+ *
23
+ * // Defaults only
24
+ * const out = filters('<p uppercase>foo</p>') // → '<p>FOO</p>'
25
+ *
26
+ * // Add a custom filter
27
+ * filters('<p suffix=" world">hello</p>', {
28
+ * suffix: (s, v) => s + v,
29
+ * })
30
+ *
31
+ * // Disable all filters
32
+ * filters('<p uppercase>foo</p>', false)
33
+ */
34
+ declare function filters(html: string, custom?: FiltersConfig): string;
35
+ /**
36
+ * DOM-form of {@link filters} used by the internal transformer pipeline.
37
+ * Takes a parsed DOM, returns a parsed DOM — avoids redundant
38
+ * serialize/parse round-trips when chained with other transformers.
39
+ */
40
+ declare function filtersDom(dom: ChildNode[], custom?: FiltersConfig): ChildNode[];
41
+ //#endregion
42
+ export { type FilterFunction, FiltersConfig, filters, filtersDom };
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/transformers/filters/index.ts"],"mappings":";;;;KAMY,aAAA,WAAwB,MAAM,UAAU,GAAA,UAAa,KAAA;;AAAjE;;;;;;;;AAA8E;AA2C9E;;;;;;;;AAAgE;AAShE;;;;;;;;;iBATgB,OAAA,CAAQ,IAAA,UAAc,MAAA,GAAQ,aAAkB;;;;;AASmB;iBAAnE,UAAA,CAAW,GAAA,EAAK,SAAA,IAAa,MAAA,GAAQ,aAAA,GAAqB,SAAA"}
@@ -0,0 +1,89 @@
1
+ import { parse } from "../../utils/ast/parser.js";
2
+ import { serialize } from "../../utils/ast/serializer.js";
3
+ import "../../utils/ast/index.js";
4
+ import { defaults } from "./defaults.js";
5
+ import { Text } from "domhandler";
6
+ //#region src/transformers/filters/index.ts
7
+ /**
8
+ * Process children before parents so nested filter elements work correctly.
9
+ */
10
+ function walkBottomUp(nodes, callback) {
11
+ for (const node of nodes.slice()) {
12
+ if ("children" in node && node.children?.length) walkBottomUp(node.children, callback);
13
+ callback(node);
14
+ }
15
+ }
16
+ /**
17
+ * Apply transformation functions to the content of elements that have
18
+ * matching filter attributes. Multiple filters on the same element are
19
+ * executed in the order the attributes are defined.
20
+ *
21
+ * Default filters include string manipulation (`uppercase`, `lowercase`,
22
+ * `trim`, etc.), math operations (`plus`, `minus`, `multiply`, etc.),
23
+ * and more.
24
+ *
25
+ * @param html HTML string to transform.
26
+ * @param custom Custom filters to merge with the defaults. Pass `false`
27
+ * to disable all filters (including the defaults).
28
+ * @returns The transformed HTML string.
29
+ *
30
+ * @example
31
+ * import { filters } from '@maizzle/framework'
32
+ *
33
+ * // Defaults only
34
+ * const out = filters('<p uppercase>foo</p>') // → '<p>FOO</p>'
35
+ *
36
+ * // Add a custom filter
37
+ * filters('<p suffix=" world">hello</p>', {
38
+ * suffix: (s, v) => s + v,
39
+ * })
40
+ *
41
+ * // Disable all filters
42
+ * filters('<p uppercase>foo</p>', false)
43
+ */
44
+ function filters(html, custom = {}) {
45
+ return serialize(filtersDom(parse(html), custom));
46
+ }
47
+ /**
48
+ * DOM-form of {@link filters} used by the internal transformer pipeline.
49
+ * Takes a parsed DOM, returns a parsed DOM — avoids redundant
50
+ * serialize/parse round-trips when chained with other transformers.
51
+ */
52
+ function filtersDom(dom, custom = {}) {
53
+ if (custom === false) return dom;
54
+ const allFilters = {
55
+ ...defaults,
56
+ ...custom
57
+ };
58
+ const filterNames = new Set(Object.keys(allFilters));
59
+ walkBottomUp(dom, (node) => {
60
+ const el = node;
61
+ if (!el.attribs) return;
62
+ const matched = [];
63
+ for (const attr of Object.keys(el.attribs)) if (filterNames.has(attr)) matched.push({
64
+ name: attr,
65
+ value: el.attribs[attr]
66
+ });
67
+ if (matched.length === 0) return;
68
+ let content = serialize(el.children);
69
+ for (const { name, value } of matched) {
70
+ content = allFilters[name](content, value);
71
+ delete el.attribs[name];
72
+ }
73
+ if (content === "") el.children = [];
74
+ else if (/<[a-z/!]/i.test(content)) {
75
+ const newChildren = parse(content);
76
+ for (const child of newChildren) child.parent = el;
77
+ el.children = newChildren;
78
+ } else {
79
+ const textNode = new Text(content);
80
+ textNode.parent = el;
81
+ el.children = [textNode];
82
+ }
83
+ });
84
+ return dom;
85
+ }
86
+ //#endregion
87
+ export { filters, filtersDom };
88
+
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/transformers/filters/index.ts"],"sourcesContent":["import { Text } from 'domhandler'\nimport type { ChildNode, Element } from 'domhandler'\nimport { parse, serialize } from '../../utils/ast/index.ts'\nimport { defaults } from './defaults.ts'\n\nexport type { FilterFunction } from './defaults.ts'\nexport type FiltersConfig = false | Record<string, (str: string, value: string) => string>\n\n/**\n * Process children before parents so nested filter elements work correctly.\n */\nfunction walkBottomUp(nodes: ChildNode[], callback: (node: ChildNode) => void): void {\n for (const node of nodes.slice()) {\n if ('children' in node && node.children?.length) {\n walkBottomUp(node.children as ChildNode[], callback)\n }\n\n callback(node)\n }\n}\n\n/**\n * Apply transformation functions to the content of elements that have\n * matching filter attributes. Multiple filters on the same element are\n * executed in the order the attributes are defined.\n *\n * Default filters include string manipulation (`uppercase`, `lowercase`,\n * `trim`, etc.), math operations (`plus`, `minus`, `multiply`, etc.),\n * and more.\n *\n * @param html HTML string to transform.\n * @param custom Custom filters to merge with the defaults. Pass `false`\n * to disable all filters (including the defaults).\n * @returns The transformed HTML string.\n *\n * @example\n * import { filters } from '@maizzle/framework'\n *\n * // Defaults only\n * const out = filters('<p uppercase>foo</p>') // → '<p>FOO</p>'\n *\n * // Add a custom filter\n * filters('<p suffix=\" world\">hello</p>', {\n * suffix: (s, v) => s + v,\n * })\n *\n * // Disable all filters\n * filters('<p uppercase>foo</p>', false)\n */\nexport function filters(html: string, custom: FiltersConfig = {}): string {\n return serialize(filtersDom(parse(html), custom))\n}\n\n/**\n * DOM-form of {@link filters} used by the internal transformer pipeline.\n * Takes a parsed DOM, returns a parsed DOM — avoids redundant\n * serialize/parse round-trips when chained with other transformers.\n */\nexport function filtersDom(dom: ChildNode[], custom: FiltersConfig = {}): ChildNode[] {\n if (custom === false) return dom\n\n const allFilters = { ...defaults, ...custom }\n const filterNames = new Set(Object.keys(allFilters))\n\n walkBottomUp(dom, (node) => {\n const el = node as Element\n\n if (!el.attribs) return\n\n // Collect matching filter attributes in source order\n const matched: Array<{ name: string; value: string }> = []\n\n for (const attr of Object.keys(el.attribs)) {\n if (filterNames.has(attr)) {\n matched.push({ name: attr, value: el.attribs[attr] })\n }\n }\n\n if (matched.length === 0) return\n\n // Serialize children to get innerHTML\n let content = serialize(el.children as ChildNode[])\n\n // Apply each filter in attribute order\n for (const { name, value } of matched) {\n content = allFilters[name](content, value)\n delete el.attribs[name]\n }\n\n // Replace children with the filtered content\n if (content === '') {\n el.children = []\n } else if (/<[a-z/!]/i.test(content)) {\n // Result contains HTML elements — parse back to DOM\n const newChildren = parse(content)\n\n for (const child of newChildren) {\n child.parent = el as any\n }\n\n el.children = newChildren as ChildNode[]\n } else {\n // Text-only result — create a text node directly to preserve entity strings\n const textNode = new Text(content)\n textNode.parent = el as any\n el.children = [textNode]\n }\n })\n\n return dom\n}\n"],"mappings":";;;;;;;;;AAWA,SAAS,aAAa,OAAoB,UAA2C;CACnF,KAAK,MAAM,QAAQ,MAAM,MAAM,GAAG;EAChC,IAAI,cAAc,QAAQ,KAAK,UAAU,QACvC,aAAa,KAAK,UAAyB,QAAQ;EAGrD,SAAS,IAAI;CACf;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAgB,QAAQ,MAAc,SAAwB,CAAC,GAAW;CACxE,OAAO,UAAU,WAAW,MAAM,IAAI,GAAG,MAAM,CAAC;AAClD;;;;;;AAOA,SAAgB,WAAW,KAAkB,SAAwB,CAAC,GAAgB;CACpF,IAAI,WAAW,OAAO,OAAO;CAE7B,MAAM,aAAa;EAAE,GAAG;EAAU,GAAG;CAAO;CAC5C,MAAM,cAAc,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC;CAEnD,aAAa,MAAM,SAAS;EAC1B,MAAM,KAAK;EAEX,IAAI,CAAC,GAAG,SAAS;EAGjB,MAAM,UAAkD,CAAC;EAEzD,KAAK,MAAM,QAAQ,OAAO,KAAK,GAAG,OAAO,GACvC,IAAI,YAAY,IAAI,IAAI,GACtB,QAAQ,KAAK;GAAE,MAAM;GAAM,OAAO,GAAG,QAAQ;EAAM,CAAC;EAIxD,IAAI,QAAQ,WAAW,GAAG;EAG1B,IAAI,UAAU,UAAU,GAAG,QAAuB;EAGlD,KAAK,MAAM,EAAE,MAAM,WAAW,SAAS;GACrC,UAAU,WAAW,KAAK,CAAC,SAAS,KAAK;GACzC,OAAO,GAAG,QAAQ;EACpB;EAGA,IAAI,YAAY,IACd,GAAG,WAAW,CAAC;OACV,IAAI,YAAY,KAAK,OAAO,GAAG;GAEpC,MAAM,cAAc,MAAM,OAAO;GAEjC,KAAK,MAAM,SAAS,aAClB,MAAM,SAAS;GAGjB,GAAG,WAAW;EAChB,OAAO;GAEL,MAAM,WAAW,IAAI,KAAK,OAAO;GACjC,SAAS,SAAS;GAClB,GAAG,WAAW,CAAC,QAAQ;EACzB;CACF,CAAC;CAED,OAAO;AACT"}
@@ -0,0 +1,22 @@
1
+ import { FormatOptions, FormatOptions as FormatOptions$1 } from "oxfmt";
2
+
3
+ //#region src/transformers/format.d.ts
4
+ /**
5
+ * Pretty-print an HTML string with `oxfmt`. Maizzle defaults
6
+ * (`printWidth: 320`, `htmlWhitespaceSensitivity: 'ignore'`,
7
+ * `embeddedLanguageFormatting: 'off'`) are merged underneath any options
8
+ * you pass.
9
+ *
10
+ * @param html HTML string to format.
11
+ * @param options [oxfmt `FormatOptions`](https://github.com/oxc-project/oxfmt).
12
+ * @returns The formatted HTML string.
13
+ *
14
+ * @example
15
+ * import { format } from '@maizzle/framework'
16
+ *
17
+ * const pretty = await format(html, { useTabs: true, tabWidth: 4 })
18
+ */
19
+ declare function format(html: string, options?: FormatOptions$1): Promise<string>;
20
+ //#endregion
21
+ export { type FormatOptions, format };
22
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","names":[],"sources":["../../src/transformers/format.ts"],"mappings":";;;;AA2BA;;;;;;;;;AAAgF;;;;;iBAA1D,MAAA,CAAO,IAAA,UAAc,OAAA,GAAS,eAAA,GAAqB,OAAO"}
@@ -0,0 +1,30 @@
1
+ import { defu as defu$1 } from "defu";
2
+ import { format as format$1 } from "oxfmt";
3
+ //#region src/transformers/format.ts
4
+ const DEFAULT_OPTIONS = {
5
+ printWidth: 320,
6
+ htmlWhitespaceSensitivity: "ignore",
7
+ embeddedLanguageFormatting: "off"
8
+ };
9
+ /**
10
+ * Pretty-print an HTML string with `oxfmt`. Maizzle defaults
11
+ * (`printWidth: 320`, `htmlWhitespaceSensitivity: 'ignore'`,
12
+ * `embeddedLanguageFormatting: 'off'`) are merged underneath any options
13
+ * you pass.
14
+ *
15
+ * @param html HTML string to format.
16
+ * @param options [oxfmt `FormatOptions`](https://github.com/oxc-project/oxfmt).
17
+ * @returns The formatted HTML string.
18
+ *
19
+ * @example
20
+ * import { format } from '@maizzle/framework'
21
+ *
22
+ * const pretty = await format(html, { useTabs: true, tabWidth: 4 })
23
+ */
24
+ async function format(html, options = {}) {
25
+ return (await format$1("input.html", html, defu$1(options, DEFAULT_OPTIONS))).code;
26
+ }
27
+ //#endregion
28
+ export { format };
29
+
30
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","names":["oxfmt","merge"],"sources":["../../src/transformers/format.ts"],"sourcesContent":["import { format as oxfmt } from 'oxfmt'\nimport { defu as merge } from 'defu'\nimport type { FormatOptions } from 'oxfmt'\n\nexport type { FormatOptions } from 'oxfmt'\n\nconst DEFAULT_OPTIONS: FormatOptions = {\n printWidth: 320,\n htmlWhitespaceSensitivity: 'ignore',\n embeddedLanguageFormatting: 'off',\n}\n\n/**\n * Pretty-print an HTML string with `oxfmt`. Maizzle defaults\n * (`printWidth: 320`, `htmlWhitespaceSensitivity: 'ignore'`,\n * `embeddedLanguageFormatting: 'off'`) are merged underneath any options\n * you pass.\n *\n * @param html HTML string to format.\n * @param options [oxfmt `FormatOptions`](https://github.com/oxc-project/oxfmt).\n * @returns The formatted HTML string.\n *\n * @example\n * import { format } from '@maizzle/framework'\n *\n * const pretty = await format(html, { useTabs: true, tabWidth: 4 })\n */\nexport async function format(html: string, options: FormatOptions = {}): Promise<string> {\n const merged = merge(options, DEFAULT_OPTIONS)\n const result = await oxfmt('input.html', html, merged)\n return result.code\n}\n"],"mappings":";;;AAMA,MAAM,kBAAiC;CACrC,YAAY;CACZ,2BAA2B;CAC3B,4BAA4B;AAC9B;;;;;;;;;;;;;;;;AAiBA,eAAsB,OAAO,MAAc,UAAyB,CAAC,GAAoB;CAGvF,QAAO,MADcA,SAAM,cAAc,MAD1BC,OAAM,SAAS,eACsB,CAAC,EAAA,CACvC;AAChB"}
@@ -0,0 +1,20 @@
1
+ import { ChildNode } from "domhandler";
2
+
3
+ //#region src/transformers/imgWidth.d.ts
4
+ /**
5
+ * Backfill the `width` attribute on `<Img>`-emitted images that were left
6
+ * without an explicit width. Runs after `columnWidth`, so every
7
+ * Container/Section/Column ancestor already carries a resolved pixel
8
+ * width in its inline style.
9
+ *
10
+ * For each marked `<img>`, walk up the ancestor chain accumulating
11
+ * horizontal padding+border, stopping at the nearest ancestor with a
12
+ * resolvable pixel width. The image width is that source minus the
13
+ * accumulated inset (so padding on wrappers narrows the image to its
14
+ * content box). When no pixel width is found anywhere, the marker is
15
+ * dropped and the image stays fluid.
16
+ */
17
+ declare function imgWidthDom(dom: ChildNode[]): ChildNode[];
18
+ //#endregion
19
+ export { imgWidthDom };
20
+ //# sourceMappingURL=imgWidth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imgWidth.d.ts","names":[],"sources":["../../src/transformers/imgWidth.ts"],"mappings":";;;;;AAgDA;;;;;;;;AAAwD;;;iBAAxC,WAAA,CAAY,GAAA,EAAK,SAAA,KAAc,SAAS"}
@@ -0,0 +1,76 @@
1
+ import { walk } from "../utils/ast/walker.js";
2
+ import "../utils/ast/index.js";
3
+ import { horizontalBorderPx, horizontalPaddingPx, lengthToPx } from "../utils/cssBox.js";
4
+ import safeParser from "postcss-safe-parser";
5
+ //#region src/transformers/imgWidth.ts
6
+ const MARKER = "data-maizzle-img-width";
7
+ function firstDeclValue(root, prop) {
8
+ let found;
9
+ root.walkDecls(prop, (d) => {
10
+ found = d.value;
11
+ return false;
12
+ });
13
+ return found;
14
+ }
15
+ /**
16
+ * Resolve an element's own pixel width from its inlined style (`max-width`
17
+ * then `width`) or, failing that, its `width` attribute. Percentages and
18
+ * other non-pixel lengths return null — the caller leaves the image fluid.
19
+ */
20
+ function pixelWidthOf(el, root) {
21
+ if (root) {
22
+ const fromStyle = firstDeclValue(root, "max-width") ?? "";
23
+ const styleMax = fromStyle ? lengthToPx(fromStyle) : null;
24
+ if (styleMax != null) return styleMax;
25
+ const w = firstDeclValue(root, "width");
26
+ const styleWidth = w ? lengthToPx(w) : null;
27
+ if (styleWidth != null) return styleWidth;
28
+ }
29
+ const attrWidth = el.attribs?.width;
30
+ return attrWidth ? lengthToPx(attrWidth) : null;
31
+ }
32
+ /**
33
+ * Backfill the `width` attribute on `<Img>`-emitted images that were left
34
+ * without an explicit width. Runs after `columnWidth`, so every
35
+ * Container/Section/Column ancestor already carries a resolved pixel
36
+ * width in its inline style.
37
+ *
38
+ * For each marked `<img>`, walk up the ancestor chain accumulating
39
+ * horizontal padding+border, stopping at the nearest ancestor with a
40
+ * resolvable pixel width. The image width is that source minus the
41
+ * accumulated inset (so padding on wrappers narrows the image to its
42
+ * content box). When no pixel width is found anywhere, the marker is
43
+ * dropped and the image stays fluid.
44
+ */
45
+ function imgWidthDom(dom) {
46
+ const targets = [];
47
+ walk(dom, (node) => {
48
+ const el = node;
49
+ if (el.attribs && MARKER in el.attribs) targets.push(el);
50
+ });
51
+ for (const img of targets) {
52
+ let cur = img.parent;
53
+ let insetPx = 0;
54
+ let resolvedPx = null;
55
+ while (cur) {
56
+ const el = cur;
57
+ if (el.attribs) {
58
+ const root = el.attribs.style ? safeParser(el.attribs.style) : null;
59
+ if (root) insetPx += horizontalPaddingPx(root) + horizontalBorderPx(root);
60
+ const px = pixelWidthOf(el, root);
61
+ if (px != null) {
62
+ resolvedPx = px;
63
+ break;
64
+ }
65
+ }
66
+ cur = cur.parent ?? null;
67
+ }
68
+ if (resolvedPx != null) img.attribs.width = String(Math.max(0, Math.round(resolvedPx - insetPx)));
69
+ delete img.attribs[MARKER];
70
+ }
71
+ return dom;
72
+ }
73
+ //#endregion
74
+ export { imgWidthDom };
75
+
76
+ //# sourceMappingURL=imgWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imgWidth.js","names":[],"sources":["../../src/transformers/imgWidth.ts"],"sourcesContent":["import safeParser from 'postcss-safe-parser'\nimport type { Root } from 'postcss'\nimport { walk } from '../utils/ast/index.ts'\nimport { horizontalBorderPx, horizontalPaddingPx, lengthToPx } from '../utils/cssBox.ts'\nimport type { ChildNode, Element, ParentNode } from 'domhandler'\n\nconst MARKER = 'data-maizzle-img-width'\n\nfunction firstDeclValue(root: Root, prop: string): string | undefined {\n let found: string | undefined\n root.walkDecls(prop, (d) => {\n found = d.value\n return false\n })\n return found\n}\n\n/**\n * Resolve an element's own pixel width from its inlined style (`max-width`\n * then `width`) or, failing that, its `width` attribute. Percentages and\n * other non-pixel lengths return null — the caller leaves the image fluid.\n */\nfunction pixelWidthOf(el: Element, root: Root | null): number | null {\n if (root) {\n const fromStyle = (firstDeclValue(root, 'max-width') ?? '')\n const styleMax = fromStyle ? lengthToPx(fromStyle) : null\n if (styleMax != null) return styleMax\n const w = firstDeclValue(root, 'width')\n const styleWidth = w ? lengthToPx(w) : null\n if (styleWidth != null) return styleWidth\n }\n const attrWidth = el.attribs?.width\n return attrWidth ? lengthToPx(attrWidth) : null\n}\n\n/**\n * Backfill the `width` attribute on `<Img>`-emitted images that were left\n * without an explicit width. Runs after `columnWidth`, so every\n * Container/Section/Column ancestor already carries a resolved pixel\n * width in its inline style.\n *\n * For each marked `<img>`, walk up the ancestor chain accumulating\n * horizontal padding+border, stopping at the nearest ancestor with a\n * resolvable pixel width. The image width is that source minus the\n * accumulated inset (so padding on wrappers narrows the image to its\n * content box). When no pixel width is found anywhere, the marker is\n * dropped and the image stays fluid.\n */\nexport function imgWidthDom(dom: ChildNode[]): ChildNode[] {\n const targets: Element[] = []\n\n walk(dom, (node) => {\n const el = node as Element\n if (el.attribs && MARKER in el.attribs) targets.push(el)\n })\n\n for (const img of targets) {\n let cur: ParentNode | null = img.parent\n let insetPx = 0\n let resolvedPx: number | null = null\n\n while (cur) {\n const el = cur as Element\n if (el.attribs) {\n const root = el.attribs.style ? safeParser(el.attribs.style) : null\n if (root) insetPx += horizontalPaddingPx(root) + horizontalBorderPx(root)\n\n const px = pixelWidthOf(el, root)\n if (px != null) {\n resolvedPx = px\n break\n }\n }\n cur = (cur as any).parent ?? null\n }\n\n if (resolvedPx != null) {\n img.attribs.width = String(Math.max(0, Math.round(resolvedPx - insetPx)))\n }\n\n delete img.attribs[MARKER]\n }\n\n return dom\n}\n"],"mappings":";;;;;AAMA,MAAM,SAAS;AAEf,SAAS,eAAe,MAAY,MAAkC;CACpE,IAAI;CACJ,KAAK,UAAU,OAAO,MAAM;EAC1B,QAAQ,EAAE;EACV,OAAO;CACT,CAAC;CACD,OAAO;AACT;;;;;;AAOA,SAAS,aAAa,IAAa,MAAkC;CACnE,IAAI,MAAM;EACR,MAAM,YAAa,eAAe,MAAM,WAAW,KAAK;EACxD,MAAM,WAAW,YAAY,WAAW,SAAS,IAAI;EACrD,IAAI,YAAY,MAAM,OAAO;EAC7B,MAAM,IAAI,eAAe,MAAM,OAAO;EACtC,MAAM,aAAa,IAAI,WAAW,CAAC,IAAI;EACvC,IAAI,cAAc,MAAM,OAAO;CACjC;CACA,MAAM,YAAY,GAAG,SAAS;CAC9B,OAAO,YAAY,WAAW,SAAS,IAAI;AAC7C;;;;;;;;;;;;;;AAeA,SAAgB,YAAY,KAA+B;CACzD,MAAM,UAAqB,CAAC;CAE5B,KAAK,MAAM,SAAS;EAClB,MAAM,KAAK;EACX,IAAI,GAAG,WAAW,UAAU,GAAG,SAAS,QAAQ,KAAK,EAAE;CACzD,CAAC;CAED,KAAK,MAAM,OAAO,SAAS;EACzB,IAAI,MAAyB,IAAI;EACjC,IAAI,UAAU;EACd,IAAI,aAA4B;EAEhC,OAAO,KAAK;GACV,MAAM,KAAK;GACX,IAAI,GAAG,SAAS;IACd,MAAM,OAAO,GAAG,QAAQ,QAAQ,WAAW,GAAG,QAAQ,KAAK,IAAI;IAC/D,IAAI,MAAM,WAAW,oBAAoB,IAAI,IAAI,mBAAmB,IAAI;IAExE,MAAM,KAAK,aAAa,IAAI,IAAI;IAChC,IAAI,MAAM,MAAM;KACd,aAAa;KACb;IACF;GACF;GACA,MAAO,IAAY,UAAU;EAC/B;EAEA,IAAI,cAAc,MAChB,IAAI,QAAQ,QAAQ,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,aAAa,OAAO,CAAC,CAAC;EAG1E,OAAO,IAAI,QAAQ;CACrB;CAEA,OAAO;AACT"}
@@ -1,4 +1,5 @@
1
- import { MaizzleConfig } from "../types/config.mjs";
1
+ import { MaizzleConfig } from "../types/config.js";
2
+ import { TailwindBlock } from "../composables/renderContext.js";
2
3
 
3
4
  //#region src/transformers/index.d.ts
4
5
  /**
@@ -31,7 +32,7 @@ import { MaizzleConfig } from "../types/config.mjs";
31
32
  * 15. Prettify
32
33
  * 16. Minify
33
34
  */
34
- declare function runTransformers(html: string, config: MaizzleConfig, filePath?: string, doctype?: string): Promise<string>;
35
+ declare function runTransformers(html: string, config: MaizzleConfig, filePath?: string, doctype?: string, tailwindBlocks?: TailwindBlock[]): Promise<string>;
35
36
  //#endregion
36
37
  export { runTransformers };
37
- //# sourceMappingURL=index.d.mts.map
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/transformers/index.ts"],"mappings":";;;;;;AAwDA;;;;;;;;;;;;;;;;;AAMU;;;;;;;;;;;iBANY,eAAA,CACpB,IAAA,UACA,MAAA,EAAQ,aAAA,EACR,QAAA,WACA,OAAA,WACA,cAAA,GAAiB,aAAA,KAChB,OAAA"}
@@ -0,0 +1,163 @@
1
+ import { parse } from "../utils/ast/parser.js";
2
+ import { serialize } from "../utils/ast/serializer.js";
3
+ import "../utils/ast/index.js";
4
+ import { inlineLinkDom } from "./inlineLink.js";
5
+ import { tailwindComponent } from "./tailwindComponent.js";
6
+ import { tailwindcss } from "./tailwindcss.js";
7
+ import { safeSelectorsDom } from "./safeSelectors.js";
8
+ import { attributeToStyleDom } from "./attributeToStyle.js";
9
+ import { inlineCssDom } from "./inlineCss.js";
10
+ import { msoPlaceholders } from "./msoPlaceholders.js";
11
+ import { columnWidth } from "./columnWidth.js";
12
+ import { imgWidthDom } from "./imgWidth.js";
13
+ import { removeAttributesDom } from "./removeAttributes.js";
14
+ import { shorthandCssDom } from "./shorthandCss.js";
15
+ import { sixHexDom } from "./sixHex.js";
16
+ import { addAttributesDom } from "./addAttributes.js";
17
+ import { filtersDom } from "./filters/index.js";
18
+ import { baseDom } from "./base.js";
19
+ import { entitiesDom } from "./entities.js";
20
+ import { urlQueryDom } from "./urlQuery.js";
21
+ import { purgeCssDom } from "./purgeCss.js";
22
+ import { replaceStrings } from "./replaceStrings.js";
23
+ import { format } from "./format.js";
24
+ import { minifyCodeInline } from "./minifyCodeInline.js";
25
+ import { minify } from "./minify.js";
26
+ //#region src/transformers/index.ts
27
+ /**
28
+ * Run all Maizzle transformers on the rendered HTML.
29
+ *
30
+ * The HTML is parsed into a DOM once at the start and passed through all
31
+ * DOM-based transformers as a shared `ChildNode[]`. After all DOM transformers
32
+ * complete, the DOM is serialized back to a string exactly once.
33
+ *
34
+ * String-only transformers (those that rely on external tools that require a
35
+ * raw HTML string) then run on the serialized output.
36
+ *
37
+ * Transformers run in a specific order:
38
+ * 0. Inline link stylesheets — replace `<link rel="stylesheet">` with `<style>` tags
39
+ * 1. Tailwind CSS — compile CSS, lower syntax, optimize (cleanup + merge media queries)
40
+ * 2. Safe class names
41
+ * 3. Attribute to style
42
+ * 4. CSS inliner
43
+ * 5. Remove attributes
44
+ * 6. Shorthand CSS
45
+ * 7. Six-digit HEX
46
+ * 8. Add attributes
47
+ * 9. Filters
48
+ * 10. Base URL
49
+ * 11. URL query
50
+ * 12. Purge CSS (serializes/parses internally around email-comb)
51
+ * 13. Entities
52
+ * + Vue-generated comments stripped here (on serialized string)
53
+ * 14. Replace strings
54
+ * 15. Prettify
55
+ * 16. Minify
56
+ */
57
+ async function runTransformers(html, config, filePath, doctype, tailwindBlocks) {
58
+ /**
59
+ * Per-transformer skip map — only honored when useTransformers is an object.
60
+ * Whole-pipeline opt-out (`useTransformers === false`) is handled upstream
61
+ * in build.ts / render so we never reach this function in that case.
62
+ *
63
+ * A toggle set to `true` *force-enables* its transformer for this run
64
+ * by layering on the matching config slice (e.g. `prettify: true`
65
+ * sets `html.format = true`). This only applies to transformers
66
+ * whose enable flag is a plain boolean — data-driven ones
67
+ * (filters, baseURL, urlQuery, etc.) need actual config
68
+ * values, so a bare `true` for those is a no-op.
69
+ */
70
+ const toggles = typeof config.useTransformers === "object" ? config.useTransformers : null;
71
+ const enabled = (key) => toggles?.[key] !== false;
72
+ let effective = config;
73
+ if (toggles) {
74
+ const cssOver = {};
75
+ const htmlOver = {};
76
+ if (toggles.inlineCss === true) cssOver.inline = true;
77
+ if (toggles.purgeCss === true) cssOver.purge = true;
78
+ if (toggles.safeSelectors === true) cssOver.safe = true;
79
+ if (toggles.shorthandCss === true) cssOver.shorthand = true;
80
+ if (toggles.sixHex === true) cssOver.sixHex = true;
81
+ if (toggles.prettify === true) htmlOver.format = true;
82
+ if (toggles.minify === true) htmlOver.minify = true;
83
+ if (toggles.entities === true) htmlOver.decodeEntities = true;
84
+ if (Object.keys(cssOver).length || Object.keys(htmlOver).length) effective = {
85
+ ...config,
86
+ css: {
87
+ ...config.css,
88
+ ...cssOver
89
+ },
90
+ html: {
91
+ ...config.html,
92
+ ...htmlOver
93
+ }
94
+ };
95
+ }
96
+ let dom = parse(html);
97
+ dom = await inlineLinkDom(dom, filePath);
98
+ if (tailwindBlocks?.length) dom = await tailwindComponent(dom, tailwindBlocks, effective, filePath);
99
+ dom = await tailwindcss(dom, effective, filePath);
100
+ if (enabled("safeSelectors")) dom = safeSelectorsDom(dom, effective.css);
101
+ if (enabled("attributeToStyle") && typeof effective.css?.inline === "object" && effective.css.inline.attributeToStyle) dom = attributeToStyleDom(dom, effective.css.inline.attributeToStyle);
102
+ if (enabled("inlineCss") && effective.css?.inline) {
103
+ const inlineOptions = typeof effective.css.inline === "object" ? effective.css.inline : {};
104
+ dom = inlineCssDom(dom, inlineOptions);
105
+ }
106
+ dom = msoPlaceholders(dom);
107
+ dom = columnWidth(dom);
108
+ dom = imgWidthDom(dom);
109
+ if (enabled("removeAttributes")) {
110
+ const removeRules = effective.html?.attributes?.remove;
111
+ dom = removeAttributesDom(dom, Array.isArray(removeRules) ? removeRules : []);
112
+ }
113
+ if (enabled("shorthandCss") && effective.css?.shorthand) {
114
+ const shorthandOptions = typeof effective.css.shorthand === "object" ? effective.css.shorthand : {};
115
+ dom = shorthandCssDom(dom, shorthandOptions);
116
+ }
117
+ if (enabled("sixHex") && effective.css?.sixHex !== false) dom = sixHexDom(dom);
118
+ if (enabled("addAttributes")) dom = addAttributesDom(dom, effective.html?.attributes);
119
+ if (enabled("filters")) dom = filtersDom(dom, effective.filters);
120
+ if (enabled("baseURL") && effective.url?.base) dom = baseDom(dom, effective.url.base);
121
+ if (enabled("urlQuery") && effective.url?.query && Object.keys(effective.url.query).length > 0) {
122
+ const { _options: queryOptions, ...queryParams } = effective.url.query;
123
+ dom = urlQueryDom(dom, queryParams, queryOptions ?? {});
124
+ }
125
+ if (enabled("purgeCss") && effective.css?.purge) {
126
+ const purgeOptions = typeof effective.css.purge === "object" ? effective.css.purge : {};
127
+ dom = purgeCssDom(dom, purgeOptions);
128
+ }
129
+ if (enabled("entities")) dom = entitiesDom(dom, effective.html?.decodeEntities);
130
+ const isXhtml = doctype ? /xhtml/i.test(doctype) : false;
131
+ let result = serialize(dom, { selfClosingTags: isXhtml });
132
+ if (enabled("replaceStrings")) result = replaceStrings(result, effective);
133
+ const minifyWillRun = enabled("minify") && !!effective.html?.minify;
134
+ if (enabled("prettify") && !minifyWillRun && effective.html?.format) {
135
+ const formatOptions = typeof effective.html.format === "object" ? effective.html.format : {};
136
+ result = await format(result, formatOptions);
137
+ }
138
+ if (enabled("minify") && effective.html?.minify) {
139
+ const minifyOptions = typeof effective.html.minify === "object" ? effective.html.minify : {};
140
+ result = minify(result, minifyOptions);
141
+ }
142
+ /**
143
+ * Strip self-closing slashes for HTML5 doctypes, but preserve content
144
+ * inside MSO conditional comments (XML-ish, case/syntax sensitive).
145
+ * MUST run BEFORE minifyCodeInline: at this point, CodeInline's
146
+ * shiki output is still marker-encoded (§MZLT§/§MZGT§), so any
147
+ * ` />` in the highlighted source code (e.g. a Vue self-close
148
+ * tag) hasn't materialized yet and can't be mistakenly
149
+ * stripped from inside a `<code>` element.
150
+ */
151
+ if (!isXhtml) result = result.replace(/<!--\[if [^\]]*\]>[\s\S]*?<!\[endif\]-->|( \/>)/g, (match, selfClose) => selfClose ? ">" : match);
152
+ /**
153
+ * 16.5. Strip whitespace inside `data-minify-inline` markers (CodeInline's
154
+ * Shiki output, etc.). Runs after format/minify so it cleans up the
155
+ * pretty-printer's indentation between sibling tags.
156
+ */
157
+ result = minifyCodeInline(result);
158
+ return result;
159
+ }
160
+ //#endregion
161
+ export { runTransformers };
162
+
163
+ //# sourceMappingURL=index.js.map