@maizzle/framework 6.0.0-rc.2 → 6.0.0-rc.21
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/README.md +3 -3
- package/bin/maizzle.mjs +1 -1
- package/dist/build.d.ts +20 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +163 -0
- package/dist/build.js.map +1 -0
- package/dist/components/Body.vue +128 -0
- package/dist/components/Button.vue +148 -52
- package/dist/components/CodeBlock.vue +69 -0
- package/dist/components/CodeInline.vue +49 -0
- package/dist/components/Column.vue +108 -0
- package/dist/components/Container.vue +123 -0
- package/dist/components/Font.vue +96 -0
- package/dist/components/Head.vue +30 -0
- package/dist/components/Heading.vue +28 -0
- package/dist/components/Hr.vue +33 -0
- package/dist/components/Html.vue +137 -0
- package/dist/components/Img.vue +70 -0
- package/dist/components/Layout.vue +143 -0
- package/dist/components/Link.vue +26 -0
- package/dist/components/Markdown.vue +89 -0
- package/dist/components/MarkdownLayout.vue +39 -0
- package/dist/components/NotPlaintext.vue +14 -0
- package/dist/components/Outlook.vue +74 -11
- package/dist/components/OutlookBg.vue +241 -0
- package/dist/components/Overlap.vue +156 -0
- package/dist/components/Plaintext.vue +14 -0
- package/dist/components/Preheader.vue +15 -0
- package/dist/components/QrCode.vue +157 -0
- package/dist/components/Raw.vue +28 -0
- package/dist/components/Row.vue +184 -0
- package/dist/components/Section.vue +124 -0
- package/dist/components/Spacer.vue +70 -21
- package/dist/components/Tailwind.vue +43 -0
- package/dist/components/Text.vue +29 -0
- package/dist/components/utils.d.ts +28 -0
- package/dist/components/utils.d.ts.map +1 -0
- package/dist/components/utils.js +50 -0
- package/dist/components/utils.js.map +1 -0
- package/dist/components/utils.ts +51 -0
- package/dist/composables/{defineConfig.d.mts → defineConfig.d.ts} +2 -2
- package/dist/composables/defineConfig.d.ts.map +1 -0
- package/dist/composables/{defineConfig.mjs → defineConfig.js} +4 -5
- package/dist/composables/defineConfig.js.map +1 -0
- package/dist/composables/renderContext.d.ts +37 -0
- package/dist/composables/renderContext.d.ts.map +1 -0
- package/dist/composables/{renderContext.mjs → renderContext.js} +2 -2
- package/dist/composables/renderContext.js.map +1 -0
- package/dist/composables/useBaseUrl.d.ts +19 -0
- package/dist/composables/useBaseUrl.d.ts.map +1 -0
- package/dist/composables/useBaseUrl.js +26 -0
- package/dist/composables/useBaseUrl.js.map +1 -0
- package/dist/composables/{useConfig.d.mts → useConfig.d.ts} +2 -2
- package/dist/composables/useConfig.d.ts.map +1 -0
- package/dist/composables/{useConfig.mjs → useConfig.js} +2 -3
- package/dist/composables/useConfig.js.map +1 -0
- package/dist/composables/useCurrentTemplate.d.ts +31 -0
- package/dist/composables/useCurrentTemplate.d.ts.map +1 -0
- package/dist/composables/useCurrentTemplate.js +35 -0
- package/dist/composables/useCurrentTemplate.js.map +1 -0
- package/dist/composables/{useDoctype.d.mts → useDoctype.d.ts} +1 -1
- package/dist/composables/useDoctype.d.ts.map +1 -0
- package/dist/composables/{useDoctype.mjs → useDoctype.js} +3 -4
- package/dist/composables/useDoctype.js.map +1 -0
- package/dist/composables/{useEvent.d.mts → useEvent.d.ts} +3 -3
- package/dist/composables/useEvent.d.ts.map +1 -0
- package/dist/composables/{useEvent.mjs → useEvent.js} +4 -5
- package/dist/composables/useEvent.js.map +1 -0
- package/dist/composables/useFont.d.ts +50 -0
- package/dist/composables/useFont.d.ts.map +1 -0
- package/dist/composables/useFont.js +92 -0
- package/dist/composables/useFont.js.map +1 -0
- package/dist/composables/useOutlookFallback.d.ts +21 -0
- package/dist/composables/useOutlookFallback.d.ts.map +1 -0
- package/dist/composables/useOutlookFallback.js +29 -0
- package/dist/composables/useOutlookFallback.js.map +1 -0
- package/dist/composables/{usePlaintext.d.mts → usePlaintext.d.ts} +3 -1
- package/dist/composables/usePlaintext.d.ts.map +1 -0
- package/dist/composables/{usePlaintext.mjs → usePlaintext.js} +4 -4
- package/dist/composables/usePlaintext.js.map +1 -0
- package/dist/composables/usePreheader.d.ts +24 -0
- package/dist/composables/usePreheader.d.ts.map +1 -0
- package/dist/composables/usePreheader.js +28 -0
- package/dist/composables/usePreheader.js.map +1 -0
- package/dist/composables/useTransformers.d.ts +34 -0
- package/dist/composables/useTransformers.d.ts.map +1 -0
- package/dist/composables/useTransformers.js +48 -0
- package/dist/composables/useTransformers.js.map +1 -0
- package/dist/composables/useUrlQuery.d.ts +19 -0
- package/dist/composables/useUrlQuery.d.ts.map +1 -0
- package/dist/composables/useUrlQuery.js +26 -0
- package/dist/composables/useUrlQuery.js.map +1 -0
- package/dist/config/{defaults.d.mts → defaults.d.ts} +2 -2
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/{defaults.mjs → defaults.js} +10 -6
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/{index.d.mts → index.d.ts} +4 -4
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/{index.mjs → index.js} +12 -10
- package/dist/config/index.js.map +1 -0
- package/dist/events/{index.d.mts → index.d.ts} +30 -12
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/{index.mjs → index.js} +26 -13
- package/dist/events/index.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +38 -0
- package/dist/{plaintext.d.mts → plaintext.d.ts} +1 -1
- package/dist/plaintext.d.ts.map +1 -0
- package/dist/{plaintext.mjs → plaintext.js} +4 -5
- package/dist/plaintext.js.map +1 -0
- package/dist/{plugin.d.mts → plugin.d.ts} +2 -2
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +57 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugins/postcss/{mergeMediaQueries.d.mts → mergeMediaQueries.d.ts} +2 -2
- package/dist/plugins/postcss/mergeMediaQueries.d.ts.map +1 -0
- package/dist/plugins/postcss/{mergeMediaQueries.mjs → mergeMediaQueries.js} +2 -3
- package/dist/plugins/postcss/mergeMediaQueries.js.map +1 -0
- package/dist/plugins/postcss/{pruneVars.d.mts → pruneVars.d.ts} +1 -1
- package/dist/plugins/postcss/pruneVars.d.ts.map +1 -0
- package/dist/plugins/postcss/{pruneVars.mjs → pruneVars.js} +2 -2
- package/dist/plugins/postcss/pruneVars.js.map +1 -0
- package/dist/plugins/postcss/quoteFontFamilies.d.ts +13 -0
- package/dist/plugins/postcss/quoteFontFamilies.d.ts.map +1 -0
- package/dist/plugins/postcss/quoteFontFamilies.js +84 -0
- package/dist/plugins/postcss/quoteFontFamilies.js.map +1 -0
- package/dist/plugins/postcss/{removeDeclarations.d.mts → removeDeclarations.d.ts} +1 -1
- package/dist/plugins/postcss/removeDeclarations.d.ts.map +1 -0
- package/dist/plugins/postcss/{removeDeclarations.mjs → removeDeclarations.js} +2 -2
- package/dist/plugins/postcss/removeDeclarations.js.map +1 -0
- package/dist/plugins/postcss/resolveMaizzleImports.d.ts +16 -0
- package/dist/plugins/postcss/resolveMaizzleImports.d.ts.map +1 -0
- package/dist/plugins/postcss/resolveMaizzleImports.js +39 -0
- package/dist/plugins/postcss/resolveMaizzleImports.js.map +1 -0
- package/dist/plugins/postcss/resolveProps.d.ts +8 -0
- package/dist/plugins/postcss/resolveProps.d.ts.map +1 -0
- package/dist/plugins/postcss/resolveProps.js +144 -0
- package/dist/plugins/postcss/resolveProps.js.map +1 -0
- package/dist/plugins/postcss/{tailwindCleanup.d.mts → tailwindCleanup.d.ts} +2 -2
- package/dist/plugins/postcss/tailwindCleanup.d.ts.map +1 -0
- package/dist/plugins/postcss/tailwindCleanup.js +68 -0
- package/dist/plugins/postcss/tailwindCleanup.js.map +1 -0
- package/dist/prepare.d.ts +17 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +44 -0
- package/dist/prepare.js.map +1 -0
- package/dist/render/active.d.ts +8 -0
- package/dist/render/active.d.ts.map +1 -0
- package/dist/render/active.js +12 -0
- package/dist/render/active.js.map +1 -0
- package/dist/render/{createRenderer.d.mts → createRenderer.d.ts} +15 -7
- package/dist/render/createRenderer.d.ts.map +1 -0
- package/dist/render/createRenderer.js +320 -0
- package/dist/render/createRenderer.js.map +1 -0
- package/dist/render/index.d.ts +18 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +53 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/injectFonts.d.ts +15 -0
- package/dist/render/injectFonts.d.ts.map +1 -0
- package/dist/render/injectFonts.js +45 -0
- package/dist/render/injectFonts.js.map +1 -0
- package/dist/render/plugins/codeBlockExtract.d.ts +14 -0
- package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -0
- package/dist/render/plugins/codeBlockExtract.js +34 -0
- package/dist/render/plugins/codeBlockExtract.js.map +1 -0
- package/dist/render/plugins/markdownExtract.d.ts +12 -0
- package/dist/render/plugins/markdownExtract.d.ts.map +1 -0
- package/dist/render/plugins/markdownExtract.js +49 -0
- package/dist/render/plugins/markdownExtract.js.map +1 -0
- package/dist/render/plugins/rawExtract.d.ts +14 -0
- package/dist/render/plugins/rawExtract.d.ts.map +1 -0
- package/dist/render/plugins/rawExtract.js +34 -0
- package/dist/render/plugins/rawExtract.js.map +1 -0
- package/dist/render/plugins/rowSourceLocation.d.ts +18 -0
- package/dist/render/plugins/rowSourceLocation.d.ts.map +1 -0
- package/dist/render/plugins/rowSourceLocation.js +45 -0
- package/dist/render/plugins/rowSourceLocation.js.map +1 -0
- package/dist/{serve.d.mts → serve.d.ts} +4 -2
- package/dist/serve.d.ts.map +1 -0
- package/dist/{serve.mjs → serve.js} +203 -78
- package/dist/serve.js.map +1 -0
- package/dist/server/compatibility.d.ts +59 -0
- package/dist/server/compatibility.d.ts.map +1 -0
- package/dist/server/compatibility.js +911 -0
- package/dist/server/compatibility.js.map +1 -0
- package/dist/server/email.d.ts +17 -0
- package/dist/server/email.d.ts.map +1 -0
- package/dist/server/email.js +40 -0
- package/dist/server/email.js.map +1 -0
- package/dist/server/linter.d.ts +20 -0
- package/dist/server/linter.d.ts.map +1 -0
- package/dist/server/linter.js +339 -0
- package/dist/server/linter.js.map +1 -0
- package/dist/server/sfc-utils.d.ts +21 -0
- package/dist/server/sfc-utils.d.ts.map +1 -0
- package/dist/server/sfc-utils.js +198 -0
- package/dist/server/sfc-utils.js.map +1 -0
- package/dist/server/ui/App.vue +253 -77
- package/dist/server/ui/components/SidebarClose.vue +12 -0
- package/dist/server/ui/components/ui/checkbox/Checkbox.vue +35 -0
- package/dist/server/ui/components/ui/checkbox/index.ts +1 -0
- package/dist/server/ui/components/ui/command/Command.vue +5 -1
- package/dist/server/ui/components/ui/command/CommandDialog.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandInput.vue +19 -1
- package/dist/server/ui/components/ui/command/CommandItem.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandList.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandShortcut.vue +1 -1
- package/dist/server/ui/components/ui/dialog/DialogOverlay.vue +9 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuItem.vue +1 -1
- package/dist/server/ui/components/ui/input/Input.vue +1 -1
- package/dist/server/ui/components/ui/scroll-area/ScrollBar.vue +1 -1
- package/dist/server/ui/components/ui/sheet/SheetContent.vue +1 -1
- package/dist/server/ui/components/ui/sheet/SheetOverlay.vue +9 -1
- package/dist/server/ui/components/ui/sidebar/Sidebar.vue +8 -1
- package/dist/server/ui/components/ui/sidebar/SidebarProvider.vue +1 -1
- package/dist/server/ui/components/ui/sidebar/SidebarTrigger.vue +5 -4
- package/dist/server/ui/components/ui/tags-input/TagsInput.vue +26 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputInput.vue +17 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItem.vue +19 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItemDelete.vue +22 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItemText.vue +17 -0
- package/dist/server/ui/components/ui/tags-input/index.ts +5 -0
- package/dist/server/ui/components/ui/toggle/index.ts +3 -3
- package/dist/server/ui/components/ui/toggle-group/ToggleGroup.vue +1 -1
- package/dist/server/ui/components/ui/toggle-group/ToggleGroupItem.vue +2 -2
- package/dist/server/ui/lib/emulated-dark-mode.ts +131 -0
- package/dist/server/ui/main.css +20 -20
- package/dist/server/ui/pages/Home.vue +12 -5
- package/dist/server/ui/pages/Preview.vue +716 -276
- package/dist/tests/render/_helpers.d.ts +6 -0
- package/dist/tests/render/_helpers.d.ts.map +1 -0
- package/dist/tests/render/_helpers.js +16 -0
- package/dist/tests/render/_helpers.js.map +1 -0
- package/dist/transformers/{addAttributes.d.mts → addAttributes.d.ts} +2 -2
- package/dist/transformers/addAttributes.d.ts.map +1 -0
- package/dist/transformers/{addAttributes.mjs → addAttributes.js} +16 -13
- package/dist/transformers/addAttributes.js.map +1 -0
- package/dist/transformers/attributeToStyle.d.ts +38 -0
- package/dist/transformers/attributeToStyle.d.ts.map +1 -0
- package/dist/transformers/attributeToStyle.js +94 -0
- package/dist/transformers/attributeToStyle.js.map +1 -0
- package/dist/transformers/base.d.ts +71 -0
- package/dist/transformers/base.d.ts.map +1 -0
- package/dist/transformers/{base.mjs → base.js} +56 -30
- package/dist/transformers/base.js.map +1 -0
- package/dist/transformers/columnWidth.d.ts +31 -0
- package/dist/transformers/columnWidth.d.ts.map +1 -0
- package/dist/transformers/columnWidth.js +546 -0
- package/dist/transformers/columnWidth.js.map +1 -0
- package/dist/transformers/entities.d.ts +37 -0
- package/dist/transformers/entities.d.ts.map +1 -0
- package/dist/transformers/entities.js +73 -0
- package/dist/transformers/entities.js.map +1 -0
- package/dist/transformers/filters/defaults.d.ts +6 -0
- package/dist/transformers/filters/defaults.d.ts.map +1 -0
- package/dist/transformers/filters/defaults.js +78 -0
- package/dist/transformers/filters/defaults.js.map +1 -0
- package/dist/transformers/filters/index.d.ts +43 -0
- package/dist/transformers/filters/index.d.ts.map +1 -0
- package/dist/transformers/filters/index.js +89 -0
- package/dist/transformers/filters/index.js.map +1 -0
- package/dist/transformers/format.d.ts +22 -0
- package/dist/transformers/format.d.ts.map +1 -0
- package/dist/transformers/format.js +30 -0
- package/dist/transformers/format.js.map +1 -0
- package/dist/transformers/{index.d.mts → index.d.ts} +14 -11
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +133 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/inlineCss.d.ts +84 -0
- package/dist/transformers/inlineCss.d.ts.map +1 -0
- package/dist/transformers/inlineCss.js +91 -0
- package/dist/transformers/inlineCss.js.map +1 -0
- package/dist/transformers/inlineLink.d.ts +35 -0
- package/dist/transformers/inlineLink.d.ts.map +1 -0
- package/dist/transformers/{inlineLink.mjs → inlineLink.js} +34 -10
- package/dist/transformers/inlineLink.js.map +1 -0
- package/dist/transformers/minify.d.ts +21 -0
- package/dist/transformers/minify.d.ts.map +1 -0
- package/dist/transformers/minify.js +25 -0
- package/dist/transformers/minify.js.map +1 -0
- package/dist/transformers/msoPlaceholders.d.ts +28 -0
- package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
- package/dist/transformers/msoPlaceholders.js +88 -0
- package/dist/transformers/msoPlaceholders.js.map +1 -0
- package/dist/transformers/purgeCss.d.ts +43 -0
- package/dist/transformers/purgeCss.d.ts.map +1 -0
- package/dist/transformers/purgeCss.js +181 -0
- package/dist/transformers/purgeCss.js.map +1 -0
- package/dist/transformers/removeAttributes.d.ts +54 -0
- package/dist/transformers/removeAttributes.d.ts.map +1 -0
- package/dist/transformers/removeAttributes.js +70 -0
- package/dist/transformers/removeAttributes.js.map +1 -0
- package/dist/transformers/{replaceStrings.d.mts → replaceStrings.d.ts} +2 -2
- package/dist/transformers/replaceStrings.d.ts.map +1 -0
- package/dist/transformers/{replaceStrings.mjs → replaceStrings.js} +2 -2
- package/dist/transformers/replaceStrings.js.map +1 -0
- package/dist/transformers/{safeClassNames.d.mts → safeClassNames.d.ts} +2 -2
- package/dist/transformers/safeClassNames.d.ts.map +1 -0
- package/dist/transformers/{safeClassNames.mjs → safeClassNames.js} +4 -5
- package/dist/transformers/safeClassNames.js.map +1 -0
- package/dist/transformers/shorthandCss.d.ts +47 -0
- package/dist/transformers/shorthandCss.d.ts.map +1 -0
- package/dist/transformers/shorthandCss.js +61 -0
- package/dist/transformers/shorthandCss.js.map +1 -0
- package/dist/transformers/sixHex.d.ts +25 -0
- package/dist/transformers/sixHex.d.ts.map +1 -0
- package/dist/transformers/sixHex.js +42 -0
- package/dist/transformers/sixHex.js.map +1 -0
- package/dist/transformers/tailwindComponent.d.ts +16 -0
- package/dist/transformers/tailwindComponent.d.ts.map +1 -0
- package/dist/transformers/tailwindComponent.js +92 -0
- package/dist/transformers/tailwindComponent.js.map +1 -0
- package/dist/transformers/{tailwindcss.d.mts → tailwindcss.d.ts} +8 -4
- package/dist/transformers/tailwindcss.d.ts.map +1 -0
- package/dist/transformers/tailwindcss.js +97 -0
- package/dist/transformers/tailwindcss.js.map +1 -0
- package/dist/transformers/urlQuery.d.ts +36 -0
- package/dist/transformers/urlQuery.d.ts.map +1 -0
- package/dist/transformers/urlQuery.js +77 -0
- package/dist/transformers/urlQuery.js.map +1 -0
- package/dist/types/config.d.ts +737 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/ast/index.d.ts +4 -0
- package/dist/utils/ast/index.js +4 -0
- package/dist/utils/ast/{parser.d.mts → parser.d.ts} +1 -1
- package/dist/utils/ast/parser.d.ts.map +1 -0
- package/dist/utils/ast/{parser.mjs → parser.js} +2 -3
- package/dist/utils/ast/parser.js.map +1 -0
- package/dist/utils/ast/serializer.d.ts +8 -0
- package/dist/utils/ast/serializer.d.ts.map +1 -0
- package/dist/utils/ast/serializer.js +36 -0
- package/dist/utils/ast/serializer.js.map +1 -0
- package/dist/utils/ast/{walker.d.mts → walker.d.ts} +1 -1
- package/dist/utils/ast/walker.d.ts.map +1 -0
- package/dist/utils/ast/{walker.mjs → walker.js} +2 -2
- package/dist/utils/ast/walker.js.map +1 -0
- package/dist/utils/compileTailwindCss.d.ts +16 -0
- package/dist/utils/compileTailwindCss.d.ts.map +1 -0
- package/dist/utils/compileTailwindCss.js +54 -0
- package/dist/utils/compileTailwindCss.js.map +1 -0
- package/dist/utils/componentSources.d.ts +50 -0
- package/dist/utils/componentSources.d.ts.map +1 -0
- package/dist/utils/componentSources.js +50 -0
- package/dist/utils/componentSources.js.map +1 -0
- package/dist/utils/decodeStyleEntities.d.ts +15 -0
- package/dist/utils/decodeStyleEntities.d.ts.map +1 -0
- package/dist/utils/decodeStyleEntities.js +18 -0
- package/dist/utils/decodeStyleEntities.js.map +1 -0
- package/dist/utils/detect.d.ts +5 -0
- package/dist/utils/detect.d.ts.map +1 -0
- package/dist/utils/detect.js +10 -0
- package/dist/utils/detect.js.map +1 -0
- package/dist/utils/output-markers.d.ts +29 -0
- package/dist/utils/output-markers.d.ts.map +1 -0
- package/dist/utils/output-markers.js +68 -0
- package/dist/utils/output-markers.js.map +1 -0
- package/dist/utils/{url.d.mts → url.d.ts} +1 -1
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/{url.mjs → url.js} +2 -3
- package/dist/utils/url.js.map +1 -0
- package/dist/utils/watchPaths.d.ts +11 -0
- package/dist/utils/watchPaths.d.ts.map +1 -0
- package/dist/utils/watchPaths.js +19 -0
- package/dist/utils/watchPaths.js.map +1 -0
- package/node_modules/@clack/core/CHANGELOG.md +8 -0
- package/node_modules/@clack/core/dist/index.d.mts +18 -4
- package/node_modules/@clack/core/dist/index.mjs +16 -10
- package/node_modules/@clack/core/dist/index.mjs.map +1 -1
- package/node_modules/@clack/core/package.json +5 -2
- package/node_modules/@clack/prompts/CHANGELOG.md +15 -0
- package/node_modules/@clack/prompts/README.md +107 -2
- package/node_modules/@clack/prompts/dist/index.d.mts +16 -11
- package/node_modules/@clack/prompts/dist/index.mjs +114 -107
- package/node_modules/@clack/prompts/dist/index.mjs.map +1 -1
- package/node_modules/@clack/prompts/package.json +7 -4
- package/node_modules/fast-string-truncated-width/dist/index.js +36 -96
- package/node_modules/fast-string-truncated-width/dist/types.d.ts +0 -3
- package/node_modules/fast-string-truncated-width/dist/utils.d.ts +3 -3
- package/node_modules/fast-string-truncated-width/dist/utils.js +14 -9
- package/node_modules/fast-string-truncated-width/package.json +1 -1
- package/node_modules/fast-string-truncated-width/readme.md +2 -3
- package/node_modules/fast-string-width/package.json +2 -2
- package/node_modules/fast-string-width/readme.md +0 -3
- package/node_modules/fast-wrap-ansi/lib/main.js +4 -1
- package/node_modules/fast-wrap-ansi/lib/main.js.map +1 -1
- package/node_modules/fast-wrap-ansi/package.json +2 -2
- package/node_modules/maizzle/README.md +24 -0
- package/node_modules/maizzle/dist/commands/make/component.mjs +1 -1
- package/node_modules/maizzle/dist/commands/make/config.mjs +1 -1
- package/node_modules/maizzle/dist/commands/make/layout.mjs +3 -3
- package/node_modules/maizzle/dist/commands/make/scaffold.mjs +1 -1
- package/node_modules/maizzle/dist/commands/make/stubs/Layout.vue +146 -0
- package/node_modules/maizzle/dist/commands/make/stubs/component.vue +2 -4
- package/node_modules/maizzle/dist/commands/make/stubs/config.ts +1 -5
- package/node_modules/maizzle/dist/commands/make/template.mjs +1 -1
- package/node_modules/maizzle/dist/commands/new.mjs +32 -52
- package/node_modules/maizzle/dist/index.d.mts +1 -0
- package/node_modules/maizzle/dist/index.mjs +30 -7
- package/node_modules/maizzle/package.json +4 -3
- package/node_modules/nypm/dist/cli.mjs +28 -5
- package/node_modules/nypm/dist/index.d.mts +0 -8
- package/node_modules/nypm/dist/index.mjs +27 -4
- package/node_modules/nypm/package.json +12 -12
- package/node_modules/tinyexec/README.md +1 -1
- package/node_modules/tinyexec/dist/main.d.mts +6 -6
- package/node_modules/tinyexec/dist/main.mjs +126 -134
- package/node_modules/tinyexec/package.json +9 -9
- package/package.json +31 -21
- package/dist/build.d.mts +0 -19
- package/dist/build.d.mts.map +0 -1
- package/dist/build.mjs +0 -139
- package/dist/build.mjs.map +0 -1
- package/dist/components/Divider.vue +0 -105
- package/dist/components/Vml.vue +0 -89
- package/dist/components/utils.d.mts +0 -5
- package/dist/components/utils.d.mts.map +0 -1
- package/dist/components/utils.mjs +0 -9
- package/dist/components/utils.mjs.map +0 -1
- package/dist/composables/defineConfig.d.mts.map +0 -1
- package/dist/composables/defineConfig.mjs.map +0 -1
- package/dist/composables/renderContext.d.mts +0 -19
- package/dist/composables/renderContext.d.mts.map +0 -1
- package/dist/composables/renderContext.mjs.map +0 -1
- package/dist/composables/useConfig.d.mts.map +0 -1
- package/dist/composables/useConfig.mjs.map +0 -1
- package/dist/composables/useDoctype.d.mts.map +0 -1
- package/dist/composables/useDoctype.mjs.map +0 -1
- package/dist/composables/useEvent.d.mts.map +0 -1
- package/dist/composables/useEvent.mjs.map +0 -1
- package/dist/composables/usePlaintext.d.mts.map +0 -1
- package/dist/composables/usePlaintext.mjs.map +0 -1
- package/dist/config/defaults.d.mts.map +0 -1
- package/dist/config/defaults.mjs.map +0 -1
- package/dist/config/index.d.mts.map +0 -1
- package/dist/config/index.mjs.map +0 -1
- package/dist/events/index.d.mts.map +0 -1
- package/dist/events/index.mjs.map +0 -1
- package/dist/index.d.mts +0 -29
- package/dist/index.mjs +0 -29
- package/dist/plaintext.d.mts.map +0 -1
- package/dist/plaintext.mjs.map +0 -1
- package/dist/plugin.d.mts.map +0 -1
- package/dist/plugin.mjs +0 -41
- package/dist/plugin.mjs.map +0 -1
- package/dist/plugins/postcss/mergeMediaQueries.d.mts.map +0 -1
- package/dist/plugins/postcss/mergeMediaQueries.mjs.map +0 -1
- package/dist/plugins/postcss/pruneVars.d.mts.map +0 -1
- package/dist/plugins/postcss/pruneVars.mjs.map +0 -1
- package/dist/plugins/postcss/removeDeclarations.d.mts.map +0 -1
- package/dist/plugins/postcss/removeDeclarations.mjs.map +0 -1
- package/dist/plugins/postcss/tailwindCleanup.d.mts.map +0 -1
- package/dist/plugins/postcss/tailwindCleanup.mjs +0 -35
- package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
- package/dist/render/createRenderer.d.mts.map +0 -1
- package/dist/render/createRenderer.mjs +0 -155
- package/dist/render/createRenderer.mjs.map +0 -1
- package/dist/render/index.d.mts +0 -26
- package/dist/render/index.d.mts.map +0 -1
- package/dist/render/index.mjs +0 -44
- package/dist/render/index.mjs.map +0 -1
- package/dist/serve.d.mts.map +0 -1
- package/dist/serve.mjs.map +0 -1
- package/dist/server/compatibility.d.mts +0 -6
- package/dist/server/compatibility.d.mts.map +0 -1
- package/dist/server/compatibility.mjs +0 -83
- package/dist/server/compatibility.mjs.map +0 -1
- package/dist/server/linter.d.mts +0 -6
- package/dist/server/linter.d.mts.map +0 -1
- package/dist/server/linter.mjs +0 -200
- package/dist/server/linter.mjs.map +0 -1
- package/dist/server/ui/components/ui/resizable/ResizableHandle.vue +0 -30
- package/dist/server/ui/components/ui/resizable/ResizablePanel.vue +0 -21
- package/dist/server/ui/components/ui/resizable/ResizablePanelGroup.vue +0 -25
- package/dist/server/ui/components/ui/resizable/index.ts +0 -3
- package/dist/transformers/addAttributes.d.mts.map +0 -1
- package/dist/transformers/addAttributes.mjs.map +0 -1
- package/dist/transformers/attributeToStyle.d.mts +0 -25
- package/dist/transformers/attributeToStyle.d.mts.map +0 -1
- package/dist/transformers/attributeToStyle.mjs +0 -80
- package/dist/transformers/attributeToStyle.mjs.map +0 -1
- package/dist/transformers/base.d.mts +0 -8
- package/dist/transformers/base.d.mts.map +0 -1
- package/dist/transformers/base.mjs.map +0 -1
- package/dist/transformers/entities.d.mts +0 -8
- package/dist/transformers/entities.d.mts.map +0 -1
- package/dist/transformers/entities.mjs +0 -38
- package/dist/transformers/entities.mjs.map +0 -1
- package/dist/transformers/format.d.mts +0 -15
- package/dist/transformers/format.d.mts.map +0 -1
- package/dist/transformers/format.mjs +0 -26
- package/dist/transformers/format.mjs.map +0 -1
- package/dist/transformers/index.d.mts.map +0 -1
- package/dist/transformers/index.mjs +0 -73
- package/dist/transformers/index.mjs.map +0 -1
- package/dist/transformers/inlineCSS.d.mts +0 -30
- package/dist/transformers/inlineCSS.d.mts.map +0 -1
- package/dist/transformers/inlineCSS.mjs +0 -79
- package/dist/transformers/inlineCSS.mjs.map +0 -1
- package/dist/transformers/inlineLink.d.mts +0 -14
- package/dist/transformers/inlineLink.d.mts.map +0 -1
- package/dist/transformers/inlineLink.mjs.map +0 -1
- package/dist/transformers/minify.d.mts +0 -17
- package/dist/transformers/minify.d.mts.map +0 -1
- package/dist/transformers/minify.mjs +0 -24
- package/dist/transformers/minify.mjs.map +0 -1
- package/dist/transformers/purgeCSS.d.mts +0 -23
- package/dist/transformers/purgeCSS.d.mts.map +0 -1
- package/dist/transformers/purgeCSS.mjs +0 -66
- package/dist/transformers/purgeCSS.mjs.map +0 -1
- package/dist/transformers/removeAttributes.d.mts +0 -31
- package/dist/transformers/removeAttributes.d.mts.map +0 -1
- package/dist/transformers/removeAttributes.mjs +0 -63
- package/dist/transformers/removeAttributes.mjs.map +0 -1
- package/dist/transformers/replaceStrings.d.mts.map +0 -1
- package/dist/transformers/replaceStrings.mjs.map +0 -1
- package/dist/transformers/safeClassNames.d.mts.map +0 -1
- package/dist/transformers/safeClassNames.mjs.map +0 -1
- package/dist/transformers/shorthandCSS.d.mts +0 -24
- package/dist/transformers/shorthandCSS.d.mts.map +0 -1
- package/dist/transformers/shorthandCSS.mjs +0 -48
- package/dist/transformers/shorthandCSS.mjs.map +0 -1
- package/dist/transformers/tailwindcss.d.mts.map +0 -1
- package/dist/transformers/tailwindcss.mjs +0 -136
- package/dist/transformers/tailwindcss.mjs.map +0 -1
- package/dist/transformers/urlQuery.d.mts +0 -24
- package/dist/transformers/urlQuery.d.mts.map +0 -1
- package/dist/transformers/urlQuery.mjs +0 -65
- package/dist/transformers/urlQuery.mjs.map +0 -1
- package/dist/types/config.d.mts +0 -149
- package/dist/types/config.d.mts.map +0 -1
- package/dist/types/config.mjs +0 -1
- package/dist/types/index.d.mts +0 -2
- package/dist/types/index.mjs +0 -1
- package/dist/utils/ast/index.d.mts +0 -4
- package/dist/utils/ast/index.mjs +0 -5
- package/dist/utils/ast/parser.d.mts.map +0 -1
- package/dist/utils/ast/parser.mjs.map +0 -1
- package/dist/utils/ast/serializer.d.mts +0 -7
- package/dist/utils/ast/serializer.d.mts.map +0 -1
- package/dist/utils/ast/serializer.mjs +0 -13
- package/dist/utils/ast/serializer.mjs.map +0 -1
- package/dist/utils/ast/walker.d.mts.map +0 -1
- package/dist/utils/ast/walker.mjs.map +0 -1
- package/dist/utils/url.d.mts.map +0 -1
- package/dist/utils/url.mjs.map +0 -1
- package/node_modules/maizzle/dist/commands/make/stubs/layout.vue +0 -39
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { RenderContextKey } from "./renderContext.js";
|
|
2
|
+
import { inject } from "vue";
|
|
3
|
+
//#region src/composables/usePreheader.ts
|
|
4
|
+
/**
|
|
5
|
+
* Set the preheader text for the current email template.
|
|
6
|
+
*
|
|
7
|
+
* Injects a hidden `<div>` at the start of `<body>` with the preheader text
|
|
8
|
+
* followed by filler characters that prevent email clients from pulling
|
|
9
|
+
* in body content after the preheader.
|
|
10
|
+
*
|
|
11
|
+
* Usage in SFC <script setup>:
|
|
12
|
+
* ```ts
|
|
13
|
+
* usePreheader('Thanks for signing up!')
|
|
14
|
+
* usePreheader('Welcome!', { fillerCount: 200, shyCount: 200 })
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function usePreheader(text, options) {
|
|
18
|
+
const ctx = inject(RenderContextKey);
|
|
19
|
+
if (ctx) ctx.preheader = {
|
|
20
|
+
text,
|
|
21
|
+
fillerCount: options?.fillerCount ?? 150,
|
|
22
|
+
shyCount: options?.shyCount ?? 150
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { usePreheader };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=usePreheader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePreheader.js","names":[],"sources":["../../src/composables/usePreheader.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { RenderContextKey } from './renderContext.ts'\n\nexport interface UsePreheaderOptions {\n /** Number of  ͏ filler pairs to render. @default 150 */\n fillerCount?: number\n /** Number of ­ entities to render. @default 150 */\n shyCount?: number\n}\n\n/**\n * Set the preheader text for the current email template.\n *\n * Injects a hidden `<div>` at the start of `<body>` with the preheader text\n * followed by filler characters that prevent email clients from pulling\n * in body content after the preheader.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * usePreheader('Thanks for signing up!')\n * usePreheader('Welcome!', { fillerCount: 200, shyCount: 200 })\n * ```\n */\nexport function usePreheader(text: string, options?: UsePreheaderOptions): void {\n const ctx = inject(RenderContextKey)\n if (ctx) {\n ctx.preheader = {\n text,\n fillerCount: options?.fillerCount ?? 150,\n shyCount: options?.shyCount ?? 150,\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAuBA,SAAgB,aAAa,MAAc,SAAqC;CAC9E,MAAM,MAAM,OAAO,iBAAiB;CACpC,IAAI,KACF,IAAI,YAAY;EACd;EACA,aAAa,SAAS,eAAe;EACrC,UAAU,SAAS,YAAY;EAChC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { TransformerToggles } from "../types/config.js";
|
|
2
|
+
//#region src/composables/useTransformers.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Toggle the transformer pipeline for the current template.
|
|
5
|
+
*
|
|
6
|
+
* - `useTransformers(false)` skips the entire pipeline (CSS inlining,
|
|
7
|
+
* purging, shorthand, etc).
|
|
8
|
+
* - `useTransformers(true)` (or no argument) keeps everything on.
|
|
9
|
+
* - `useTransformers({ inlineCss: false, minify: false })` runs the
|
|
10
|
+
* pipeline but skips the listed transformers.
|
|
11
|
+
* - `useTransformers({ prettify: true, minify: true })` *enables*
|
|
12
|
+
* transformers that would otherwise no-op (boolean-driven ones:
|
|
13
|
+
* inlineCss, purgeCss, prettify, minify, shorthandCss, sixHex,
|
|
14
|
+
* safeClassNames, entities). Same effect as setting their config
|
|
15
|
+
* slice directly, scoped to one template.
|
|
16
|
+
*
|
|
17
|
+
* Data-driven transformers (filters, baseURL, urlQuery, addAttributes,
|
|
18
|
+
* removeAttributes, replaceStrings, attributeToStyle) need actual
|
|
19
|
+
* values in config — a bare `true` toggle for them is a no-op.
|
|
20
|
+
*
|
|
21
|
+
* Mirrors the `useTransformers` config flag, scoped to a single template
|
|
22
|
+
* — no need to edit `maizzle.config.ts`.
|
|
23
|
+
*
|
|
24
|
+
* Usage in SFC <script setup>:
|
|
25
|
+
* ```ts
|
|
26
|
+
* useTransformers(false)
|
|
27
|
+
* useTransformers({ inlineCss: false, minify: false })
|
|
28
|
+
* useTransformers({ prettify: true })
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
declare function useTransformers(value?: boolean | TransformerToggles): void;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { useTransformers };
|
|
34
|
+
//# sourceMappingURL=useTransformers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTransformers.d.ts","names":[],"sources":["../../src/composables/useTransformers.ts"],"mappings":";;;;;AAiCA;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,eAAA,CAAgB,KAAA,aAAiB,kBAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MaizzleConfigKey } from "./useConfig.js";
|
|
2
|
+
import { RenderContextKey } from "./renderContext.js";
|
|
3
|
+
import { getCurrentInstance, inject, provide } from "vue";
|
|
4
|
+
//#region src/composables/useTransformers.ts
|
|
5
|
+
/**
|
|
6
|
+
* Toggle the transformer pipeline for the current template.
|
|
7
|
+
*
|
|
8
|
+
* - `useTransformers(false)` skips the entire pipeline (CSS inlining,
|
|
9
|
+
* purging, shorthand, etc).
|
|
10
|
+
* - `useTransformers(true)` (or no argument) keeps everything on.
|
|
11
|
+
* - `useTransformers({ inlineCss: false, minify: false })` runs the
|
|
12
|
+
* pipeline but skips the listed transformers.
|
|
13
|
+
* - `useTransformers({ prettify: true, minify: true })` *enables*
|
|
14
|
+
* transformers that would otherwise no-op (boolean-driven ones:
|
|
15
|
+
* inlineCss, purgeCss, prettify, minify, shorthandCss, sixHex,
|
|
16
|
+
* safeClassNames, entities). Same effect as setting their config
|
|
17
|
+
* slice directly, scoped to one template.
|
|
18
|
+
*
|
|
19
|
+
* Data-driven transformers (filters, baseURL, urlQuery, addAttributes,
|
|
20
|
+
* removeAttributes, replaceStrings, attributeToStyle) need actual
|
|
21
|
+
* values in config — a bare `true` toggle for them is a no-op.
|
|
22
|
+
*
|
|
23
|
+
* Mirrors the `useTransformers` config flag, scoped to a single template
|
|
24
|
+
* — no need to edit `maizzle.config.ts`.
|
|
25
|
+
*
|
|
26
|
+
* Usage in SFC <script setup>:
|
|
27
|
+
* ```ts
|
|
28
|
+
* useTransformers(false)
|
|
29
|
+
* useTransformers({ inlineCss: false, minify: false })
|
|
30
|
+
* useTransformers({ prettify: true })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
function useTransformers(value = true) {
|
|
34
|
+
if (!getCurrentInstance()) return;
|
|
35
|
+
const ctx = inject(RenderContextKey);
|
|
36
|
+
if (!ctx) return;
|
|
37
|
+
const globalConfig = inject(MaizzleConfigKey, {});
|
|
38
|
+
const merged = {
|
|
39
|
+
...ctx.sfcConfig ?? globalConfig,
|
|
40
|
+
useTransformers: value
|
|
41
|
+
};
|
|
42
|
+
ctx.sfcConfig = merged;
|
|
43
|
+
provide(MaizzleConfigKey, merged);
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { useTransformers };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=useTransformers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTransformers.js","names":[],"sources":["../../src/composables/useTransformers.ts"],"sourcesContent":["import { getCurrentInstance, inject, provide } from 'vue'\nimport { MaizzleConfigKey } from './useConfig.ts'\nimport { RenderContextKey } from './renderContext.ts'\nimport type { MaizzleConfig, TransformerToggles } from '../types/index.ts'\n\n/**\n * Toggle the transformer pipeline for the current template.\n *\n * - `useTransformers(false)` skips the entire pipeline (CSS inlining,\n * purging, shorthand, etc).\n * - `useTransformers(true)` (or no argument) keeps everything on.\n * - `useTransformers({ inlineCss: false, minify: false })` runs the\n * pipeline but skips the listed transformers.\n * - `useTransformers({ prettify: true, minify: true })` *enables*\n * transformers that would otherwise no-op (boolean-driven ones:\n * inlineCss, purgeCss, prettify, minify, shorthandCss, sixHex,\n * safeClassNames, entities). Same effect as setting their config\n * slice directly, scoped to one template.\n *\n * Data-driven transformers (filters, baseURL, urlQuery, addAttributes,\n * removeAttributes, replaceStrings, attributeToStyle) need actual\n * values in config — a bare `true` toggle for them is a no-op.\n *\n * Mirrors the `useTransformers` config flag, scoped to a single template\n * — no need to edit `maizzle.config.ts`.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * useTransformers(false)\n * useTransformers({ inlineCss: false, minify: false })\n * useTransformers({ prettify: true })\n * ```\n */\nexport function useTransformers(value: boolean | TransformerToggles = true): void {\n if (!getCurrentInstance()) return\n\n const ctx = inject(RenderContextKey)\n if (!ctx) return\n\n const globalConfig = inject(MaizzleConfigKey, {} as MaizzleConfig)\n const merged: MaizzleConfig = {\n ...(ctx.sfcConfig ?? globalConfig),\n useTransformers: value,\n }\n\n ctx.sfcConfig = merged\n provide(MaizzleConfigKey, merged)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,gBAAgB,QAAsC,MAAY;CAChF,IAAI,CAAC,oBAAoB,EAAE;CAE3B,MAAM,MAAM,OAAO,iBAAiB;CACpC,IAAI,CAAC,KAAK;CAEV,MAAM,eAAe,OAAO,kBAAkB,EAAE,CAAkB;CAClE,MAAM,SAAwB;EAC5B,GAAI,IAAI,aAAa;EACrB,iBAAiB;EAClB;CAED,IAAI,YAAY;CAChB,QAAQ,kBAAkB,OAAO"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { UrlQuery } from "../types/config.js";
|
|
2
|
+
//#region src/composables/useUrlQuery.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Append query parameters to URLs in the current email template — same
|
|
5
|
+
* as `config.url.query`, scoped to one SFC. Common use: per-template
|
|
6
|
+
* UTM parameters or campaign tracking.
|
|
7
|
+
*
|
|
8
|
+
* Usage in SFC <script setup>:
|
|
9
|
+
* ```ts
|
|
10
|
+
* useUrlQuery({ utm_source: 'maizzle', utm_campaign: 'newsletter' })
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Pass `_options` alongside the params to tweak which tags/attributes
|
|
14
|
+
* receive them (see `UrlQueryOptions`).
|
|
15
|
+
*/
|
|
16
|
+
declare function useUrlQuery(value: UrlQuery): void;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { useUrlQuery };
|
|
19
|
+
//# sourceMappingURL=useUrlQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUrlQuery.d.ts","names":[],"sources":["../../src/composables/useUrlQuery.ts"],"mappings":";;;;;AAkBA;;;;;;;;;;iBAAgB,WAAA,CAAY,KAAA,EAAO,QAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RenderContextKey } from "./renderContext.js";
|
|
2
|
+
import { defu as defu$1 } from "defu";
|
|
3
|
+
import { inject } from "vue";
|
|
4
|
+
//#region src/composables/useUrlQuery.ts
|
|
5
|
+
/**
|
|
6
|
+
* Append query parameters to URLs in the current email template — same
|
|
7
|
+
* as `config.url.query`, scoped to one SFC. Common use: per-template
|
|
8
|
+
* UTM parameters or campaign tracking.
|
|
9
|
+
*
|
|
10
|
+
* Usage in SFC <script setup>:
|
|
11
|
+
* ```ts
|
|
12
|
+
* useUrlQuery({ utm_source: 'maizzle', utm_campaign: 'newsletter' })
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Pass `_options` alongside the params to tweak which tags/attributes
|
|
16
|
+
* receive them (see `UrlQueryOptions`).
|
|
17
|
+
*/
|
|
18
|
+
function useUrlQuery(value) {
|
|
19
|
+
const ctx = inject(RenderContextKey);
|
|
20
|
+
if (!ctx) return;
|
|
21
|
+
ctx.sfcConfig = defu$1({ url: { query: value } }, ctx.sfcConfig ?? {});
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { useUrlQuery };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=useUrlQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUrlQuery.js","names":["merge"],"sources":["../../src/composables/useUrlQuery.ts"],"sourcesContent":["import { inject } from 'vue'\nimport { defu as merge } from 'defu'\nimport { RenderContextKey } from './renderContext.ts'\nimport type { UrlQuery } from '../types/index.ts'\n\n/**\n * Append query parameters to URLs in the current email template — same\n * as `config.url.query`, scoped to one SFC. Common use: per-template\n * UTM parameters or campaign tracking.\n *\n * Usage in SFC <script setup>:\n * ```ts\n * useUrlQuery({ utm_source: 'maizzle', utm_campaign: 'newsletter' })\n * ```\n *\n * Pass `_options` alongside the params to tweak which tags/attributes\n * receive them (see `UrlQueryOptions`).\n */\nexport function useUrlQuery(value: UrlQuery): void {\n const ctx = inject(RenderContextKey)\n if (!ctx) return\n ctx.sfcConfig = merge({ url: { query: value } }, ctx.sfcConfig ?? {})\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,SAAgB,YAAY,OAAuB;CACjD,MAAM,MAAM,OAAO,iBAAiB;CACpC,IAAI,CAAC,KAAK;CACV,IAAI,YAAYA,OAAM,EAAE,KAAK,EAAE,OAAO,OAAO,EAAE,EAAE,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { MaizzleConfig } from "../types/config.
|
|
1
|
+
import { MaizzleConfig } from "../types/config.js";
|
|
2
2
|
//#region src/config/defaults.d.ts
|
|
3
3
|
declare const defaults: MaizzleConfig;
|
|
4
4
|
//#endregion
|
|
5
5
|
export { defaults };
|
|
6
|
-
//# sourceMappingURL=defaults.d.
|
|
6
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","names":[],"sources":["../../src/config/defaults.ts"],"mappings":";;cAEa,QAAA,EAAU,aAAA"}
|
|
@@ -14,15 +14,19 @@ const defaults = {
|
|
|
14
14
|
watch: []
|
|
15
15
|
},
|
|
16
16
|
css: {
|
|
17
|
+
inline: true,
|
|
18
|
+
purge: true,
|
|
19
|
+
shorthand: true,
|
|
17
20
|
safe: true,
|
|
18
|
-
preferUnitless: true
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
preferUnitless: true
|
|
22
|
+
},
|
|
23
|
+
html: {
|
|
24
|
+
decodeEntities: true,
|
|
25
|
+
format: true
|
|
21
26
|
},
|
|
22
|
-
html: { decodeEntities: true },
|
|
23
27
|
useTransformers: true
|
|
24
28
|
};
|
|
25
|
-
|
|
26
29
|
//#endregion
|
|
27
30
|
export { defaults };
|
|
28
|
-
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","names":[],"sources":["../../src/config/defaults.ts"],"sourcesContent":["import type { MaizzleConfig } from '../types/index.ts'\n\nexport const defaults: MaizzleConfig = {\n content: ['emails/**/*.{vue,md}'],\n output: {\n path: 'dist',\n extension: 'html',\n },\n static: {\n source: ['public/**/*.*'],\n destination: 'public',\n },\n server: {\n port: 3000,\n watch: [],\n },\n css: {\n inline: true,\n purge: true,\n shorthand: true,\n safe: true,\n preferUnitless: true,\n },\n html: {\n decodeEntities: true,\n format: true,\n },\n useTransformers: true,\n}\n"],"mappings":";AAEA,MAAa,WAA0B;CACrC,SAAS,CAAC,uBAAuB;CACjC,QAAQ;EACN,MAAM;EACN,WAAW;EACZ;CACD,QAAQ;EACN,QAAQ,CAAC,gBAAgB;EACzB,aAAa;EACd;CACD,QAAQ;EACN,MAAM;EACN,OAAO,EAAE;EACV;CACD,KAAK;EACH,QAAQ;EACR,OAAO;EACP,WAAW;EACX,MAAM;EACN,gBAAgB;EACjB;CACD,MAAM;EACJ,gBAAgB;EAChB,QAAQ;EACT;CACD,iBAAiB;CAClB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { MaizzleConfig } from "../types/config.
|
|
2
|
-
import { defineConfig } from "../composables/defineConfig.
|
|
3
|
-
import { defaults } from "./defaults.
|
|
1
|
+
import { MaizzleConfig } from "../types/config.js";
|
|
2
|
+
import { defineConfig } from "../composables/defineConfig.js";
|
|
3
|
+
import { defaults } from "./defaults.js";
|
|
4
4
|
|
|
5
5
|
//#region src/config/index.d.ts
|
|
6
6
|
/**
|
|
@@ -12,4 +12,4 @@ import { defaults } from "./defaults.mjs";
|
|
|
12
12
|
declare function resolveConfig(config?: Partial<MaizzleConfig> | string, cwd?: string): Promise<MaizzleConfig>;
|
|
13
13
|
//#endregion
|
|
14
14
|
export { defaults, defineConfig, resolveConfig };
|
|
15
|
-
//# sourceMappingURL=index.d.
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/config/index.ts"],"mappings":";;;;;;;;AA8BA;;;iBAAsB,aAAA,CACpB,MAAA,GAAS,OAAA,CAAQ,aAAA,YACjB,GAAA,YACC,OAAA,CAAQ,aAAA"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { defaults } from "./defaults.
|
|
2
|
-
import { defineConfig } from "../composables/defineConfig.
|
|
1
|
+
import { defaults } from "./defaults.js";
|
|
2
|
+
import { defineConfig } from "../composables/defineConfig.js";
|
|
3
3
|
import { existsSync } from "node:fs";
|
|
4
4
|
import { resolve } from "node:path";
|
|
5
5
|
import { createJiti } from "jiti";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import { createDefu } from "defu";
|
|
8
|
-
|
|
9
8
|
//#region src/config/index.ts
|
|
10
9
|
const merge = createDefu((obj, key, value) => {
|
|
11
10
|
if (Array.isArray(obj[key])) {
|
|
@@ -35,11 +34,14 @@ async function resolveConfig(config, cwd = process.cwd()) {
|
|
|
35
34
|
if (p.startsWith("/") || p.startsWith("!")) return p;
|
|
36
35
|
return resolve(root, p).replace(/\\/g, "/");
|
|
37
36
|
});
|
|
38
|
-
if (merged.components?.
|
|
39
|
-
const dirs = Array.isArray(merged.components.
|
|
40
|
-
merged.components.
|
|
41
|
-
if (
|
|
42
|
-
return
|
|
37
|
+
if (merged.components?.source) {
|
|
38
|
+
const dirs = Array.isArray(merged.components.source) ? merged.components.source : [merged.components.source];
|
|
39
|
+
merged.components.source = dirs.map((entry) => {
|
|
40
|
+
if (typeof entry === "string") return entry.startsWith("/") ? entry : resolve(cwd, entry);
|
|
41
|
+
return {
|
|
42
|
+
...entry,
|
|
43
|
+
path: entry.path.startsWith("/") ? entry.path : resolve(cwd, entry.path)
|
|
44
|
+
};
|
|
43
45
|
});
|
|
44
46
|
}
|
|
45
47
|
if (hasExplicitRoot && !merged.css?.base) {
|
|
@@ -65,7 +67,7 @@ async function loadConfig(configPath, cwd = process.cwd()) {
|
|
|
65
67
|
}
|
|
66
68
|
return {};
|
|
67
69
|
}
|
|
68
|
-
|
|
69
70
|
//#endregion
|
|
70
71
|
export { defaults, defineConfig, resolveConfig };
|
|
71
|
-
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/config/index.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport { createJiti } from 'jiti'\nimport { fileURLToPath } from 'node:url'\nimport { createDefu } from 'defu'\n\n// defu that replaces arrays: if user provides content: ['x'], it replaces the default, not appends\nconst merge = createDefu((obj, key, value) => {\n if (Array.isArray(obj[key])) {\n obj[key] = value\n return true\n }\n})\nimport { defaults } from './defaults.ts'\nimport type { MaizzleConfig } from '../types/index.ts'\n\nexport { defineConfig } from '../composables/defineConfig.ts'\nexport { defaults } from './defaults.ts'\n\nconst CONFIG_FILES = [\n 'maizzle.config.ts',\n 'maizzle.config.js',\n]\n\n/**\n * Resolve the Maizzle config.\n *\n * Always loads from the config file on disk (maizzle.config.{ts,js}),\n * then merges the programmatic config on top, then fills in defaults.\n */\nexport async function resolveConfig(\n config?: Partial<MaizzleConfig> | string,\n cwd: string = process.cwd(),\n): Promise<MaizzleConfig> {\n // If a string path was provided, load that specific file\n const fileConfig = await loadConfig(\n typeof config === 'string' ? config : undefined,\n cwd,\n )\n\n // Programmatic config (object) overrides file config, which overrides defaults\n const programmaticConfig = typeof config === 'object' && config !== null ? config : {}\n\n const merged = merge(programmaticConfig, fileConfig, defaults) as MaizzleConfig\n\n // Check if root was explicitly provided before resolving\n const hasExplicitRoot = !!(programmaticConfig.root ?? fileConfig.root)\n\n // Resolve root to an absolute path (defaults to cwd)\n const root = resolve(cwd, merged.root ?? '.')\n merged.root = root\n\n // Resolve content patterns relative to root\n if (merged.content) {\n merged.content = merged.content.map(p => {\n // Skip already-absolute or negated patterns\n if (p.startsWith('/') || p.startsWith('!')) return p\n return resolve(root, p).replace(/\\\\/g, '/')\n })\n }\n\n // Resolve static source patterns relative to root\n if (merged.static?.source) {\n merged.static.source = merged.static.source.map(p => {\n if (p.startsWith('/') || p.startsWith('!')) return p\n return resolve(root, p).replace(/\\\\/g, '/')\n })\n }\n\n // Resolve components.source paths relative to cwd (not root),\n // since extra component dirs often live outside the root directory.\n // String entries → resolve in-place. Object entries → resolve `path`,\n // preserve `prefix`/`pathPrefix`.\n if (merged.components?.source) {\n const dirs = Array.isArray(merged.components.source)\n ? merged.components.source\n : [merged.components.source]\n\n merged.components.source = dirs.map(entry => {\n if (typeof entry === 'string') {\n return entry.startsWith('/') ? entry : resolve(cwd, entry)\n }\n return {\n ...entry,\n path: entry.path.startsWith('/') ? entry.path : resolve(cwd, entry.path),\n }\n })\n }\n\n // Default css.base to root when root is explicitly set,\n // so Tailwind resolves @source from the right directory.\n // When root is not set, leave css.base undefined so Tailwind\n // uses its own default (the template file's directory).\n if (hasExplicitRoot && !merged.css?.base) {\n if (!merged.css) merged.css = {}\n merged.css.base = root\n }\n\n return merged\n}\n\nasync function loadConfig(\n configPath?: string,\n cwd: string = process.cwd(),\n): Promise<MaizzleConfig> {\n const jiti = createJiti(fileURLToPath(import.meta.url), { moduleCache: false })\n\n // If an explicit path was provided, use it directly\n if (configPath) {\n const absolutePath = resolve(cwd, configPath)\n\n if (!existsSync(absolutePath)) {\n throw new Error(`Config file not found: ${absolutePath}`)\n }\n\n const mod = await jiti.import(absolutePath) as any\n return mod.default ?? mod\n }\n\n // Otherwise scan cwd for known config file names\n for (const filename of CONFIG_FILES) {\n const filepath = resolve(cwd, filename)\n\n if (existsSync(filepath)) {\n const mod = await jiti.import(filepath) as any\n return mod.default ?? mod\n }\n }\n\n // No config file found, return empty (defaults will be applied by resolveConfig)\n return {}\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,QAAQ,YAAY,KAAK,KAAK,UAAU;CAC5C,IAAI,MAAM,QAAQ,IAAI,KAAK,EAAE;EAC3B,IAAI,OAAO;EACX,OAAO;;EAET;AAOF,MAAM,eAAe,CACnB,qBACA,oBACD;;;;;;;AAQD,eAAsB,cACpB,QACA,MAAc,QAAQ,KAAK,EACH;CAExB,MAAM,aAAa,MAAM,WACvB,OAAO,WAAW,WAAW,SAAS,KAAA,GACtC,IACD;CAGD,MAAM,qBAAqB,OAAO,WAAW,YAAY,WAAW,OAAO,SAAS,EAAE;CAEtF,MAAM,SAAS,MAAM,oBAAoB,YAAY,SAAS;CAG9D,MAAM,kBAAkB,CAAC,EAAE,mBAAmB,QAAQ,WAAW;CAGjE,MAAM,OAAO,QAAQ,KAAK,OAAO,QAAQ,IAAI;CAC7C,OAAO,OAAO;CAGd,IAAI,OAAO,SACT,OAAO,UAAU,OAAO,QAAQ,KAAI,MAAK;EAEvC,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,IAAI,EAAE,OAAO;EACnD,OAAO,QAAQ,MAAM,EAAE,CAAC,QAAQ,OAAO,IAAI;GAC3C;CAIJ,IAAI,OAAO,QAAQ,QACjB,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,KAAI,MAAK;EACnD,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE,WAAW,IAAI,EAAE,OAAO;EACnD,OAAO,QAAQ,MAAM,EAAE,CAAC,QAAQ,OAAO,IAAI;GAC3C;CAOJ,IAAI,OAAO,YAAY,QAAQ;EAC7B,MAAM,OAAO,MAAM,QAAQ,OAAO,WAAW,OAAO,GAChD,OAAO,WAAW,SAClB,CAAC,OAAO,WAAW,OAAO;EAE9B,OAAO,WAAW,SAAS,KAAK,KAAI,UAAS;GAC3C,IAAI,OAAO,UAAU,UACnB,OAAO,MAAM,WAAW,IAAI,GAAG,QAAQ,QAAQ,KAAK,MAAM;GAE5D,OAAO;IACL,GAAG;IACH,MAAM,MAAM,KAAK,WAAW,IAAI,GAAG,MAAM,OAAO,QAAQ,KAAK,MAAM,KAAK;IACzE;IACD;;CAOJ,IAAI,mBAAmB,CAAC,OAAO,KAAK,MAAM;EACxC,IAAI,CAAC,OAAO,KAAK,OAAO,MAAM,EAAE;EAChC,OAAO,IAAI,OAAO;;CAGpB,OAAO;;AAGT,eAAe,WACb,YACA,MAAc,QAAQ,KAAK,EACH;CACxB,MAAM,OAAO,WAAW,cAAc,OAAO,KAAK,IAAI,EAAE,EAAE,aAAa,OAAO,CAAC;CAG/E,IAAI,YAAY;EACd,MAAM,eAAe,QAAQ,KAAK,WAAW;EAE7C,IAAI,CAAC,WAAW,aAAa,EAC3B,MAAM,IAAI,MAAM,0BAA0B,eAAe;EAG3D,MAAM,MAAM,MAAM,KAAK,OAAO,aAAa;EAC3C,OAAO,IAAI,WAAW;;CAIxB,KAAK,MAAM,YAAY,cAAc;EACnC,MAAM,WAAW,QAAQ,KAAK,SAAS;EAEvC,IAAI,WAAW,SAAS,EAAE;GACxB,MAAM,MAAM,MAAM,KAAK,OAAO,SAAS;GACvC,OAAO,IAAI,WAAW;;;CAK1B,OAAO,EAAE"}
|
|
@@ -1,22 +1,33 @@
|
|
|
1
|
-
import { MaizzleConfig } from "../types/config.
|
|
1
|
+
import { MaizzleConfig } from "../types/config.js";
|
|
2
|
+
import { ParsedPath } from "node:path";
|
|
3
|
+
|
|
2
4
|
//#region src/events/index.d.ts
|
|
3
5
|
type EventName = 'beforeCreate' | 'beforeRender' | 'afterRender' | 'afterTransform' | 'afterBuild';
|
|
6
|
+
/**
|
|
7
|
+
* Info about the template currently being processed, passed to per-template
|
|
8
|
+
* event handlers. `source` is the SFC file contents; `path` is the result of
|
|
9
|
+
* `path.parse(absolutePath)` — `{ root, dir, base, ext, name }`.
|
|
10
|
+
*/
|
|
11
|
+
interface TemplateInfo {
|
|
12
|
+
source: string;
|
|
13
|
+
path: ParsedPath;
|
|
14
|
+
}
|
|
4
15
|
interface EventMap {
|
|
5
16
|
beforeCreate: (params: {
|
|
6
17
|
config: MaizzleConfig;
|
|
7
18
|
}) => void | Promise<void>;
|
|
8
19
|
beforeRender: (params: {
|
|
9
20
|
config: MaizzleConfig;
|
|
10
|
-
template:
|
|
21
|
+
template: TemplateInfo;
|
|
11
22
|
}) => string | void | Promise<string | void>;
|
|
12
23
|
afterRender: (params: {
|
|
13
24
|
config: MaizzleConfig;
|
|
14
|
-
template:
|
|
25
|
+
template: TemplateInfo;
|
|
15
26
|
html: string;
|
|
16
27
|
}) => string | void | Promise<string | void>;
|
|
17
28
|
afterTransform: (params: {
|
|
18
29
|
config: MaizzleConfig;
|
|
19
|
-
template:
|
|
30
|
+
template: TemplateInfo;
|
|
20
31
|
html: string;
|
|
21
32
|
}) => string | void | Promise<string | void>;
|
|
22
33
|
afterBuild: (params: {
|
|
@@ -33,6 +44,7 @@ interface EventMap {
|
|
|
33
44
|
*/
|
|
34
45
|
declare class EventManager {
|
|
35
46
|
private handlers;
|
|
47
|
+
private configHandlerCount;
|
|
36
48
|
/**
|
|
37
49
|
* Register handlers from the Maizzle config.
|
|
38
50
|
*/
|
|
@@ -48,18 +60,19 @@ declare class EventManager {
|
|
|
48
60
|
config: MaizzleConfig;
|
|
49
61
|
}): Promise<void>;
|
|
50
62
|
/**
|
|
51
|
-
* Fire beforeRender — if a handler returns a string, it replaces
|
|
63
|
+
* Fire beforeRender — if a handler returns a string, it replaces
|
|
64
|
+
* `template.source` for subsequent handlers and the renderer.
|
|
52
65
|
*/
|
|
53
66
|
fireBeforeRender(params: {
|
|
54
67
|
config: MaizzleConfig;
|
|
55
|
-
template:
|
|
68
|
+
template: TemplateInfo;
|
|
56
69
|
}): Promise<string>;
|
|
57
70
|
/**
|
|
58
71
|
* Fire afterRender — if a handler returns a string, it replaces `html`.
|
|
59
72
|
*/
|
|
60
73
|
fireAfterRender(params: {
|
|
61
74
|
config: MaizzleConfig;
|
|
62
|
-
template:
|
|
75
|
+
template: TemplateInfo;
|
|
63
76
|
html: string;
|
|
64
77
|
}): Promise<string>;
|
|
65
78
|
/**
|
|
@@ -67,7 +80,7 @@ declare class EventManager {
|
|
|
67
80
|
*/
|
|
68
81
|
fireAfterTransform(params: {
|
|
69
82
|
config: MaizzleConfig;
|
|
70
|
-
template:
|
|
83
|
+
template: TemplateInfo;
|
|
71
84
|
html: string;
|
|
72
85
|
}): Promise<string>;
|
|
73
86
|
/**
|
|
@@ -78,14 +91,19 @@ declare class EventManager {
|
|
|
78
91
|
config: MaizzleConfig;
|
|
79
92
|
}): Promise<void>;
|
|
80
93
|
/**
|
|
81
|
-
*
|
|
94
|
+
* Drop SFC-registered handlers, keep config-registered ones.
|
|
95
|
+
*
|
|
96
|
+
* Per default, only clears events whose scope is per-template
|
|
97
|
+
* (`beforeRender`, `afterRender`, `afterTransform`). Build-scoped events
|
|
98
|
+
* (`afterBuild`) accumulate across all templates and fire once at end of
|
|
99
|
+
* build. Pass an explicit list to override.
|
|
82
100
|
*/
|
|
83
|
-
clearSfcHandlers(): void;
|
|
101
|
+
clearSfcHandlers(events?: EventName[]): void;
|
|
84
102
|
/**
|
|
85
103
|
* Clear all handlers entirely.
|
|
86
104
|
*/
|
|
87
105
|
clear(): void;
|
|
88
106
|
}
|
|
89
107
|
//#endregion
|
|
90
|
-
export { EventManager, EventMap, EventName };
|
|
91
|
-
//# sourceMappingURL=index.d.
|
|
108
|
+
export { EventManager, EventMap, EventName, TemplateInfo };
|
|
109
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/events/index.ts"],"mappings":";;;;KAGY,SAAA;;;AAAZ;;;UAOiB,YAAA;EACf,MAAA;EACA,IAAA,EAAM,UAAA;AAAA;AAAA,UAGS,QAAA;EACf,YAAA,GAAe,MAAA;IAAU,MAAA,EAAQ,aAAA;EAAA,aAA2B,OAAA;EAC5D,YAAA,GAAe,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;EAAA,sBAAmC,OAAA;EAC7F,WAAA,GAAc,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;IAAc,IAAA;EAAA,sBAAmC,OAAA;EAC1G,cAAA,GAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;IAAc,IAAA;EAAA,sBAAmC,OAAA;EAC7G,UAAA,GAAa,MAAA;IAAU,KAAA;IAAiB,MAAA,EAAQ,aAAA;EAAA,aAA2B,OAAA;AAAA;;;;;;;;cAUhE,YAAA;EAAA,QACH,QAAA;EAAA,QAIA,kBAAA;EAlBwC;;;EAuBhD,cAAA,CAAe,MAAA,EAAQ,aAAA;EAtBvB;;;EAqCA,EAAA,WAAa,SAAA,CAAA,CAAW,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,QAAA,CAAS,CAAA;EArCM;;;EAgDnD,gBAAA,CAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;EAAA,IAAe,OAAA;EA/CrB;;;;EA2D7B,gBAAA,CAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;EAAA,IAAiB,OAAA;EA1D3C;;;EA2ElC,eAAA,CAAgB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;IAAc,IAAA;EAAA,IAAiB,OAAA;EAjEzE;;;EAoFjB,kBAAA,CAAmB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;IAAc,IAAA;EAAA,IAAiB,OAAA;EApC1D;;;EAuDnC,cAAA,CAAe,MAAA;IAAU,KAAA;IAAiB,MAAA,EAAQ,aAAA;EAAA,IAAe,OAAA;EAnBH;;;;;;;;EAmCpE,gBAAA,CAAiB,MAAA,GAAQ,SAAA;EA7GzB;;;EA2HA,KAAA,CAAA;AAAA"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
var EventManager = class {
|
|
10
10
|
handlers = /* @__PURE__ */ new Map();
|
|
11
|
+
configHandlerCount = /* @__PURE__ */ new Map();
|
|
11
12
|
/**
|
|
12
13
|
* Register handlers from the Maizzle config.
|
|
13
14
|
*/
|
|
@@ -21,6 +22,7 @@ var EventManager = class {
|
|
|
21
22
|
]) {
|
|
22
23
|
const handler = config[name];
|
|
23
24
|
if (typeof handler === "function") this.on(name, handler);
|
|
25
|
+
this.configHandlerCount.set(name, this.handlers.get(name)?.length ?? 0);
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
@@ -38,19 +40,16 @@ var EventManager = class {
|
|
|
38
40
|
for (const handler of handlers) await handler(params);
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
|
-
* Fire beforeRender — if a handler returns a string, it replaces
|
|
43
|
+
* Fire beforeRender — if a handler returns a string, it replaces
|
|
44
|
+
* `template.source` for subsequent handlers and the renderer.
|
|
42
45
|
*/
|
|
43
46
|
async fireBeforeRender(params) {
|
|
44
47
|
const handlers = this.handlers.get("beforeRender") ?? [];
|
|
45
|
-
let { template } = params;
|
|
46
48
|
for (const handler of handlers) {
|
|
47
|
-
const result = await handler(
|
|
48
|
-
|
|
49
|
-
template
|
|
50
|
-
});
|
|
51
|
-
if (typeof result === "string") template = result;
|
|
49
|
+
const result = await handler(params);
|
|
50
|
+
if (typeof result === "string") params.template.source = result;
|
|
52
51
|
}
|
|
53
|
-
return template;
|
|
52
|
+
return params.template.source;
|
|
54
53
|
}
|
|
55
54
|
/**
|
|
56
55
|
* Fire afterRender — if a handler returns a string, it replaces `html`.
|
|
@@ -92,10 +91,24 @@ var EventManager = class {
|
|
|
92
91
|
for (const handler of handlers) await handler(params);
|
|
93
92
|
}
|
|
94
93
|
/**
|
|
95
|
-
*
|
|
94
|
+
* Drop SFC-registered handlers, keep config-registered ones.
|
|
95
|
+
*
|
|
96
|
+
* Per default, only clears events whose scope is per-template
|
|
97
|
+
* (`beforeRender`, `afterRender`, `afterTransform`). Build-scoped events
|
|
98
|
+
* (`afterBuild`) accumulate across all templates and fire once at end of
|
|
99
|
+
* build. Pass an explicit list to override.
|
|
96
100
|
*/
|
|
97
|
-
clearSfcHandlers(
|
|
98
|
-
|
|
101
|
+
clearSfcHandlers(events = [
|
|
102
|
+
"beforeRender",
|
|
103
|
+
"afterRender",
|
|
104
|
+
"afterTransform"
|
|
105
|
+
]) {
|
|
106
|
+
for (const name of events) {
|
|
107
|
+
const handlers = this.handlers.get(name);
|
|
108
|
+
if (!handlers) continue;
|
|
109
|
+
const keep = this.configHandlerCount.get(name) ?? 0;
|
|
110
|
+
if (handlers.length > keep) this.handlers.set(name, handlers.slice(0, keep));
|
|
111
|
+
}
|
|
99
112
|
}
|
|
100
113
|
/**
|
|
101
114
|
* Clear all handlers entirely.
|
|
@@ -104,7 +117,7 @@ var EventManager = class {
|
|
|
104
117
|
this.handlers.clear();
|
|
105
118
|
}
|
|
106
119
|
};
|
|
107
|
-
|
|
108
120
|
//#endregion
|
|
109
121
|
export { EventManager };
|
|
110
|
-
|
|
122
|
+
|
|
123
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/events/index.ts"],"sourcesContent":["import type { ParsedPath } from 'node:path'\nimport type { MaizzleConfig } from '../types/index.ts'\n\nexport type EventName = 'beforeCreate' | 'beforeRender' | 'afterRender' | 'afterTransform' | 'afterBuild'\n\n/**\n * Info about the template currently being processed, passed to per-template\n * event handlers. `source` is the SFC file contents; `path` is the result of\n * `path.parse(absolutePath)` — `{ root, dir, base, ext, name }`.\n */\nexport interface TemplateInfo {\n source: string\n path: ParsedPath\n}\n\nexport interface EventMap {\n beforeCreate: (params: { config: MaizzleConfig }) => void | Promise<void>\n beforeRender: (params: { config: MaizzleConfig; template: TemplateInfo }) => string | void | Promise<string | void>\n afterRender: (params: { config: MaizzleConfig; template: TemplateInfo; html: string }) => string | void | Promise<string | void>\n afterTransform: (params: { config: MaizzleConfig; template: TemplateInfo; html: string }) => string | void | Promise<string | void>\n afterBuild: (params: { files: string[]; config: MaizzleConfig }) => void | Promise<void>\n}\n\n/**\n * Central event manager that collects handlers from config and useEvent() calls.\n *\n * Handlers are run in order: config handler first, then SFC handlers in registration order.\n * For events that return a value (beforeRender, afterRender, afterTransform),\n * the returned value replaces the corresponding input for the next handler.\n */\nexport class EventManager {\n private handlers = new Map<EventName, EventMap[EventName][]>()\n // Snapshot of config-handler counts per event, captured at registerConfig().\n // clearSfcHandlers() truncates each list back to this count, dropping any\n // SFC-registered handlers that were appended after.\n private configHandlerCount = new Map<EventName, number>()\n\n /**\n * Register handlers from the Maizzle config.\n */\n registerConfig(config: MaizzleConfig) {\n const eventNames: EventName[] = ['beforeCreate', 'beforeRender', 'afterRender', 'afterTransform', 'afterBuild']\n\n for (const name of eventNames) {\n const handler = config[name]\n if (typeof handler === 'function') {\n this.on(name, handler as EventMap[typeof name])\n }\n this.configHandlerCount.set(name, this.handlers.get(name)?.length ?? 0)\n }\n }\n\n /**\n * Register a handler for an event (used by useEvent composable).\n */\n on<K extends EventName>(name: K, handler: EventMap[K]) {\n if (!this.handlers.has(name)) {\n this.handlers.set(name, [])\n }\n\n this.handlers.get(name)!.push(handler)\n }\n\n /**\n * Fire beforeCreate — runs all handlers, config is mutated in place.\n */\n async fireBeforeCreate(params: { config: MaizzleConfig }) {\n const handlers = this.handlers.get('beforeCreate') ?? []\n\n for (const handler of handlers) {\n await (handler as EventMap['beforeCreate'])(params)\n }\n }\n\n /**\n * Fire beforeRender — if a handler returns a string, it replaces\n * `template.source` for subsequent handlers and the renderer.\n */\n async fireBeforeRender(params: { config: MaizzleConfig; template: TemplateInfo }): Promise<string> {\n const handlers = this.handlers.get('beforeRender') ?? []\n\n for (const handler of handlers) {\n const result = await (handler as EventMap['beforeRender'])(params)\n\n if (typeof result === 'string') {\n params.template.source = result\n }\n }\n\n return params.template.source\n }\n\n /**\n * Fire afterRender — if a handler returns a string, it replaces `html`.\n */\n async fireAfterRender(params: { config: MaizzleConfig; template: TemplateInfo; html: string }): Promise<string> {\n const handlers = this.handlers.get('afterRender') ?? []\n\n let { html } = params\n\n for (const handler of handlers) {\n const result = await (handler as EventMap['afterRender'])({ config: params.config, template: params.template, html })\n\n if (typeof result === 'string') {\n html = result\n }\n }\n\n return html\n }\n\n /**\n * Fire afterTransform — if a handler returns a string, it replaces `html`.\n */\n async fireAfterTransform(params: { config: MaizzleConfig; template: TemplateInfo; html: string }): Promise<string> {\n const handlers = this.handlers.get('afterTransform') ?? []\n\n let { html } = params\n\n for (const handler of handlers) {\n const result = await (handler as EventMap['afterTransform'])({ config: params.config, template: params.template, html })\n\n if (typeof result === 'string') {\n html = result\n }\n }\n\n return html\n }\n\n /**\n * Fire afterBuild — runs all handlers with the file list.\n */\n async fireAfterBuild(params: { files: string[]; config: MaizzleConfig }) {\n const handlers = this.handlers.get('afterBuild') ?? []\n\n for (const handler of handlers) {\n await (handler as EventMap['afterBuild'])(params)\n }\n }\n\n /**\n * Drop SFC-registered handlers, keep config-registered ones.\n *\n * Per default, only clears events whose scope is per-template\n * (`beforeRender`, `afterRender`, `afterTransform`). Build-scoped events\n * (`afterBuild`) accumulate across all templates and fire once at end of\n * build. Pass an explicit list to override.\n */\n clearSfcHandlers(events: EventName[] = ['beforeRender', 'afterRender', 'afterTransform']) {\n for (const name of events) {\n const handlers = this.handlers.get(name)\n if (!handlers) continue\n const keep = this.configHandlerCount.get(name) ?? 0\n if (handlers.length > keep) {\n this.handlers.set(name, handlers.slice(0, keep))\n }\n }\n }\n\n /**\n * Clear all handlers entirely.\n */\n clear() {\n this.handlers.clear()\n }\n}\n"],"mappings":";;;;;;;;AA8BA,IAAa,eAAb,MAA0B;CACxB,2BAAmB,IAAI,KAAuC;CAI9D,qCAA6B,IAAI,KAAwB;;;;CAKzD,eAAe,QAAuB;EAGpC,KAAK,MAAM,QAAQ;GAFc;GAAgB;GAAgB;GAAe;GAAkB;GAErE,EAAE;GAC7B,MAAM,UAAU,OAAO;GACvB,IAAI,OAAO,YAAY,YACrB,KAAK,GAAG,MAAM,QAAiC;GAEjD,KAAK,mBAAmB,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,EAAE,UAAU,EAAE;;;;;;CAO3E,GAAwB,MAAS,SAAsB;EACrD,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,EAC1B,KAAK,SAAS,IAAI,MAAM,EAAE,CAAC;EAG7B,KAAK,SAAS,IAAI,KAAK,CAAE,KAAK,QAAQ;;;;;CAMxC,MAAM,iBAAiB,QAAmC;EACxD,MAAM,WAAW,KAAK,SAAS,IAAI,eAAe,IAAI,EAAE;EAExD,KAAK,MAAM,WAAW,UACpB,MAAO,QAAqC,OAAO;;;;;;CAQvD,MAAM,iBAAiB,QAA4E;EACjG,MAAM,WAAW,KAAK,SAAS,IAAI,eAAe,IAAI,EAAE;EAExD,KAAK,MAAM,WAAW,UAAU;GAC9B,MAAM,SAAS,MAAO,QAAqC,OAAO;GAElE,IAAI,OAAO,WAAW,UACpB,OAAO,SAAS,SAAS;;EAI7B,OAAO,OAAO,SAAS;;;;;CAMzB,MAAM,gBAAgB,QAA0F;EAC9G,MAAM,WAAW,KAAK,SAAS,IAAI,cAAc,IAAI,EAAE;EAEvD,IAAI,EAAE,SAAS;EAEf,KAAK,MAAM,WAAW,UAAU;GAC9B,MAAM,SAAS,MAAO,QAAoC;IAAE,QAAQ,OAAO;IAAQ,UAAU,OAAO;IAAU;IAAM,CAAC;GAErH,IAAI,OAAO,WAAW,UACpB,OAAO;;EAIX,OAAO;;;;;CAMT,MAAM,mBAAmB,QAA0F;EACjH,MAAM,WAAW,KAAK,SAAS,IAAI,iBAAiB,IAAI,EAAE;EAE1D,IAAI,EAAE,SAAS;EAEf,KAAK,MAAM,WAAW,UAAU;GAC9B,MAAM,SAAS,MAAO,QAAuC;IAAE,QAAQ,OAAO;IAAQ,UAAU,OAAO;IAAU;IAAM,CAAC;GAExH,IAAI,OAAO,WAAW,UACpB,OAAO;;EAIX,OAAO;;;;;CAMT,MAAM,eAAe,QAAoD;EACvE,MAAM,WAAW,KAAK,SAAS,IAAI,aAAa,IAAI,EAAE;EAEtD,KAAK,MAAM,WAAW,UACpB,MAAO,QAAmC,OAAO;;;;;;;;;;CAYrD,iBAAiB,SAAsB;EAAC;EAAgB;EAAe;EAAiB,EAAE;EACxF,KAAK,MAAM,QAAQ,QAAQ;GACzB,MAAM,WAAW,KAAK,SAAS,IAAI,KAAK;GACxC,IAAI,CAAC,UAAU;GACf,MAAM,OAAO,KAAK,mBAAmB,IAAI,KAAK,IAAI;GAClD,IAAI,SAAS,SAAS,MACpB,KAAK,SAAS,IAAI,MAAM,SAAS,MAAM,GAAG,KAAK,CAAC;;;;;;CAQtD,QAAQ;EACN,KAAK,SAAS,OAAO"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AttributesConfig, ComponentSource, CssConfig, EntitiesConfig, FilterFunction, FiltersConfig, HtmlConfig, MaizzleConfig, PlaintextConfig, UrlConfig, UrlQuery, UrlQueryOptions } from "./types/config.js";
|
|
2
|
+
import { build } from "./build.js";
|
|
3
|
+
import { defineConfig } from "./composables/defineConfig.js";
|
|
4
|
+
import { usePlaintext } from "./composables/usePlaintext.js";
|
|
5
|
+
import { useBaseUrl } from "./composables/useBaseUrl.js";
|
|
6
|
+
import { useConfig } from "./composables/useConfig.js";
|
|
7
|
+
import { useCurrentTemplate } from "./composables/useCurrentTemplate.js";
|
|
8
|
+
import { useDoctype } from "./composables/useDoctype.js";
|
|
9
|
+
import { useEvent } from "./composables/useEvent.js";
|
|
10
|
+
import { useFont } from "./composables/useFont.js";
|
|
11
|
+
import { useOutlookFallback } from "./composables/useOutlookFallback.js";
|
|
12
|
+
import { useTransformers } from "./composables/useTransformers.js";
|
|
13
|
+
import { useUrlQuery } from "./composables/useUrlQuery.js";
|
|
14
|
+
import { resolveConfig } from "./config/index.js";
|
|
15
|
+
import { maizzle } from "./plugin.js";
|
|
16
|
+
import { NormalizedComponentSource, normalizeComponentSources } from "./utils/componentSources.js";
|
|
17
|
+
import { CreateRendererOptions, RenderedTemplate, Renderer, createRenderer } from "./render/createRenderer.js";
|
|
18
|
+
import { RenderResult, render } from "./render/index.js";
|
|
19
|
+
import { serve } from "./serve.js";
|
|
20
|
+
import { PrepareOptions, prepare } from "./prepare.js";
|
|
21
|
+
import { createPlaintext } from "./plaintext.js";
|
|
22
|
+
import { inlineLink } from "./transformers/inlineLink.js";
|
|
23
|
+
import { urlQuery } from "./transformers/urlQuery.js";
|
|
24
|
+
import { BaseUrlOptions, base } from "./transformers/base.js";
|
|
25
|
+
import { entities } from "./transformers/entities.js";
|
|
26
|
+
import { safeClassNames } from "./transformers/safeClassNames.js";
|
|
27
|
+
import { attributeToStyle } from "./transformers/attributeToStyle.js";
|
|
28
|
+
import { InlineCssOptions, inlineCss } from "./transformers/inlineCss.js";
|
|
29
|
+
import { ShorthandCssOptions, shorthandCss } from "./transformers/shorthandCss.js";
|
|
30
|
+
import { sixHex } from "./transformers/sixHex.js";
|
|
31
|
+
import { RemoveAttributeOption, RemoveAttributeRule, removeAttributes } from "./transformers/removeAttributes.js";
|
|
32
|
+
import { addAttributes } from "./transformers/addAttributes.js";
|
|
33
|
+
import { PurgeCssOptions, purgeCss } from "./transformers/purgeCss.js";
|
|
34
|
+
import { filters } from "./transformers/filters/index.js";
|
|
35
|
+
import { replaceStrings } from "./transformers/replaceStrings.js";
|
|
36
|
+
import { FormatOptions, format } from "./transformers/format.js";
|
|
37
|
+
import { MinifyOptions, minify } from "./transformers/minify.js";
|
|
38
|
+
import { useHead } from "@unhead/vue";
|
|
39
|
+
export { type AttributesConfig, type BaseUrlOptions, type ComponentSource, type CreateRendererOptions, type CssConfig, type EntitiesConfig, type FilterFunction, type FiltersConfig, type FormatOptions, type HtmlConfig, type InlineCssOptions, type MaizzleConfig, type MinifyOptions, type NormalizedComponentSource, type PlaintextConfig, type PrepareOptions, type PurgeCssOptions, type RemoveAttributeOption, type RemoveAttributeRule, type RenderResult, type RenderedTemplate, type Renderer, type ShorthandCssOptions, type UrlConfig, type UrlQuery, type UrlQueryOptions, addAttributes, attributeToStyle, base, build, createPlaintext, createRenderer, defineConfig, entities, filters, format, inlineCss, inlineLink, maizzle, minify, normalizeComponentSources, prepare, purgeCss, removeAttributes, render, replaceStrings, resolveConfig, safeClassNames, serve, shorthandCss, sixHex, urlQuery, useBaseUrl, useConfig, useCurrentTemplate, useDoctype, useEvent, useFont, useHead, useOutlookFallback, usePlaintext, useTransformers, useUrlQuery };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useConfig } from "./composables/useConfig.js";
|
|
2
|
+
import { defineConfig } from "./composables/defineConfig.js";
|
|
3
|
+
import { resolveConfig } from "./config/index.js";
|
|
4
|
+
import { inlineLink } from "./transformers/inlineLink.js";
|
|
5
|
+
import { safeClassNames } from "./transformers/safeClassNames.js";
|
|
6
|
+
import { attributeToStyle } from "./transformers/attributeToStyle.js";
|
|
7
|
+
import { inlineCss } from "./transformers/inlineCss.js";
|
|
8
|
+
import { removeAttributes } from "./transformers/removeAttributes.js";
|
|
9
|
+
import { shorthandCss } from "./transformers/shorthandCss.js";
|
|
10
|
+
import { sixHex } from "./transformers/sixHex.js";
|
|
11
|
+
import { addAttributes } from "./transformers/addAttributes.js";
|
|
12
|
+
import { filters } from "./transformers/filters/index.js";
|
|
13
|
+
import { base } from "./transformers/base.js";
|
|
14
|
+
import { entities } from "./transformers/entities.js";
|
|
15
|
+
import { urlQuery } from "./transformers/urlQuery.js";
|
|
16
|
+
import { purgeCss } from "./transformers/purgeCss.js";
|
|
17
|
+
import { replaceStrings } from "./transformers/replaceStrings.js";
|
|
18
|
+
import { format } from "./transformers/format.js";
|
|
19
|
+
import { minify } from "./transformers/minify.js";
|
|
20
|
+
import { normalizeComponentSources } from "./utils/componentSources.js";
|
|
21
|
+
import { createRenderer } from "./render/createRenderer.js";
|
|
22
|
+
import { createPlaintext } from "./plaintext.js";
|
|
23
|
+
import { useCurrentTemplate } from "./composables/useCurrentTemplate.js";
|
|
24
|
+
import { build } from "./build.js";
|
|
25
|
+
import { maizzle } from "./plugin.js";
|
|
26
|
+
import { render } from "./render/index.js";
|
|
27
|
+
import { serve } from "./serve.js";
|
|
28
|
+
import { prepare } from "./prepare.js";
|
|
29
|
+
import { useDoctype } from "./composables/useDoctype.js";
|
|
30
|
+
import { useEvent } from "./composables/useEvent.js";
|
|
31
|
+
import { useFont } from "./composables/useFont.js";
|
|
32
|
+
import { useOutlookFallback } from "./composables/useOutlookFallback.js";
|
|
33
|
+
import { usePlaintext } from "./composables/usePlaintext.js";
|
|
34
|
+
import { useTransformers } from "./composables/useTransformers.js";
|
|
35
|
+
import { useBaseUrl } from "./composables/useBaseUrl.js";
|
|
36
|
+
import { useUrlQuery } from "./composables/useUrlQuery.js";
|
|
37
|
+
import { useHead } from "@unhead/vue";
|
|
38
|
+
export { addAttributes, attributeToStyle, base, build, createPlaintext, createRenderer, defineConfig, entities, filters, format, inlineCss, inlineLink, maizzle, minify, normalizeComponentSources, prepare, purgeCss, removeAttributes, render, replaceStrings, resolveConfig, safeClassNames, serve, shorthandCss, sixHex, urlQuery, useBaseUrl, useConfig, useCurrentTemplate, useDoctype, useEvent, useFont, useHead, useOutlookFallback, usePlaintext, useTransformers, useUrlQuery };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plaintext.d.ts","names":[],"sources":["../src/plaintext.ts"],"mappings":";iBAUgB,eAAA,CAAgB,IAAA,UAAc,OAAA,GAAU,MAAA"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import defu
|
|
1
|
+
import defu from "defu";
|
|
2
2
|
import { stripHtml } from "string-strip-html";
|
|
3
|
-
|
|
4
3
|
//#region src/plaintext.ts
|
|
5
4
|
const defaults = { dumpLinkHrefsNearby: {
|
|
6
5
|
enabled: true,
|
|
7
6
|
putOnNewLine: true
|
|
8
7
|
} };
|
|
9
8
|
function createPlaintext(html, options) {
|
|
10
|
-
return stripHtml(html, defu
|
|
9
|
+
return stripHtml(html, defu(options, defaults)).result;
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
//#endregion
|
|
14
12
|
export { createPlaintext };
|
|
15
|
-
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=plaintext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plaintext.js","names":[],"sources":["../src/plaintext.ts"],"sourcesContent":["import { stripHtml } from 'string-strip-html'\nimport defu from 'defu'\n\nconst defaults = {\n dumpLinkHrefsNearby: {\n enabled: true,\n putOnNewLine: true,\n },\n}\n\nexport function createPlaintext(html: string, options?: Record<string, unknown>): string {\n return stripHtml(html, defu(options, defaults)).result\n}\n"],"mappings":";;;AAGA,MAAM,WAAW,EACf,qBAAqB;CACnB,SAAS;CACT,cAAc;CACf,EACF;AAED,SAAgB,gBAAgB,MAAc,SAA2C;CACvF,OAAO,UAAU,MAAM,KAAK,SAAS,SAAS,CAAC,CAAC"}
|