@maizzle/framework 6.2.2 → 6.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.d.ts +0 -2
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +1 -2
- package/dist/components/WithUrl.vue +19 -3
- package/dist/components/utils.d.ts +0 -2
- package/dist/components/utils.d.ts.map +1 -1
- package/dist/components/utils.js +1 -2
- package/dist/composables/defineConfig.d.ts +0 -2
- package/dist/composables/defineConfig.d.ts.map +1 -1
- package/dist/composables/defineConfig.js +1 -2
- package/dist/composables/definePreviewProps.d.ts +0 -2
- package/dist/composables/definePreviewProps.d.ts.map +1 -1
- package/dist/composables/definePreviewProps.js +1 -2
- package/dist/composables/renderContext.d.ts +0 -2
- package/dist/composables/renderContext.d.ts.map +1 -1
- package/dist/composables/renderContext.js +1 -2
- package/dist/composables/useBaseUrl.d.ts +0 -2
- package/dist/composables/useBaseUrl.d.ts.map +1 -1
- package/dist/composables/useBaseUrl.js +1 -2
- package/dist/composables/useConfig.d.ts +0 -2
- package/dist/composables/useConfig.d.ts.map +1 -1
- package/dist/composables/useConfig.js +1 -2
- package/dist/composables/useCurrentTemplate.d.ts +0 -2
- package/dist/composables/useCurrentTemplate.d.ts.map +1 -1
- package/dist/composables/useCurrentTemplate.js +1 -2
- package/dist/composables/useDoctype.d.ts +0 -2
- package/dist/composables/useDoctype.d.ts.map +1 -1
- package/dist/composables/useDoctype.js +1 -2
- package/dist/composables/useEvent.d.ts +0 -2
- package/dist/composables/useEvent.d.ts.map +1 -1
- package/dist/composables/useEvent.js +1 -2
- package/dist/composables/useFont.d.ts +0 -2
- package/dist/composables/useFont.d.ts.map +1 -1
- package/dist/composables/useFont.js +1 -2
- package/dist/composables/useOutlookFallback.d.ts +0 -2
- package/dist/composables/useOutlookFallback.d.ts.map +1 -1
- package/dist/composables/useOutlookFallback.js +1 -2
- package/dist/composables/useOutputPath.d.ts +0 -2
- package/dist/composables/useOutputPath.d.ts.map +1 -1
- package/dist/composables/useOutputPath.js +1 -2
- package/dist/composables/usePlaintext.d.ts +0 -2
- package/dist/composables/usePlaintext.d.ts.map +1 -1
- package/dist/composables/usePlaintext.js +1 -2
- package/dist/composables/usePreheader.d.ts +0 -2
- package/dist/composables/usePreheader.d.ts.map +1 -1
- package/dist/composables/usePreheader.js +1 -2
- package/dist/composables/useTransformers.d.ts +0 -2
- package/dist/composables/useTransformers.d.ts.map +1 -1
- package/dist/composables/useTransformers.js +1 -2
- package/dist/composables/useUrlQuery.d.ts +0 -2
- package/dist/composables/useUrlQuery.d.ts.map +1 -1
- package/dist/composables/useUrlQuery.js +1 -2
- package/dist/config/defaults.d.ts +0 -2
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -2
- package/dist/config/index.d.ts +0 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -2
- package/dist/events/index.d.ts +0 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +1 -2
- package/dist/plaintext.d.ts +0 -2
- package/dist/plaintext.d.ts.map +1 -1
- package/dist/plaintext.js +1 -2
- package/dist/plugin.d.ts +0 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +1 -2
- package/dist/plugins/postcss/flattenGradients.d.ts +0 -2
- package/dist/plugins/postcss/flattenGradients.d.ts.map +1 -1
- package/dist/plugins/postcss/flattenGradients.js +1 -2
- package/dist/plugins/postcss/mergeMediaQueries.d.ts +0 -2
- package/dist/plugins/postcss/mergeMediaQueries.d.ts.map +1 -1
- package/dist/plugins/postcss/mergeMediaQueries.js +1 -2
- package/dist/plugins/postcss/pruneVars.d.ts +0 -2
- package/dist/plugins/postcss/pruneVars.d.ts.map +1 -1
- package/dist/plugins/postcss/pruneVars.js +1 -2
- package/dist/plugins/postcss/quoteFontFamilies.d.ts +0 -2
- package/dist/plugins/postcss/quoteFontFamilies.d.ts.map +1 -1
- package/dist/plugins/postcss/quoteFontFamilies.js +1 -2
- package/dist/plugins/postcss/removeDeclarations.d.ts +0 -2
- package/dist/plugins/postcss/removeDeclarations.d.ts.map +1 -1
- package/dist/plugins/postcss/removeDeclarations.js +1 -2
- package/dist/plugins/postcss/resolveMaizzleImports.d.ts +0 -2
- package/dist/plugins/postcss/resolveMaizzleImports.d.ts.map +1 -1
- package/dist/plugins/postcss/resolveMaizzleImports.js +1 -2
- package/dist/plugins/postcss/resolveProps.d.ts +0 -2
- package/dist/plugins/postcss/resolveProps.d.ts.map +1 -1
- package/dist/plugins/postcss/resolveProps.js +1 -2
- package/dist/plugins/postcss/tailwindCleanup.d.ts +0 -2
- package/dist/plugins/postcss/tailwindCleanup.d.ts.map +1 -1
- package/dist/plugins/postcss/tailwindCleanup.js +1 -2
- package/dist/prepare.d.ts +1 -3
- package/dist/prepare.d.ts.map +1 -1
- package/dist/prepare.js +2 -3
- package/dist/prepare.js.map +1 -1
- package/dist/render/active.d.ts +0 -2
- package/dist/render/active.d.ts.map +1 -1
- package/dist/render/active.js +1 -2
- package/dist/render/buildTemplate.d.ts +0 -2
- package/dist/render/buildTemplate.d.ts.map +1 -1
- package/dist/render/buildTemplate.js +1 -2
- package/dist/render/createRenderer.d.ts +0 -2
- package/dist/render/createRenderer.d.ts.map +1 -1
- package/dist/render/createRenderer.js +9 -2
- package/dist/render/createRenderer.js.map +1 -1
- package/dist/render/index.d.ts +0 -2
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +1 -2
- package/dist/render/injectFonts.d.ts +0 -2
- package/dist/render/injectFonts.d.ts.map +1 -1
- package/dist/render/injectFonts.js +1 -2
- package/dist/render/parallel/buildWorker.d.ts +0 -2
- package/dist/render/parallel/buildWorker.d.ts.map +1 -1
- package/dist/render/parallel/buildWorker.js +1 -2
- package/dist/render/plugins/codeBlockExtract.d.ts +0 -2
- package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -1
- package/dist/render/plugins/codeBlockExtract.js +1 -2
- package/dist/render/plugins/markdownExtract.d.ts +0 -2
- package/dist/render/plugins/markdownExtract.d.ts.map +1 -1
- package/dist/render/plugins/markdownExtract.js +1 -2
- package/dist/render/plugins/previewProps.d.ts +0 -2
- package/dist/render/plugins/previewProps.d.ts.map +1 -1
- package/dist/render/plugins/previewProps.js +1 -2
- package/dist/render/plugins/rawExtract.d.ts +0 -2
- package/dist/render/plugins/rawExtract.d.ts.map +1 -1
- package/dist/render/plugins/rawExtract.js +1 -2
- package/dist/render/plugins/rowSourceLocation.d.ts +0 -2
- package/dist/render/plugins/rowSourceLocation.d.ts.map +1 -1
- package/dist/render/plugins/rowSourceLocation.js +1 -2
- package/dist/render/withPreviewProps.d.ts +0 -2
- package/dist/render/withPreviewProps.d.ts.map +1 -1
- package/dist/render/withPreviewProps.js +1 -2
- package/dist/serve.d.ts +0 -2
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +1 -2
- package/dist/server/compatibility.d.ts +0 -2
- package/dist/server/compatibility.d.ts.map +1 -1
- package/dist/server/compatibility.js +1 -2
- package/dist/server/email.d.ts +0 -2
- package/dist/server/email.d.ts.map +1 -1
- package/dist/server/email.js +1 -2
- package/dist/server/linter.d.ts +0 -2
- package/dist/server/linter.d.ts.map +1 -1
- package/dist/server/linter.js +1 -2
- package/dist/server/sfc-utils.d.ts +0 -2
- package/dist/server/sfc-utils.d.ts.map +1 -1
- package/dist/server/sfc-utils.js +1 -2
- package/dist/server/static.d.ts +0 -2
- package/dist/server/static.d.ts.map +1 -1
- package/dist/server/static.js +1 -2
- package/dist/server/ui/.vite/deps/@lucide_vue.js +13 -24
- package/dist/server/ui/.vite/deps/@lucide_vue.js.map +1 -1
- package/dist/server/ui/.vite/deps/@vueuse_core.js +2 -3
- package/dist/server/ui/.vite/deps/@vueuse_shared.js +2 -3
- package/dist/server/ui/.vite/deps/_metadata.json +17 -17
- package/dist/server/ui/.vite/deps/class-variance-authority.js +1 -2
- package/dist/server/ui/.vite/deps/clsx.js +1 -2
- package/dist/server/ui/.vite/deps/culori.js +150 -303
- package/dist/server/ui/.vite/deps/culori.js.map +1 -1
- package/dist/server/ui/.vite/deps/reka-ui.js +612 -1220
- package/dist/server/ui/.vite/deps/reka-ui.js.map +1 -1
- package/dist/server/ui/.vite/deps/{rolldown-runtime-EAsCxrDo.js → rolldown-runtime-C-UrYobY.js} +2 -3
- package/dist/server/ui/.vite/deps/tailwind-merge.js +2 -3
- package/dist/server/ui/.vite/deps/vue-router.js +9 -17
- package/dist/server/ui/.vite/deps/vue-router.js.map +1 -1
- package/dist/server/ui/.vite/deps/vue.js +1 -2
- package/dist/server/ui/.vite/deps/{vue.runtime.esm-bundler-Dq07uCLt.js → vue.runtime.esm-bundler-Bjgap8Ka.js} +261 -115
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-Bjgap8Ka.js.map +1 -0
- package/dist/server/ui/App.vue +39 -9
- package/dist/tests/render/_helpers.d.ts +0 -2
- package/dist/tests/render/_helpers.d.ts.map +1 -1
- package/dist/tests/render/_helpers.js +1 -2
- package/dist/transformers/addAttributes.d.ts +0 -2
- package/dist/transformers/addAttributes.d.ts.map +1 -1
- package/dist/transformers/addAttributes.js +1 -2
- package/dist/transformers/attributeToStyle.d.ts +0 -2
- package/dist/transformers/attributeToStyle.d.ts.map +1 -1
- package/dist/transformers/attributeToStyle.js +1 -2
- package/dist/transformers/base.d.ts +0 -2
- package/dist/transformers/base.d.ts.map +1 -1
- package/dist/transformers/base.js +58 -16
- package/dist/transformers/base.js.map +1 -1
- package/dist/transformers/columnWidth.d.ts +0 -2
- package/dist/transformers/columnWidth.d.ts.map +1 -1
- package/dist/transformers/columnWidth.js +1 -2
- package/dist/transformers/entities.d.ts +0 -2
- package/dist/transformers/entities.d.ts.map +1 -1
- package/dist/transformers/entities.js +1 -2
- package/dist/transformers/filters/defaults.d.ts +0 -2
- package/dist/transformers/filters/defaults.d.ts.map +1 -1
- package/dist/transformers/filters/defaults.js +1 -2
- package/dist/transformers/filters/index.d.ts +0 -2
- package/dist/transformers/filters/index.d.ts.map +1 -1
- package/dist/transformers/filters/index.js +1 -2
- package/dist/transformers/format.d.ts +0 -2
- package/dist/transformers/format.d.ts.map +1 -1
- package/dist/transformers/format.js +1 -2
- package/dist/transformers/imgWidth.d.ts +0 -2
- package/dist/transformers/imgWidth.d.ts.map +1 -1
- package/dist/transformers/imgWidth.js +1 -2
- package/dist/transformers/index.d.ts +0 -2
- package/dist/transformers/index.d.ts.map +1 -1
- package/dist/transformers/index.js +2 -3
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/inlineCss.d.ts +0 -2
- package/dist/transformers/inlineCss.d.ts.map +1 -1
- package/dist/transformers/inlineCss.js +1 -2
- package/dist/transformers/inlineLink.d.ts +0 -2
- package/dist/transformers/inlineLink.d.ts.map +1 -1
- package/dist/transformers/inlineLink.js +1 -2
- package/dist/transformers/minify.d.ts +0 -2
- package/dist/transformers/minify.d.ts.map +1 -1
- package/dist/transformers/minify.js +1 -2
- package/dist/transformers/minifyCodeInline.d.ts +0 -2
- package/dist/transformers/minifyCodeInline.d.ts.map +1 -1
- package/dist/transformers/minifyCodeInline.js +1 -2
- package/dist/transformers/msoConditionals.d.ts +0 -2
- package/dist/transformers/msoConditionals.d.ts.map +1 -1
- package/dist/transformers/msoConditionals.js +1 -2
- package/dist/transformers/msoPlaceholders.d.ts +0 -2
- package/dist/transformers/msoPlaceholders.d.ts.map +1 -1
- package/dist/transformers/msoPlaceholders.js +1 -2
- package/dist/transformers/purgeCss.d.ts +0 -2
- package/dist/transformers/purgeCss.d.ts.map +1 -1
- package/dist/transformers/purgeCss.js +1 -2
- package/dist/transformers/removeAttributes.d.ts +0 -2
- package/dist/transformers/removeAttributes.d.ts.map +1 -1
- package/dist/transformers/removeAttributes.js +1 -2
- package/dist/transformers/replaceStrings.d.ts +0 -2
- package/dist/transformers/replaceStrings.d.ts.map +1 -1
- package/dist/transformers/replaceStrings.js +1 -2
- package/dist/transformers/safeSelectors.d.ts +0 -2
- package/dist/transformers/safeSelectors.d.ts.map +1 -1
- package/dist/transformers/safeSelectors.js +1 -2
- package/dist/transformers/shorthandCss.d.ts +0 -2
- package/dist/transformers/shorthandCss.d.ts.map +1 -1
- package/dist/transformers/shorthandCss.js +1 -2
- package/dist/transformers/sixHex.d.ts +0 -2
- package/dist/transformers/sixHex.d.ts.map +1 -1
- package/dist/transformers/sixHex.js +1 -2
- package/dist/transformers/tailwindComponent.d.ts +0 -2
- package/dist/transformers/tailwindComponent.d.ts.map +1 -1
- package/dist/transformers/tailwindComponent.js +1 -2
- package/dist/transformers/tailwindcss.d.ts +0 -2
- package/dist/transformers/tailwindcss.d.ts.map +1 -1
- package/dist/transformers/tailwindcss.js +1 -2
- package/dist/transformers/urlQuery.d.ts +0 -2
- package/dist/transformers/urlQuery.d.ts.map +1 -1
- package/dist/transformers/urlQuery.js +1 -2
- package/dist/types/config.d.ts +0 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/ast/parser.d.ts +0 -2
- package/dist/utils/ast/parser.d.ts.map +1 -1
- package/dist/utils/ast/parser.js +1 -2
- package/dist/utils/ast/serializer.d.ts +0 -2
- package/dist/utils/ast/serializer.d.ts.map +1 -1
- package/dist/utils/ast/serializer.js +1 -2
- package/dist/utils/ast/walker.d.ts +0 -2
- package/dist/utils/ast/walker.d.ts.map +1 -1
- package/dist/utils/ast/walker.js +1 -2
- package/dist/utils/cloneConfig.d.ts +0 -2
- package/dist/utils/cloneConfig.d.ts.map +1 -1
- package/dist/utils/cloneConfig.js +1 -2
- package/dist/utils/compileTailwindCss.d.ts +0 -2
- package/dist/utils/compileTailwindCss.d.ts.map +1 -1
- package/dist/utils/compileTailwindCss.js +1 -2
- package/dist/utils/componentSources.d.ts +0 -2
- package/dist/utils/componentSources.d.ts.map +1 -1
- package/dist/utils/componentSources.js +1 -2
- package/dist/utils/cssBox.d.ts +0 -2
- package/dist/utils/cssBox.d.ts.map +1 -1
- package/dist/utils/cssBox.js +1 -2
- package/dist/utils/decodeStyleEntities.d.ts +0 -2
- package/dist/utils/decodeStyleEntities.d.ts.map +1 -1
- package/dist/utils/decodeStyleEntities.js +1 -2
- package/dist/utils/detect.d.ts +0 -2
- package/dist/utils/detect.d.ts.map +1 -1
- package/dist/utils/detect.js +1 -2
- package/dist/utils/output-markers.d.ts +0 -2
- package/dist/utils/output-markers.d.ts.map +1 -1
- package/dist/utils/output-markers.js +1 -2
- package/dist/utils/staticPaths.d.ts +0 -2
- package/dist/utils/staticPaths.d.ts.map +1 -1
- package/dist/utils/staticPaths.js +1 -2
- package/dist/utils/twMerge.d.ts +0 -2
- package/dist/utils/twMerge.d.ts.map +1 -1
- package/dist/utils/twMerge.js +1 -2
- package/dist/utils/url.d.ts +0 -2
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +1 -2
- package/dist/utils/watchPaths.d.ts +0 -2
- package/dist/utils/watchPaths.d.ts.map +1 -1
- package/dist/utils/watchPaths.js +1 -2
- package/package.json +4 -4
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-Dq07uCLt.js.map +0 -1
|
@@ -2,7 +2,7 @@ import { walk } from "../utils/ast/walker.js";
|
|
|
2
2
|
import "../utils/ast/index.js";
|
|
3
3
|
import { horizontalBorderPx, horizontalPaddingPx, lengthToPx } from "../utils/cssBox.js";
|
|
4
4
|
import safeParser from "postcss-safe-parser";
|
|
5
|
-
|
|
5
|
+
// src/transformers/imgWidth.ts
|
|
6
6
|
const MARKER = "data-maizzle-img-width";
|
|
7
7
|
function firstDeclValue(root, prop) {
|
|
8
8
|
let found;
|
|
@@ -70,7 +70,6 @@ function imgWidthDom(dom) {
|
|
|
70
70
|
}
|
|
71
71
|
return dom;
|
|
72
72
|
}
|
|
73
|
-
//#endregion
|
|
74
73
|
export { imgWidthDom };
|
|
75
74
|
|
|
76
75
|
//# sourceMappingURL=imgWidth.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { MaizzleConfig } from "../types/config.js";
|
|
2
2
|
import { TailwindBlock } from "../composables/renderContext.js";
|
|
3
|
-
//#region src/transformers/index.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Run all Maizzle transformers on the rendered HTML.
|
|
6
5
|
*
|
|
@@ -34,5 +33,4 @@ import { TailwindBlock } from "../composables/renderContext.js";
|
|
|
34
33
|
* 16. Minify
|
|
35
34
|
*/
|
|
36
35
|
export declare function runTransformers(html: string, config: MaizzleConfig, filePath?: string, doctype?: string, tailwindBlocks?: TailwindBlock[], sourceFiles?: string[]): Promise<string>;
|
|
37
|
-
//#endregion
|
|
38
36
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/transformers/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/transformers/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA2DsB,gBACpB,cACA,QAAQ,eACR,mBACA,kBACA,iBAAiB,iBACjB,yBACC"}
|
|
@@ -24,7 +24,7 @@ import { replaceStrings } from "./replaceStrings.js";
|
|
|
24
24
|
import { format } from "./format.js";
|
|
25
25
|
import { minifyCodeInline } from "./minifyCodeInline.js";
|
|
26
26
|
import { minify } from "./minify.js";
|
|
27
|
-
|
|
27
|
+
// src/transformers/index.ts
|
|
28
28
|
/**
|
|
29
29
|
* Run all Maizzle transformers on the rendered HTML.
|
|
30
30
|
*
|
|
@@ -123,7 +123,7 @@ async function runTransformers(html, config, filePath, doctype, tailwindBlocks,
|
|
|
123
123
|
if (enabled("sixHex") && effective.css?.sixHex !== false) dom = sixHexDom(dom);
|
|
124
124
|
if (enabled("addAttributes")) dom = addAttributesDom(dom, effective.html?.attributes);
|
|
125
125
|
if (enabled("filters")) dom = filtersDom(dom, effective.filters);
|
|
126
|
-
if (enabled("baseURL")
|
|
126
|
+
if (enabled("baseURL")) dom = baseDom(dom, effective.url?.base);
|
|
127
127
|
if (enabled("urlQuery") && effective.url?.query && Object.keys(effective.url.query).length > 0) {
|
|
128
128
|
const { _options: queryOptions, ...queryParams } = effective.url.query;
|
|
129
129
|
dom = urlQueryDom(dom, queryParams, queryOptions ?? {});
|
|
@@ -173,7 +173,6 @@ async function runTransformers(html, config, filePath, doctype, tailwindBlocks,
|
|
|
173
173
|
result = minifyCodeInline(result);
|
|
174
174
|
return result;
|
|
175
175
|
}
|
|
176
|
-
//#endregion
|
|
177
176
|
export { runTransformers };
|
|
178
177
|
|
|
179
178
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/transformers/index.ts"],"sourcesContent":["import { parse, serialize } from '../utils/ast/index.ts'\nimport { inlineLinkDom } from './inlineLink.ts'\nimport { tailwindComponent } from './tailwindComponent.ts'\nimport { tailwindcss } from './tailwindcss.ts'\nimport { safeSelectorsDom } from './safeSelectors.ts'\nimport { attributeToStyleDom } from './attributeToStyle.ts'\nimport { inlineCssDom } from './inlineCss.ts'\nimport { msoPlaceholders } from './msoPlaceholders.ts'\nimport { columnWidth } from './columnWidth.ts'\nimport { imgWidthDom } from './imgWidth.ts'\nimport { removeAttributesDom } from './removeAttributes.ts'\nimport { shorthandCssDom } from './shorthandCss.ts'\nimport { sixHexDom } from './sixHex.ts'\nimport { addAttributesDom } from './addAttributes.ts'\nimport { filtersDom } from './filters/index.ts'\nimport { baseDom } from './base.ts'\nimport { entitiesDom } from './entities.ts'\nimport { urlQueryDom } from './urlQuery.ts'\nimport { purgeCssDom } from './purgeCss.ts'\nimport { msoConditionals } from './msoConditionals.ts'\nimport { replaceStrings } from './replaceStrings.ts'\nimport { format } from './format.ts'\nimport { minifyCodeInline } from './minifyCodeInline.ts'\nimport { minify } from './minify.ts'\nimport type { MaizzleConfig } from '../types/config.ts'\nimport type { TailwindBlock } from '../composables/renderContext.ts'\n\n/**\n * Run all Maizzle transformers on the rendered HTML.\n *\n * The HTML is parsed into a DOM once at the start and passed through all\n * DOM-based transformers as a shared `ChildNode[]`. After all DOM transformers\n * complete, the DOM is serialized back to a string exactly once.\n *\n * String-only transformers (those that rely on external tools that require a\n * raw HTML string) then run on the serialized output.\n *\n * Transformers run in a specific order:\n * 0. Inline link stylesheets — replace `<link rel=\"stylesheet\">` with `<style>` tags\n * 1. Tailwind CSS — compile CSS, lower syntax, optimize (cleanup + merge media queries)\n * 2. Safe class names\n * 3. Attribute to style\n * 4. CSS inliner\n * 5. Remove attributes\n * 6. Shorthand CSS\n * 7. Six-digit HEX\n * 8. Add attributes\n * 9. Filters\n * 10. Base URL\n * 11. URL query\n * 11.5 Entities in comment nodes (before purge — protects MSO conditionals)\n * 12. Purge CSS (serializes/parses internally around email-comb)\n * 13. Entities\n * + Vue-generated comments stripped here (on serialized string)\n * 13.5 Outlook placeholders → MSO conditional comments\n * 14. Replace strings\n * 15. Prettify\n * 16. Minify\n */\nexport async function runTransformers(\n html: string,\n config: MaizzleConfig,\n filePath?: string,\n doctype?: string,\n tailwindBlocks?: TailwindBlock[],\n sourceFiles?: string[],\n): Promise<string> {\n /**\n * Whole-pipeline opt-out. `<Outlook>` placeholders still have to\n * become real conditional comments, so that one step always runs.\n */\n if (config.useTransformers === false) return msoConditionals(html)\n\n /**\n * Per-transformer skip map — only honored when useTransformers is an object.\n *\n * A toggle set to `true` *force-enables* its transformer for this run\n * by layering on the matching config slice (e.g. `prettify: true`\n * sets `html.format = true`). This only applies to transformers\n * whose enable flag is a plain boolean — data-driven ones\n * (filters, baseURL, urlQuery, etc.) need actual config\n * values, so a bare `true` for those is a no-op.\n */\n const toggles = typeof config.useTransformers === 'object' ? config.useTransformers : null\n const enabled = (key: keyof NonNullable<typeof toggles>) => toggles?.[key] !== false\n\n let effective = config\n if (toggles) {\n const cssOver: Record<string, unknown> = {}\n const htmlOver: Record<string, unknown> = {}\n if (toggles.inlineCss === true) cssOver.inline = true\n if (toggles.purgeCss === true) cssOver.purge = true\n if (toggles.safeSelectors === true) cssOver.safe = true\n if (toggles.shorthandCss === true) cssOver.shorthand = true\n if (toggles.sixHex === true) cssOver.sixHex = true\n if (toggles.prettify === true) htmlOver.format = true\n if (toggles.minify === true) htmlOver.minify = true\n if (toggles.entities === true) htmlOver.decodeEntities = true\n\n if (Object.keys(cssOver).length || Object.keys(htmlOver).length) {\n effective = {\n ...config,\n css: { ...config.css, ...cssOver },\n html: { ...config.html, ...htmlOver },\n }\n }\n }\n\n // Parse once — all DOM transformers share this array\n let dom = parse(html)\n\n // 0. Inline <link> stylesheets\n dom = await inlineLinkDom(dom, filePath)\n\n // 0.5. <Tailwind> component — compile per-block scoped CSS, inject into <head>\n if (tailwindBlocks?.length) {\n dom = await tailwindComponent(dom, tailwindBlocks, effective, filePath, sourceFiles)\n }\n\n // 1. Tailwind CSS — always runs first\n dom = await tailwindcss(dom, effective, filePath, sourceFiles)\n\n // 2. Safe class names\n if (enabled('safeSelectors')) dom = safeSelectorsDom(dom, effective.css)\n\n // 3. Attribute to style\n if (enabled('attributeToStyle') && typeof effective.css?.inline === 'object' && effective.css.inline.attributeToStyle) {\n dom = attributeToStyleDom(dom, effective.css.inline.attributeToStyle)\n }\n\n // 4. CSS inliner (serializes/parses internally around juice)\n if (enabled('inlineCss') && effective.css?.inline) {\n const inlineOptions = typeof effective.css.inline === 'object' ? effective.css.inline : {}\n dom = inlineCssDom(dom, inlineOptions)\n }\n\n // 4.5. Resolve MSO placeholders (table width + td style) from inlined CSS\n dom = msoPlaceholders(dom)\n\n // 4.6. Resolve Column min-width placeholders from nearest sized ancestor\n dom = columnWidth(dom)\n\n // 4.7. Backfill width on <Img> images that inherit their parent's width\n dom = imgWidthDom(dom)\n\n // 5. Remove attributes\n if (enabled('removeAttributes')) {\n const removeRules = effective.html?.attributes?.remove\n dom = removeAttributesDom(dom, Array.isArray(removeRules) ? removeRules : [])\n }\n\n // 6. Shorthand CSS\n if (enabled('shorthandCss') && effective.css?.shorthand) {\n const shorthandOptions = typeof effective.css.shorthand === 'object' ? effective.css.shorthand : {}\n dom = shorthandCssDom(dom, shorthandOptions)\n }\n\n // 7. Six-digit HEX\n if (enabled('sixHex') && effective.css?.sixHex !== false) dom = sixHexDom(dom)\n\n // 8. Add attributes\n if (enabled('addAttributes')) dom = addAttributesDom(dom, effective.html?.attributes)\n\n // 9. Filters\n if (enabled('filters')) dom = filtersDom(dom, effective.filters)\n\n // 10. Base URL (serializes/parses internally for VML/MSO regex passes)\n if (enabled('baseURL') && effective.url?.base) dom = baseDom(dom, effective.url.base)\n\n // 11. URL query\n if (enabled('urlQuery') && effective.url?.query && Object.keys(effective.url.query).length > 0) {\n const { _options: queryOptions, ...queryParams } = effective.url.query as Record<string, unknown>\n dom = urlQueryDom(dom, queryParams, (queryOptions ?? {}) as import('../types/config.ts').UrlQueryOptions)\n }\n\n /**\n * 11.5. Encode entities in comment nodes before purge/minify. Raw\n * invisible chars (e.g. U+00A0 from Vue decoding at compile\n * time) inside MSO conditionals make email-comb remove the whole\n * \"whitespace-only\" conditional and html-crush collapse the chars.\n * Text nodes are skipped here — purge's internal parse round-trip\n * would decode them again — comment data survives un-decoded.\n */\n if (enabled('entities')) dom = entitiesDom(dom, effective.html?.decodeEntities, { text: false })\n\n // 12. Remove unused CSS (serializes/parses internally around email-comb)\n if (enabled('purgeCss') && effective.css?.purge) {\n const purgeOptions = typeof effective.css.purge === 'object' ? effective.css.purge : {}\n dom = purgeCssDom(dom, purgeOptions)\n }\n\n // 13. Entities\n if (enabled('entities')) dom = entitiesDom(dom, effective.html?.decodeEntities)\n\n // Serialize once — remaining transformers operate on the HTML string\n const isXhtml = doctype ? /xhtml/i.test(doctype) : false\n let result = serialize(dom, { selfClosingTags: isXhtml })\n\n // 13.5. Collapse <Outlook> placeholders into MSO conditional comments\n result = msoConditionals(result)\n\n // 14. Replace strings\n if (enabled('replaceStrings')) result = replaceStrings(result, effective)\n\n // 15. Format — skipped when `minify` is enabled\n const minifyWillRun = enabled('minify') && !!effective.html?.minify\n if (enabled('prettify') && !minifyWillRun && effective.html?.format) {\n const formatOptions = typeof effective.html.format === 'object' ? effective.html.format : {}\n result = await format(result, formatOptions)\n }\n\n // 16. Minify\n if (enabled('minify') && effective.html?.minify) {\n const minifyOptions = typeof effective.html.minify === 'object' ? effective.html.minify : {}\n result = minify(result, minifyOptions)\n }\n\n /**\n * Strip self-closing slashes for HTML5 doctypes, but preserve content\n * inside MSO conditional comments (XML-ish, case/syntax sensitive).\n * MUST run BEFORE minifyCodeInline: at this point, CodeInline's\n * shiki output is still marker-encoded (§MZLT§/§MZGT§), so any\n * ` />` in the highlighted source code (e.g. a Vue self-close\n * tag) hasn't materialized yet and can't be mistakenly\n * stripped from inside a `<code>` element.\n */\n if (!isXhtml) {\n result = result.replace(\n /<!--\\[if [^\\]]*\\]>[\\s\\S]*?<!\\[endif\\]-->|( \\/>)/g,\n (match, selfClose) => selfClose ? '>' : match,\n )\n }\n\n /**\n * 16.5. Strip whitespace inside `data-minify-inline` markers (CodeInline's\n * Shiki output, etc.). Runs after format/minify so it cleans up the\n * pretty-printer's indentation between sibling tags.\n */\n result = minifyCodeInline(result)\n\n return result\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/transformers/index.ts"],"sourcesContent":["import { parse, serialize } from '../utils/ast/index.ts'\nimport { inlineLinkDom } from './inlineLink.ts'\nimport { tailwindComponent } from './tailwindComponent.ts'\nimport { tailwindcss } from './tailwindcss.ts'\nimport { safeSelectorsDom } from './safeSelectors.ts'\nimport { attributeToStyleDom } from './attributeToStyle.ts'\nimport { inlineCssDom } from './inlineCss.ts'\nimport { msoPlaceholders } from './msoPlaceholders.ts'\nimport { columnWidth } from './columnWidth.ts'\nimport { imgWidthDom } from './imgWidth.ts'\nimport { removeAttributesDom } from './removeAttributes.ts'\nimport { shorthandCssDom } from './shorthandCss.ts'\nimport { sixHexDom } from './sixHex.ts'\nimport { addAttributesDom } from './addAttributes.ts'\nimport { filtersDom } from './filters/index.ts'\nimport { baseDom } from './base.ts'\nimport { entitiesDom } from './entities.ts'\nimport { urlQueryDom } from './urlQuery.ts'\nimport { purgeCssDom } from './purgeCss.ts'\nimport { msoConditionals } from './msoConditionals.ts'\nimport { replaceStrings } from './replaceStrings.ts'\nimport { format } from './format.ts'\nimport { minifyCodeInline } from './minifyCodeInline.ts'\nimport { minify } from './minify.ts'\nimport type { MaizzleConfig } from '../types/config.ts'\nimport type { TailwindBlock } from '../composables/renderContext.ts'\n\n/**\n * Run all Maizzle transformers on the rendered HTML.\n *\n * The HTML is parsed into a DOM once at the start and passed through all\n * DOM-based transformers as a shared `ChildNode[]`. After all DOM transformers\n * complete, the DOM is serialized back to a string exactly once.\n *\n * String-only transformers (those that rely on external tools that require a\n * raw HTML string) then run on the serialized output.\n *\n * Transformers run in a specific order:\n * 0. Inline link stylesheets — replace `<link rel=\"stylesheet\">` with `<style>` tags\n * 1. Tailwind CSS — compile CSS, lower syntax, optimize (cleanup + merge media queries)\n * 2. Safe class names\n * 3. Attribute to style\n * 4. CSS inliner\n * 5. Remove attributes\n * 6. Shorthand CSS\n * 7. Six-digit HEX\n * 8. Add attributes\n * 9. Filters\n * 10. Base URL\n * 11. URL query\n * 11.5 Entities in comment nodes (before purge — protects MSO conditionals)\n * 12. Purge CSS (serializes/parses internally around email-comb)\n * 13. Entities\n * + Vue-generated comments stripped here (on serialized string)\n * 13.5 Outlook placeholders → MSO conditional comments\n * 14. Replace strings\n * 15. Prettify\n * 16. Minify\n */\nexport async function runTransformers(\n html: string,\n config: MaizzleConfig,\n filePath?: string,\n doctype?: string,\n tailwindBlocks?: TailwindBlock[],\n sourceFiles?: string[],\n): Promise<string> {\n /**\n * Whole-pipeline opt-out. `<Outlook>` placeholders still have to\n * become real conditional comments, so that one step always runs.\n */\n if (config.useTransformers === false) return msoConditionals(html)\n\n /**\n * Per-transformer skip map — only honored when useTransformers is an object.\n *\n * A toggle set to `true` *force-enables* its transformer for this run\n * by layering on the matching config slice (e.g. `prettify: true`\n * sets `html.format = true`). This only applies to transformers\n * whose enable flag is a plain boolean — data-driven ones\n * (filters, baseURL, urlQuery, etc.) need actual config\n * values, so a bare `true` for those is a no-op.\n */\n const toggles = typeof config.useTransformers === 'object' ? config.useTransformers : null\n const enabled = (key: keyof NonNullable<typeof toggles>) => toggles?.[key] !== false\n\n let effective = config\n if (toggles) {\n const cssOver: Record<string, unknown> = {}\n const htmlOver: Record<string, unknown> = {}\n if (toggles.inlineCss === true) cssOver.inline = true\n if (toggles.purgeCss === true) cssOver.purge = true\n if (toggles.safeSelectors === true) cssOver.safe = true\n if (toggles.shorthandCss === true) cssOver.shorthand = true\n if (toggles.sixHex === true) cssOver.sixHex = true\n if (toggles.prettify === true) htmlOver.format = true\n if (toggles.minify === true) htmlOver.minify = true\n if (toggles.entities === true) htmlOver.decodeEntities = true\n\n if (Object.keys(cssOver).length || Object.keys(htmlOver).length) {\n effective = {\n ...config,\n css: { ...config.css, ...cssOver },\n html: { ...config.html, ...htmlOver },\n }\n }\n }\n\n // Parse once — all DOM transformers share this array\n let dom = parse(html)\n\n // 0. Inline <link> stylesheets\n dom = await inlineLinkDom(dom, filePath)\n\n // 0.5. <Tailwind> component — compile per-block scoped CSS, inject into <head>\n if (tailwindBlocks?.length) {\n dom = await tailwindComponent(dom, tailwindBlocks, effective, filePath, sourceFiles)\n }\n\n // 1. Tailwind CSS — always runs first\n dom = await tailwindcss(dom, effective, filePath, sourceFiles)\n\n // 2. Safe class names\n if (enabled('safeSelectors')) dom = safeSelectorsDom(dom, effective.css)\n\n // 3. Attribute to style\n if (enabled('attributeToStyle') && typeof effective.css?.inline === 'object' && effective.css.inline.attributeToStyle) {\n dom = attributeToStyleDom(dom, effective.css.inline.attributeToStyle)\n }\n\n // 4. CSS inliner (serializes/parses internally around juice)\n if (enabled('inlineCss') && effective.css?.inline) {\n const inlineOptions = typeof effective.css.inline === 'object' ? effective.css.inline : {}\n dom = inlineCssDom(dom, inlineOptions)\n }\n\n // 4.5. Resolve MSO placeholders (table width + td style) from inlined CSS\n dom = msoPlaceholders(dom)\n\n // 4.6. Resolve Column min-width placeholders from nearest sized ancestor\n dom = columnWidth(dom)\n\n // 4.7. Backfill width on <Img> images that inherit their parent's width\n dom = imgWidthDom(dom)\n\n // 5. Remove attributes\n if (enabled('removeAttributes')) {\n const removeRules = effective.html?.attributes?.remove\n dom = removeAttributesDom(dom, Array.isArray(removeRules) ? removeRules : [])\n }\n\n // 6. Shorthand CSS\n if (enabled('shorthandCss') && effective.css?.shorthand) {\n const shorthandOptions = typeof effective.css.shorthand === 'object' ? effective.css.shorthand : {}\n dom = shorthandCssDom(dom, shorthandOptions)\n }\n\n // 7. Six-digit HEX\n if (enabled('sixHex') && effective.css?.sixHex !== false) dom = sixHexDom(dom)\n\n // 8. Add attributes\n if (enabled('addAttributes')) dom = addAttributesDom(dom, effective.html?.attributes)\n\n // 9. Filters\n if (enabled('filters')) dom = filtersDom(dom, effective.filters)\n\n // 10. Base URL (serializes/parses internally for VML/MSO regex passes)\n if (enabled('baseURL')) dom = baseDom(dom, effective.url?.base)\n\n // 11. URL query\n if (enabled('urlQuery') && effective.url?.query && Object.keys(effective.url.query).length > 0) {\n const { _options: queryOptions, ...queryParams } = effective.url.query as Record<string, unknown>\n dom = urlQueryDom(dom, queryParams, (queryOptions ?? {}) as import('../types/config.ts').UrlQueryOptions)\n }\n\n /**\n * 11.5. Encode entities in comment nodes before purge/minify. Raw\n * invisible chars (e.g. U+00A0 from Vue decoding at compile\n * time) inside MSO conditionals make email-comb remove the whole\n * \"whitespace-only\" conditional and html-crush collapse the chars.\n * Text nodes are skipped here — purge's internal parse round-trip\n * would decode them again — comment data survives un-decoded.\n */\n if (enabled('entities')) dom = entitiesDom(dom, effective.html?.decodeEntities, { text: false })\n\n // 12. Remove unused CSS (serializes/parses internally around email-comb)\n if (enabled('purgeCss') && effective.css?.purge) {\n const purgeOptions = typeof effective.css.purge === 'object' ? effective.css.purge : {}\n dom = purgeCssDom(dom, purgeOptions)\n }\n\n // 13. Entities\n if (enabled('entities')) dom = entitiesDom(dom, effective.html?.decodeEntities)\n\n // Serialize once — remaining transformers operate on the HTML string\n const isXhtml = doctype ? /xhtml/i.test(doctype) : false\n let result = serialize(dom, { selfClosingTags: isXhtml })\n\n // 13.5. Collapse <Outlook> placeholders into MSO conditional comments\n result = msoConditionals(result)\n\n // 14. Replace strings\n if (enabled('replaceStrings')) result = replaceStrings(result, effective)\n\n // 15. Format — skipped when `minify` is enabled\n const minifyWillRun = enabled('minify') && !!effective.html?.minify\n if (enabled('prettify') && !minifyWillRun && effective.html?.format) {\n const formatOptions = typeof effective.html.format === 'object' ? effective.html.format : {}\n result = await format(result, formatOptions)\n }\n\n // 16. Minify\n if (enabled('minify') && effective.html?.minify) {\n const minifyOptions = typeof effective.html.minify === 'object' ? effective.html.minify : {}\n result = minify(result, minifyOptions)\n }\n\n /**\n * Strip self-closing slashes for HTML5 doctypes, but preserve content\n * inside MSO conditional comments (XML-ish, case/syntax sensitive).\n * MUST run BEFORE minifyCodeInline: at this point, CodeInline's\n * shiki output is still marker-encoded (§MZLT§/§MZGT§), so any\n * ` />` in the highlighted source code (e.g. a Vue self-close\n * tag) hasn't materialized yet and can't be mistakenly\n * stripped from inside a `<code>` element.\n */\n if (!isXhtml) {\n result = result.replace(\n /<!--\\[if [^\\]]*\\]>[\\s\\S]*?<!\\[endif\\]-->|( \\/>)/g,\n (match, selfClose) => selfClose ? '>' : match,\n )\n }\n\n /**\n * 16.5. Strip whitespace inside `data-minify-inline` markers (CodeInline's\n * Shiki output, etc.). Runs after format/minify so it cleans up the\n * pretty-printer's indentation between sibling tags.\n */\n result = minifyCodeInline(result)\n\n return result\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ChildNode } from "domhandler";
|
|
2
2
|
import juice from "juice";
|
|
3
|
-
//#region src/transformers/inlineCss.d.ts
|
|
4
3
|
type JuiceOptions = NonNullable<Parameters<typeof juice>[1]>;
|
|
5
4
|
/**
|
|
6
5
|
* Options for the `inlineCss` transformer. Accepts every Juice option plus a
|
|
@@ -79,5 +78,4 @@ export declare function inlineCss(html: string, options?: InlineCssOptions): str
|
|
|
79
78
|
* serialize/parse round-trips when chained with other transformers.
|
|
80
79
|
*/
|
|
81
80
|
export declare function inlineCssDom(dom: ChildNode[], options?: InlineCssOptions): ChildNode[];
|
|
82
|
-
//#endregion
|
|
83
81
|
//# sourceMappingURL=inlineCss.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inlineCss.d.ts","names":[],"sources":["../../src/transformers/inlineCss.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"inlineCss.d.ts","names":[],"sources":["../../src/transformers/inlineCss.ts"],"mappings":";;KAMK,eAAe,YAAY,kBAAkB;;;;;iBAMjC,yBAAyB;;;;;;EAMxC;;;;;;;EAOA;;;;;EAKA;;;;;EAKA,mBAAmB;;;;;EAKnB;;;;;;;EAOA;;;;;;;EAOA;;;;;EAKA,aAAa;IAAiB;IAAe;;;;;;;;;;;;;;;;;wBAiB/B,UAAU,cAAc,UAAS;;;;;;wBASjC,aAAa,KAAK,aAAa,UAAS,mBAAwB"}
|
|
@@ -3,7 +3,7 @@ import { walk } from "../utils/ast/walker.js";
|
|
|
3
3
|
import { serialize } from "../utils/ast/serializer.js";
|
|
4
4
|
import "../utils/ast/index.js";
|
|
5
5
|
import juice from "juice";
|
|
6
|
-
|
|
6
|
+
// src/transformers/inlineCss.ts
|
|
7
7
|
/** Juice's built-in code blocks, captured before any per-call mutation. */
|
|
8
8
|
const DEFAULT_CODE_BLOCKS = { ...juice.codeBlocks };
|
|
9
9
|
/**
|
|
@@ -107,7 +107,6 @@ function inlineCssDom(dom, options = {}) {
|
|
|
107
107
|
});
|
|
108
108
|
return result;
|
|
109
109
|
}
|
|
110
|
-
//#endregion
|
|
111
110
|
export { inlineCss, inlineCssDom };
|
|
112
111
|
|
|
113
112
|
//# sourceMappingURL=inlineCss.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ChildNode } from "domhandler";
|
|
2
|
-
//#region src/transformers/inlineLink.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Inline `<link rel="stylesheet">` tags as `<style>` tags.
|
|
5
4
|
*
|
|
@@ -29,5 +28,4 @@ export declare function inlineLink(html: string, filePath?: string): Promise<str
|
|
|
29
28
|
* serialize/parse round-trips when chained with other transformers.
|
|
30
29
|
*/
|
|
31
30
|
export declare function inlineLinkDom(dom: ChildNode[], filePath?: string): Promise<ChildNode[]>;
|
|
32
|
-
//#endregion
|
|
33
31
|
//# sourceMappingURL=inlineLink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inlineLink.d.ts","names":[],"sources":["../../src/transformers/inlineLink.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"inlineLink.d.ts","names":[],"sources":["../../src/transformers/inlineLink.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;wBA2BsB,WAAW,cAAc,oBAAoB;;;;;;wBAS7C,cAAc,KAAK,aAAa,oBAAoB,QAAQ"}
|
|
@@ -4,7 +4,7 @@ import { serialize } from "../utils/ast/serializer.js";
|
|
|
4
4
|
import "../utils/ast/index.js";
|
|
5
5
|
import { readFileSync } from "node:fs";
|
|
6
6
|
import { dirname, resolve } from "node:path";
|
|
7
|
-
|
|
7
|
+
// src/transformers/inlineLink.ts
|
|
8
8
|
/**
|
|
9
9
|
* Inline `<link rel="stylesheet">` tags as `<style>` tags.
|
|
10
10
|
*
|
|
@@ -95,7 +95,6 @@ async function inlineLinkDom(dom, filePath) {
|
|
|
95
95
|
}
|
|
96
96
|
return dom;
|
|
97
97
|
}
|
|
98
|
-
//#endregion
|
|
99
98
|
export { inlineLink, inlineLinkDom };
|
|
100
99
|
|
|
101
100
|
//# sourceMappingURL=inlineLink.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Opts, Opts as MinifyOptions } from "html-crush";
|
|
2
|
-
//#region src/transformers/minify.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Minify an HTML string using `html-crush`. Maizzle's only default that
|
|
5
4
|
* differs from html-crush's own defaults is `removeLineBreaks: true`.
|
|
@@ -15,6 +14,5 @@ import { Opts, Opts as MinifyOptions } from "html-crush";
|
|
|
15
14
|
* const tight = minify('<p> hello </p>', { removeIndentations: true })
|
|
16
15
|
*/
|
|
17
16
|
export declare function minify(html: string, options?: Partial<Opts>): string;
|
|
18
|
-
//#endregion
|
|
19
17
|
export type { MinifyOptions };
|
|
20
18
|
//# sourceMappingURL=minify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minify.d.ts","names":["HtmlCrushOptions"],"sources":["../../src/transformers/minify.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"minify.d.ts","names":["HtmlCrushOptions"],"sources":["../../src/transformers/minify.ts"],"mappings":";;;;;;;;;;;;;;;wBAwBgB,OAAO,cAAc,UAAS,QAAQA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defu as defu$1 } from "defu";
|
|
2
2
|
import { crush } from "html-crush";
|
|
3
|
-
|
|
3
|
+
// src/transformers/minify.ts
|
|
4
4
|
const DEFAULT_OPTIONS = { removeLineBreaks: true };
|
|
5
5
|
/**
|
|
6
6
|
* Minify an HTML string using `html-crush`. Maizzle's only default that
|
|
@@ -20,7 +20,6 @@ function minify(html, options = {}) {
|
|
|
20
20
|
const merged = defu$1(options, DEFAULT_OPTIONS);
|
|
21
21
|
return crush(html, merged).result;
|
|
22
22
|
}
|
|
23
|
-
//#endregion
|
|
24
23
|
export { minify };
|
|
25
24
|
|
|
26
25
|
//# sourceMappingURL=minify.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/transformers/minifyCodeInline.d.ts
|
|
2
1
|
/**
|
|
3
2
|
* Restore HTML inside elements marked `data-minify-inline`, then strip the
|
|
4
3
|
* marker attribute and trim formatter-injected whitespace.
|
|
@@ -24,5 +23,4 @@
|
|
|
24
23
|
* the same formatter-vs-inline-structure problem can opt in.
|
|
25
24
|
*/
|
|
26
25
|
export declare function minifyCodeInline(html: string): string;
|
|
27
|
-
//#endregion
|
|
28
26
|
//# sourceMappingURL=minifyCodeInline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyCodeInline.d.ts","names":[],"sources":["../../src/transformers/minifyCodeInline.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"minifyCodeInline.d.ts","names":[],"sources":["../../src/transformers/minifyCodeInline.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;wBAwBgB,iBAAiB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/transformers/minifyCodeInline.ts
|
|
2
2
|
/**
|
|
3
3
|
* Restore HTML inside elements marked `data-minify-inline`, then strip the
|
|
4
4
|
* marker attribute and trim formatter-injected whitespace.
|
|
@@ -30,7 +30,6 @@ function minifyCodeInline(html) {
|
|
|
30
30
|
return `${cleanedAttrs ? `<${tag} ${cleanedAttrs}>` : `<${tag}>`}${contents.replace(/§MZLT§/g, "<").replace(/§MZGT§/g, ">").trim()}</${tag}>`;
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
-
//#endregion
|
|
34
33
|
export { minifyCodeInline };
|
|
35
34
|
|
|
36
35
|
//# sourceMappingURL=minifyCodeInline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msoConditionals.d.ts","names":[],"sources":["../../src/transformers/msoConditionals.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"msoConditionals.d.ts","names":[],"sources":["../../src/transformers/msoConditionals.ts"],"mappings":"A,wBAkBgB,gBAAgB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/transformers/msoConditionals.ts
|
|
2
2
|
/**
|
|
3
3
|
* Resolve the placeholder comments emitted by `<Outlook>` into real MSO
|
|
4
4
|
* conditional comments.
|
|
@@ -19,7 +19,6 @@ const RE_CLOSE = /<!--\[if mso\]>__MAIZZLE_MSO_CLOSE__<!\[endif\]-->/g;
|
|
|
19
19
|
function msoConditionals(html) {
|
|
20
20
|
return html.replace(RE_OPEN, "<!--[if $1]>").replace(RE_CLOSE, "<![endif]-->");
|
|
21
21
|
}
|
|
22
|
-
//#endregion
|
|
23
22
|
export { msoConditionals };
|
|
24
23
|
|
|
25
24
|
//# sourceMappingURL=msoConditionals.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ChildNode } from "domhandler";
|
|
2
|
-
//#region src/transformers/msoPlaceholders.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Resolve all `__MAIZZLE_MSO*__` placeholders inside MSO conditional comments
|
|
5
4
|
* by reading inlined style + `data-*` markers on the paired elements.
|
|
@@ -27,5 +26,4 @@ import { ChildNode } from "domhandler";
|
|
|
27
26
|
* carries both marker kinds, so one element visit fills both maps.
|
|
28
27
|
*/
|
|
29
28
|
export declare function msoPlaceholders(dom: ChildNode[]): ChildNode[];
|
|
30
|
-
//#endregion
|
|
31
29
|
//# sourceMappingURL=msoPlaceholders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msoPlaceholders.d.ts","names":[],"sources":["../../src/transformers/msoPlaceholders.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"msoPlaceholders.d.ts","names":[],"sources":["../../src/transformers/msoPlaceholders.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;wBA8CgB,gBAAgB,KAAK,cAAc"}
|
|
@@ -2,7 +2,7 @@ import { walk } from "../utils/ast/walker.js";
|
|
|
2
2
|
import "../utils/ast/index.js";
|
|
3
3
|
import { horizontalBorderPx } from "../utils/cssBox.js";
|
|
4
4
|
import safeParser from "postcss-safe-parser";
|
|
5
|
-
|
|
5
|
+
// src/transformers/msoPlaceholders.ts
|
|
6
6
|
const RE_MAX_WIDTH = /(?:^|;\s*)max-width:\s*([^;]+)/i;
|
|
7
7
|
const RE_WIDTH = /(?:^|;\s*)width:\s*([^;]+)/i;
|
|
8
8
|
const RE_PERCENT = /^[\d.]+%$/;
|
|
@@ -108,7 +108,6 @@ function msoPlaceholders(dom) {
|
|
|
108
108
|
});
|
|
109
109
|
return dom;
|
|
110
110
|
}
|
|
111
|
-
//#endregion
|
|
112
111
|
export { msoPlaceholders };
|
|
113
112
|
|
|
114
113
|
//# sourceMappingURL=msoPlaceholders.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ChildNode } from "domhandler";
|
|
2
2
|
import { Opts } from "email-comb";
|
|
3
|
-
//#region src/transformers/purgeCss.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Options for the `purgeCss` transformer.
|
|
6
5
|
*/
|
|
@@ -37,5 +36,4 @@ export declare function purgeCss(html: string, options?: PurgeCssOptions): strin
|
|
|
37
36
|
* serialize/parse round-trips when chained with other transformers.
|
|
38
37
|
*/
|
|
39
38
|
export declare function purgeCssDom(dom: ChildNode[], options?: PurgeCssOptions): ChildNode[];
|
|
40
|
-
//#endregion
|
|
41
39
|
//# sourceMappingURL=purgeCss.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purgeCss.d.ts","names":["CombOptions"],"sources":["../../src/transformers/purgeCss.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"purgeCss.d.ts","names":["CombOptions"],"sources":["../../src/transformers/purgeCss.ts"],"mappings":";;;;;iBAsCiB,wBAAwB,QAAQ,KAAKA;;;;;;EAMpD;;;;;;;;;;;;;;;;;;;;wBAqBc,SAAS,cAAc,UAAS;;;;;;wBAShC,YAAY,KAAK,aAAa,UAAS,kBAAuB"}
|
|
@@ -6,7 +6,7 @@ import { defu as defu$1 } from "defu";
|
|
|
6
6
|
import safeParser from "postcss-safe-parser";
|
|
7
7
|
import { selectAll } from "css-select";
|
|
8
8
|
import { comb } from "email-comb";
|
|
9
|
-
|
|
9
|
+
// src/transformers/purgeCss.ts
|
|
10
10
|
const DEFAULT_SAFELIST = [
|
|
11
11
|
"*body*",
|
|
12
12
|
".gmail*",
|
|
@@ -201,7 +201,6 @@ function deepPurge(dom, safelist) {
|
|
|
201
201
|
});
|
|
202
202
|
return dom;
|
|
203
203
|
}
|
|
204
|
-
//#endregion
|
|
205
204
|
export { purgeCss, purgeCssDom };
|
|
206
205
|
|
|
207
206
|
//# sourceMappingURL=purgeCss.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ChildNode } from "domhandler";
|
|
2
|
-
//#region src/transformers/removeAttributes.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Single attribute-removal rule.
|
|
5
4
|
*/
|
|
@@ -48,5 +47,4 @@ export declare function removeAttributes(html: string, attributes?: RemoveAttrib
|
|
|
48
47
|
* serialize/parse round-trips when chained with other transformers.
|
|
49
48
|
*/
|
|
50
49
|
export declare function removeAttributesDom(dom: ChildNode[], attributes?: RemoveAttributeOption[]): ChildNode[];
|
|
51
|
-
//#endregion
|
|
52
50
|
//# sourceMappingURL=removeAttributes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeAttributes.d.ts","names":[],"sources":["../../src/transformers/removeAttributes.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"removeAttributes.d.ts","names":[],"sources":["../../src/transformers/removeAttributes.ts"],"mappings":";;;;iBAMiB;;EAEf;;;;;;;EAOA,iBAAiB;;;;;;YAOP,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;wBAwB7B,iBAAiB,cAAc,aAAY;;;;;;wBAS3C,oBAAoB,KAAK,aAAa,aAAY,0BAA+B"}
|
|
@@ -2,7 +2,7 @@ import { parse } from "../utils/ast/parser.js";
|
|
|
2
2
|
import { walk } from "../utils/ast/walker.js";
|
|
3
3
|
import { serialize } from "../utils/ast/serializer.js";
|
|
4
4
|
import "../utils/ast/index.js";
|
|
5
|
-
|
|
5
|
+
// src/transformers/removeAttributes.ts
|
|
6
6
|
/**
|
|
7
7
|
* Remove HTML attributes from elements.
|
|
8
8
|
*
|
|
@@ -66,7 +66,6 @@ function removeAttributesDom(dom, attributes = []) {
|
|
|
66
66
|
});
|
|
67
67
|
return dom;
|
|
68
68
|
}
|
|
69
|
-
//#endregion
|
|
70
69
|
export { removeAttributes, removeAttributesDom };
|
|
71
70
|
|
|
72
71
|
//# sourceMappingURL=removeAttributes.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { MaizzleConfig } from "../types/config.js";
|
|
2
|
-
//#region src/transformers/replaceStrings.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Replace strings transformer.
|
|
5
4
|
*
|
|
@@ -10,5 +9,4 @@ import { MaizzleConfig } from "../types/config.js";
|
|
|
10
9
|
* Character classes must be escaped in keys, e.g. `\\s` for `\s`.
|
|
11
10
|
*/
|
|
12
11
|
export declare function replaceStrings(html: string, config?: MaizzleConfig): string;
|
|
13
|
-
//#endregion
|
|
14
12
|
//# sourceMappingURL=replaceStrings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replaceStrings.d.ts","names":[],"sources":["../../src/transformers/replaceStrings.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"replaceStrings.d.ts","names":[],"sources":["../../src/transformers/replaceStrings.ts"],"mappings":";;;;;;;;;;wBAWgB,eAAe,cAAc,SAAQ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/transformers/replaceStrings.ts
|
|
2
2
|
/**
|
|
3
3
|
* Replace strings transformer.
|
|
4
4
|
*
|
|
@@ -13,7 +13,6 @@ function replaceStrings(html, config = {}) {
|
|
|
13
13
|
if (!replacements || Object.keys(replacements).length === 0) return html;
|
|
14
14
|
return Object.entries(replacements).reduce((result, [pattern, replacement]) => result.replace(new RegExp(pattern, "gi"), replacement), html);
|
|
15
15
|
}
|
|
16
|
-
//#endregion
|
|
17
16
|
export { replaceStrings };
|
|
18
17
|
|
|
19
18
|
//# sourceMappingURL=replaceStrings.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CssConfig } from "../types/config.js";
|
|
2
2
|
import { ChildNode } from "domhandler";
|
|
3
|
-
//#region src/transformers/safeSelectors.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Safe selectors transformer.
|
|
6
5
|
*
|
|
@@ -31,5 +30,4 @@ export declare function safeSelectors(html: string, config?: CssConfig): string;
|
|
|
31
30
|
* serialize/parse round-trips when chained with other transformers.
|
|
32
31
|
*/
|
|
33
32
|
export declare function safeSelectorsDom(dom: ChildNode[], config?: CssConfig): ChildNode[];
|
|
34
|
-
//#endregion
|
|
35
33
|
//# sourceMappingURL=safeSelectors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safeSelectors.d.ts","names":[],"sources":["../../src/transformers/safeSelectors.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"safeSelectors.d.ts","names":[],"sources":["../../src/transformers/safeSelectors.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;wBA2HgB,cAAc,cAAc,SAAQ;;;;;;wBASpC,iBAAiB,KAAK,aAAa,SAAQ,YAAiB"}
|
|
@@ -4,7 +4,7 @@ import { serialize } from "../utils/ast/serializer.js";
|
|
|
4
4
|
import "../utils/ast/index.js";
|
|
5
5
|
import postcss from "postcss";
|
|
6
6
|
import safeParser from "postcss-safe-parser";
|
|
7
|
-
|
|
7
|
+
// src/transformers/safeSelectors.ts
|
|
8
8
|
const DEFAULT_REPLACEMENTS = {
|
|
9
9
|
":": "-",
|
|
10
10
|
"/": "-",
|
|
@@ -127,7 +127,6 @@ function safeSelectorsDom(dom, config = {}) {
|
|
|
127
127
|
});
|
|
128
128
|
return dom;
|
|
129
129
|
}
|
|
130
|
-
//#endregion
|
|
131
130
|
export { safeSelectors, safeSelectorsDom };
|
|
132
131
|
|
|
133
132
|
//# sourceMappingURL=safeSelectors.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ChildNode } from "domhandler";
|
|
2
|
-
//#region src/transformers/shorthandCss.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Options for the `shorthandCss` transformer.
|
|
5
4
|
*/
|
|
@@ -19,5 +18,4 @@ export declare function shorthandCss(html: string, options?: ShorthandCssOptions
|
|
|
19
18
|
* serialize/parse round-trips when chained with other transformers.
|
|
20
19
|
*/
|
|
21
20
|
export declare function shorthandCssDom(dom: ChildNode[], options?: ShorthandCssOptions): ChildNode[];
|
|
22
|
-
//#endregion
|
|
23
21
|
//# sourceMappingURL=shorthandCss.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shorthandCss.d.ts","names":[],"sources":["../../src/transformers/shorthandCss.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"shorthandCss.d.ts","names":[],"sources":["../../src/transformers/shorthandCss.ts"],"mappings":";;;;iBASiB;;;;;;;EAOf;;wBAwEc,aAAa,cAAc,UAAS;;;;;;wBASpC,gBAAgB,KAAK,aAAa,UAAS,sBAA2B"}
|
|
@@ -5,7 +5,7 @@ import "../utils/ast/index.js";
|
|
|
5
5
|
import postcss, { list } from "postcss";
|
|
6
6
|
import safeParser from "postcss-safe-parser";
|
|
7
7
|
import mergeLonghand from "postcss-merge-longhand";
|
|
8
|
-
|
|
8
|
+
// src/transformers/shorthandCss.ts
|
|
9
9
|
/**
|
|
10
10
|
* Rewrite longhand CSS inside inline `style` attributes with shorthand
|
|
11
11
|
* syntax. Works with margin, padding, and border when all sides are
|
|
@@ -126,7 +126,6 @@ function shorthandCssDom(dom, options = {}) {
|
|
|
126
126
|
});
|
|
127
127
|
return dom;
|
|
128
128
|
}
|
|
129
|
-
//#endregion
|
|
130
129
|
export { shorthandCss, shorthandCssDom };
|
|
131
130
|
|
|
132
131
|
//# sourceMappingURL=shorthandCss.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ChildNode } from "domhandler";
|
|
2
|
-
//#region src/transformers/sixHex.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Convert 3-digit HEX color codes to 6-digit in `bgcolor` and `color`
|
|
5
4
|
* attributes, for better email client compatibility.
|
|
@@ -19,5 +18,4 @@ export declare function sixHex(html: string): string;
|
|
|
19
18
|
* serialize/parse round-trips when chained with other transformers.
|
|
20
19
|
*/
|
|
21
20
|
export declare function sixHexDom(dom: ChildNode[]): ChildNode[];
|
|
22
|
-
//#endregion
|
|
23
21
|
//# sourceMappingURL=sixHex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sixHex.d.ts","names":[],"sources":["../../src/transformers/sixHex.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sixHex.d.ts","names":[],"sources":["../../src/transformers/sixHex.ts"],"mappings":";;;;;;;;;;;;;wBAkBgB,OAAO;;;;;;wBASP,UAAU,KAAK,cAAc"}
|
|
@@ -3,7 +3,7 @@ import { walk } from "../utils/ast/walker.js";
|
|
|
3
3
|
import { serialize } from "../utils/ast/serializer.js";
|
|
4
4
|
import "../utils/ast/index.js";
|
|
5
5
|
import { conv } from "color-shorthand-hex-to-six-digit";
|
|
6
|
-
|
|
6
|
+
// src/transformers/sixHex.ts
|
|
7
7
|
const targets = /* @__PURE__ */ new Set(["bgcolor", "color"]);
|
|
8
8
|
/**
|
|
9
9
|
* Convert 3-digit HEX color codes to 6-digit in `bgcolor` and `color`
|
|
@@ -36,7 +36,6 @@ function sixHexDom(dom) {
|
|
|
36
36
|
});
|
|
37
37
|
return dom;
|
|
38
38
|
}
|
|
39
|
-
//#endregion
|
|
40
39
|
export { sixHex, sixHexDom };
|
|
41
40
|
|
|
42
41
|
//# sourceMappingURL=sixHex.js.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { MaizzleConfig } from "../types/config.js";
|
|
2
2
|
import { TailwindBlock } from "../composables/renderContext.js";
|
|
3
3
|
import { ChildNode } from "domhandler";
|
|
4
|
-
//#region src/transformers/tailwindComponent.d.ts
|
|
5
4
|
/**
|
|
6
5
|
* Compile Tailwind CSS for each top-level <Tailwind> block in the render
|
|
7
6
|
* context. Nested <Tailwind> instances are flattened: their classes flow
|
|
@@ -10,5 +9,4 @@ import { ChildNode } from "domhandler";
|
|
|
10
9
|
* are stripped after.
|
|
11
10
|
*/
|
|
12
11
|
export declare function tailwindComponent(dom: ChildNode[], blocks: TailwindBlock[], config: MaizzleConfig, filePath?: string, sourceFiles?: string[]): Promise<ChildNode[]>;
|
|
13
|
-
//#endregion
|
|
14
12
|
//# sourceMappingURL=tailwindComponent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwindComponent.d.ts","names":[],"sources":["../../src/transformers/tailwindComponent.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"tailwindComponent.d.ts","names":[],"sources":["../../src/transformers/tailwindComponent.ts"],"mappings":";;;;;;;;;;wBA2BsB,kBACpB,KAAK,aACL,QAAQ,iBACR,QAAQ,eACR,mBACA,yBACC,QAAQ"}
|
|
@@ -3,7 +3,7 @@ import "../utils/ast/index.js";
|
|
|
3
3
|
import { compileTailwindCss } from "../utils/compileTailwindCss.js";
|
|
4
4
|
import { rewriteImportsSourceNone } from "./tailwindcss.js";
|
|
5
5
|
import { dirname, relative, resolve } from "pathe";
|
|
6
|
-
|
|
6
|
+
// src/transformers/tailwindComponent.ts
|
|
7
7
|
const DEFAULT_SEED = "@import \"@maizzle/tailwindcss\" source(none);";
|
|
8
8
|
const OPEN_RE = /^mz-tw:(\S+)$/;
|
|
9
9
|
const CLOSE_RE = /^\/mz-tw:(\S+)$/;
|
|
@@ -114,7 +114,6 @@ function buildCssInput(configCss, classes, scope) {
|
|
|
114
114
|
}
|
|
115
115
|
return parts.length ? `${seed}\n${parts.join("\n")}` : seed;
|
|
116
116
|
}
|
|
117
|
-
//#endregion
|
|
118
117
|
export { tailwindComponent };
|
|
119
118
|
|
|
120
119
|
//# sourceMappingURL=tailwindComponent.js.map
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { MaizzleConfig } from "../types/config.js";
|
|
2
2
|
import { ChildNode } from "domhandler";
|
|
3
|
-
//#region src/transformers/tailwindcss.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Append ` source(none)` to Tailwind imports so auto source detection
|
|
6
5
|
* is off and only our explicit `@source` directives apply. Skips
|
|
@@ -25,5 +24,4 @@ export declare function rewriteImportsSourceNone(css: string): string;
|
|
|
25
24
|
* transformers (inliner, purge, etc.) work with fully compiled CSS.
|
|
26
25
|
*/
|
|
27
26
|
export declare function tailwindcss(dom: ChildNode[], config: MaizzleConfig, filePath?: string, sourceFiles?: string[]): Promise<ChildNode[]>;
|
|
28
|
-
//#endregion
|
|
29
27
|
//# sourceMappingURL=tailwindcss.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwindcss.d.ts","names":[],"sources":["../../src/transformers/tailwindcss.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"tailwindcss.d.ts","names":[],"sources":["../../src/transformers/tailwindcss.ts"],"mappings":";;;;;;;wBAgKgB,yBAAyB;;;;;;;;;;;;;;;;;;wBAwBnB,YAAY,KAAK,aAAa,QAAQ,eAAe,mBAAmB,yBAAyB,QAAQ"}
|
|
@@ -3,7 +3,7 @@ import "../utils/ast/index.js";
|
|
|
3
3
|
import { decodeStyleEntities } from "../utils/decodeStyleEntities.js";
|
|
4
4
|
import { compileTailwindCss } from "../utils/compileTailwindCss.js";
|
|
5
5
|
import { dirname, relative, resolve } from "pathe";
|
|
6
|
-
|
|
6
|
+
// src/transformers/tailwindcss.ts
|
|
7
7
|
/**
|
|
8
8
|
* Check if CSS content uses Tailwind features that require source scanning.
|
|
9
9
|
*
|
|
@@ -203,7 +203,6 @@ async function tailwindcss(dom, config, filePath, sourceFiles) {
|
|
|
203
203
|
}
|
|
204
204
|
return dom;
|
|
205
205
|
}
|
|
206
|
-
//#endregion
|
|
207
206
|
export { rewriteImportsSourceNone, tailwindcss };
|
|
208
207
|
|
|
209
208
|
//# sourceMappingURL=tailwindcss.js.map
|