@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/render/index.ts"],"sourcesContent":["import { resolve, extname } from 'node:path'\nimport { resolveConfig } from '../config/index.ts'\nimport { runTransformers } from '../transformers/index.ts'\nimport { createPlaintext } from '../plaintext.ts'\nimport { stripForHtml, stripForPlaintext } from '../utils/output-markers.ts'\nimport defu from 'defu'\nimport type { Component } from 'vue'\nimport type { MaizzleConfig } from '../types/index.ts'\nimport { createRenderer } from './createRenderer.ts'\nimport { getActiveRenderer } from './active.ts'\nimport { normalizeComponentSources } from '../utils/componentSources.ts'\n\nexport type { Renderer, RenderedTemplate, CreateRendererOptions } from './createRenderer.ts'\nexport { createRenderer } from './createRenderer.ts'\n\nexport interface RenderResult {\n html: string\n config: MaizzleConfig\n plaintext?: string\n}\n\n/**\n * Render a Vue SFC email template to a fully-transformed HTML string.\n * Accepts a file path or a raw SFC source string.\n */\nexport async function render(\n template: string | Component,\n config?: Partial<MaizzleConfig>,\n): Promise<RenderResult> {\n if (template == null) {\n throw new Error(\n `render() received ${template}. If you used \\`import X from './x.vue'\\`, Node cannot load .vue files natively — pass the path string instead: render('./x.vue').`,\n )\n }\n if (typeof template !== 'string' && typeof template !== 'object' && typeof template !== 'function') {\n throw new TypeError(\n `render() expected a file path or SFC source string, got ${typeof template}.`,\n )\n }\n\n const resolvedConfig = await resolveConfig(config)\n\n // Reuse a renderer started by the Vite plugin when one is active. Spinning\n // up a fresh Vite SSR server inside a host Vite dev process (e.g. TanStack\n // Start) collides on env wiring and throws \"outsideEmitter undefined\".\n const active = getActiveRenderer()\n const renderer = active ?? await createRenderer({\n markdown: resolvedConfig.markdown,\n root: resolvedConfig.root,\n componentDirs: normalizeComponentSources(resolvedConfig.components?.source, process.cwd()),\n vite: resolvedConfig.vite,\n })\n\n try {\n const isFile = typeof template === 'string'\n && ['.vue', '.md'].includes(extname(template))\n && !template.includes('\\n')\n\n const rendered = await renderer.render(isFile ? resolve(template) : template, resolvedConfig)\n let html = rendered.html\n\n const doctype = rendered.doctype ?? rendered.templateConfig.doctype ?? '<!DOCTYPE html>'\n\n if (rendered.templateConfig.useTransformers !== false) {\n html = await runTransformers(html, rendered.templateConfig, isFile ? resolve(template) : undefined, doctype, rendered.tailwindBlocks)\n }\n html = `${doctype}\\n${html}`\n\n const globalPlaintext = rendered.templateConfig.plaintext\n const sfcPlaintext = rendered.plaintext\n\n let plaintextResult: string | undefined\n\n if (globalPlaintext || sfcPlaintext) {\n const globalCfg = typeof globalPlaintext === 'object' ? globalPlaintext : {}\n const stripOptions = defu(sfcPlaintext?.options, globalCfg.options)\n plaintextResult = createPlaintext(stripForPlaintext(html), stripOptions)\n }\n\n return { html: stripForHtml(html), config: rendered.templateConfig, plaintext: plaintextResult }\n } finally {\n if (!active) await renderer.close()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAyBA,eAAsB,OACpB,UACA,QACuB;CACvB,IAAI,YAAY,MACd,MAAM,IAAI,MACR,qBAAqB,SAAS,oIAC/B;CAEH,IAAI,OAAO,aAAa,YAAY,OAAO,aAAa,YAAY,OAAO,aAAa,YACtF,MAAM,IAAI,UACR,2DAA2D,OAAO,SAAS,GAC5E;CAGH,MAAM,iBAAiB,MAAM,cAAc,OAAO;CAKlD,MAAM,SAAS,mBAAmB;CAClC,MAAM,WAAW,UAAU,MAAM,eAAe;EAC9C,UAAU,eAAe;EACzB,MAAM,eAAe;EACrB,eAAe,0BAA0B,eAAe,YAAY,QAAQ,QAAQ,KAAK,CAAC;EAC1F,MAAM,eAAe;EACtB,CAAC;CAEF,IAAI;EACF,MAAM,SAAS,OAAO,aAAa,YAC9B,CAAC,QAAQ,MAAM,CAAC,SAAS,QAAQ,SAAS,CAAC,IAC3C,CAAC,SAAS,SAAS,KAAK;EAE7B,MAAM,WAAW,MAAM,SAAS,OAAO,SAAS,QAAQ,SAAS,GAAG,UAAU,eAAe;EAC7F,IAAI,OAAO,SAAS;EAEpB,MAAM,UAAU,SAAS,WAAW,SAAS,eAAe,WAAW;EAEvE,IAAI,SAAS,eAAe,oBAAoB,OAC9C,OAAO,MAAM,gBAAgB,MAAM,SAAS,gBAAgB,SAAS,QAAQ,SAAS,GAAG,KAAA,GAAW,SAAS,SAAS,eAAe;EAEvI,OAAO,GAAG,QAAQ,IAAI;EAEtB,MAAM,kBAAkB,SAAS,eAAe;EAChD,MAAM,eAAe,SAAS;EAE9B,IAAI;EAEJ,IAAI,mBAAmB,cAAc;GACnC,MAAM,YAAY,OAAO,oBAAoB,WAAW,kBAAkB,EAAE;GAC5E,MAAM,eAAe,KAAK,cAAc,SAAS,UAAU,QAAQ;GACnE,kBAAkB,gBAAgB,kBAAkB,KAAK,EAAE,aAAa;;EAG1E,OAAO;GAAE,MAAM,aAAa,KAAK;GAAE,QAAQ,SAAS;GAAgB,WAAW;GAAiB;WACxF;EACR,IAAI,CAAC,QAAQ,MAAM,SAAS,OAAO"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FontRegistration } from "../composables/renderContext.js";
|
|
2
|
+
import { ChildNode } from "domhandler";
|
|
3
|
+
|
|
4
|
+
//#region src/render/injectFonts.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Inject font `<link>` tags into `<head>` and merge `@theme` declarations
|
|
7
|
+
* into the template's existing Tailwind `<style>` block (so the
|
|
8
|
+
* `font-{slug}` utilities are generated in the same compilation unit
|
|
9
|
+
* as the Tailwind import). Without a Tailwind import, emits plain
|
|
10
|
+
* `.font-{slug}` class rules so the utility still works.
|
|
11
|
+
*/
|
|
12
|
+
declare function injectFonts(dom: ChildNode[], fonts: FontRegistration[], parseDom: (html: string) => ChildNode[], walk: (ast: ChildNode[], cb: (n: ChildNode) => void) => void): void;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { injectFonts };
|
|
15
|
+
//# sourceMappingURL=injectFonts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectFonts.d.ts","names":[],"sources":["../../src/render/injectFonts.ts"],"mappings":";;;;;;AAoBA;;;;;iBAAgB,WAAA,CACd,GAAA,EAAK,SAAA,IACL,KAAA,EAAO,gBAAA,IACP,QAAA,GAAW,IAAA,aAAiB,SAAA,IAC5B,IAAA,GAAO,GAAA,EAAK,SAAA,IAAa,EAAA,GAAK,CAAA,EAAG,SAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { decodeStyleEntities } from "../utils/decodeStyleEntities.js";
|
|
2
|
+
//#region src/render/injectFonts.ts
|
|
3
|
+
const TAILWIND_IMPORT_RE = /((@import|@reference)\s+["'](tailwindcss|@maizzle\/tailwindcss)|@tailwind\s)/;
|
|
4
|
+
function getText(el) {
|
|
5
|
+
return (el.children || []).filter((c) => c.type === "text").map((c) => c.data).join("");
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Inject font `<link>` tags into `<head>` and merge `@theme` declarations
|
|
9
|
+
* into the template's existing Tailwind `<style>` block (so the
|
|
10
|
+
* `font-{slug}` utilities are generated in the same compilation unit
|
|
11
|
+
* as the Tailwind import). Without a Tailwind import, emits plain
|
|
12
|
+
* `.font-{slug}` class rules so the utility still works.
|
|
13
|
+
*/
|
|
14
|
+
function injectFonts(dom, fonts, parseDom, walk) {
|
|
15
|
+
if (!fonts.length) return;
|
|
16
|
+
let head;
|
|
17
|
+
let tailwindStyle;
|
|
18
|
+
walk(dom, (node) => {
|
|
19
|
+
const el = node;
|
|
20
|
+
if (!el.name) return;
|
|
21
|
+
if (el.name === "head" && !head) head = el;
|
|
22
|
+
if (el.name === "style" && !tailwindStyle && TAILWIND_IMPORT_RE.test(decodeStyleEntities(getText(el)))) tailwindStyle = el;
|
|
23
|
+
});
|
|
24
|
+
if (!head) return;
|
|
25
|
+
const linkNodes = parseDom(fonts.map((f) => `<link href="${f.url}" rel="stylesheet" media="screen">`).join(""));
|
|
26
|
+
for (const child of linkNodes) child.parent = head;
|
|
27
|
+
head.children = [...head.children || [], ...linkNodes];
|
|
28
|
+
if (tailwindStyle) {
|
|
29
|
+
const themeDecls = fonts.map((f) => ` --font-${f.slug}: ${f.declaration};`).join("\n");
|
|
30
|
+
const existing = getText(tailwindStyle);
|
|
31
|
+
tailwindStyle.children = [{
|
|
32
|
+
type: "text",
|
|
33
|
+
data: `${existing}\n@theme {\n${themeDecls}\n}\n`,
|
|
34
|
+
parent: tailwindStyle
|
|
35
|
+
}];
|
|
36
|
+
} else {
|
|
37
|
+
const styleNodes = parseDom(`<style>\n${fonts.map((f) => `.font-${f.slug} { font-family: ${f.declaration}; }`).join("\n")}\n</style>`);
|
|
38
|
+
for (const child of styleNodes) child.parent = head;
|
|
39
|
+
head.children = [...head.children || [], ...styleNodes];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { injectFonts };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=injectFonts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectFonts.js","names":[],"sources":["../../src/render/injectFonts.ts"],"sourcesContent":["import type { ChildNode, Element } from 'domhandler'\nimport type { FontRegistration } from '../composables/renderContext.ts'\nimport { decodeStyleEntities } from '../utils/decodeStyleEntities.ts'\n\nconst TAILWIND_IMPORT_RE = /((@import|@reference)\\s+[\"'](tailwindcss|@maizzle\\/tailwindcss)|@tailwind\\s)/\n\nfunction getText(el: Element): string {\n return (el.children || [])\n .filter((c: any) => c.type === 'text')\n .map((c: any) => c.data)\n .join('')\n}\n\n/**\n * Inject font `<link>` tags into `<head>` and merge `@theme` declarations\n * into the template's existing Tailwind `<style>` block (so the\n * `font-{slug}` utilities are generated in the same compilation unit\n * as the Tailwind import). Without a Tailwind import, emits plain\n * `.font-{slug}` class rules so the utility still works.\n */\nexport function injectFonts(\n dom: ChildNode[],\n fonts: FontRegistration[],\n parseDom: (html: string) => ChildNode[],\n walk: (ast: ChildNode[], cb: (n: ChildNode) => void) => void,\n): void {\n if (!fonts.length) return\n\n let head: Element | undefined\n let tailwindStyle: Element | undefined\n\n walk(dom, (node) => {\n const el = node as Element\n if (!el.name) return\n if (el.name === 'head' && !head) head = el\n if (el.name === 'style' && !tailwindStyle && TAILWIND_IMPORT_RE.test(decodeStyleEntities(getText(el)))) {\n tailwindStyle = el\n }\n })\n\n if (!head) return\n\n const linkHtml = fonts\n .map(f => `<link href=\"${f.url}\" rel=\"stylesheet\" media=\"screen\">`)\n .join('')\n const linkNodes = parseDom(linkHtml)\n for (const child of linkNodes) {\n (child as any).parent = head\n }\n head.children = [...(head.children || []), ...linkNodes] as any\n\n if (tailwindStyle) {\n const themeDecls = fonts\n .map(f => ` --font-${f.slug}: ${f.declaration};`)\n .join('\\n')\n const existing = getText(tailwindStyle)\n tailwindStyle.children = [{\n type: 'text',\n data: `${existing}\\n@theme {\\n${themeDecls}\\n}\\n`,\n parent: tailwindStyle,\n } as any]\n } else {\n const classRules = fonts\n .map(f => `.font-${f.slug} { font-family: ${f.declaration}; }`)\n .join('\\n')\n const styleNodes = parseDom(`<style>\\n${classRules}\\n</style>`)\n for (const child of styleNodes) {\n (child as any).parent = head\n }\n head.children = [...(head.children || []), ...styleNodes] as any\n }\n}\n"],"mappings":";;AAIA,MAAM,qBAAqB;AAE3B,SAAS,QAAQ,IAAqB;CACpC,QAAQ,GAAG,YAAY,EAAE,EACtB,QAAQ,MAAW,EAAE,SAAS,OAAO,CACrC,KAAK,MAAW,EAAE,KAAK,CACvB,KAAK,GAAG;;;;;;;;;AAUb,SAAgB,YACd,KACA,OACA,UACA,MACM;CACN,IAAI,CAAC,MAAM,QAAQ;CAEnB,IAAI;CACJ,IAAI;CAEJ,KAAK,MAAM,SAAS;EAClB,MAAM,KAAK;EACX,IAAI,CAAC,GAAG,MAAM;EACd,IAAI,GAAG,SAAS,UAAU,CAAC,MAAM,OAAO;EACxC,IAAI,GAAG,SAAS,WAAW,CAAC,iBAAiB,mBAAmB,KAAK,oBAAoB,QAAQ,GAAG,CAAC,CAAC,EACpG,gBAAgB;GAElB;CAEF,IAAI,CAAC,MAAM;CAKX,MAAM,YAAY,SAHD,MACd,KAAI,MAAK,eAAe,EAAE,IAAI,oCAAoC,CAClE,KAAK,GAC2B,CAAC;CACpC,KAAK,MAAM,SAAS,WAClB,MAAe,SAAS;CAE1B,KAAK,WAAW,CAAC,GAAI,KAAK,YAAY,EAAE,EAAG,GAAG,UAAU;CAExD,IAAI,eAAe;EACjB,MAAM,aAAa,MAChB,KAAI,MAAK,YAAY,EAAE,KAAK,IAAI,EAAE,YAAY,GAAG,CACjD,KAAK,KAAK;EACb,MAAM,WAAW,QAAQ,cAAc;EACvC,cAAc,WAAW,CAAC;GACxB,MAAM;GACN,MAAM,GAAG,SAAS,cAAc,WAAW;GAC3C,QAAQ;GACT,CAAQ;QACJ;EAIL,MAAM,aAAa,SAAS,YAHT,MAChB,KAAI,MAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,YAAY,KAAK,CAC9D,KAAK,KAC0C,CAAC,YAAY;EAC/D,KAAK,MAAM,SAAS,YAClB,MAAe,SAAS;EAE1B,KAAK,WAAW,CAAC,GAAI,KAAK,YAAY,EAAE,EAAG,GAAG,WAAW"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/render/plugins/codeBlockExtract.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Vite plugin that extracts raw slot content from <CodeBlock> tags
|
|
6
|
+
* and passes it as a :code prop before Vue compiles the template.
|
|
7
|
+
*
|
|
8
|
+
* This lets users write HTML naturally inside CodeBlock slots without
|
|
9
|
+
* Vue attempting to compile it as template syntax.
|
|
10
|
+
*/
|
|
11
|
+
declare function codeBlockExtract(): Plugin;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { codeBlockExtract };
|
|
14
|
+
//# sourceMappingURL=codeBlockExtract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeBlockExtract.d.ts","names":[],"sources":["../../../src/render/plugins/codeBlockExtract.ts"],"mappings":";;;;;AASA;;;;;iBAAgB,gBAAA,CAAA,GAAoB,MAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/render/plugins/codeBlockExtract.ts
|
|
2
|
+
/**
|
|
3
|
+
* Vite plugin that extracts raw slot content from <CodeBlock> tags
|
|
4
|
+
* and passes it as a :code prop before Vue compiles the template.
|
|
5
|
+
*
|
|
6
|
+
* This lets users write HTML naturally inside CodeBlock slots without
|
|
7
|
+
* Vue attempting to compile it as template syntax.
|
|
8
|
+
*/
|
|
9
|
+
function codeBlockExtract() {
|
|
10
|
+
const re = /<(CodeBlock|code-block)((?:\s[^>]*?)?)>([\s\S]*?)<\/\1>/g;
|
|
11
|
+
return {
|
|
12
|
+
name: "maizzle:code-block-extract",
|
|
13
|
+
enforce: "pre",
|
|
14
|
+
transform(code, id) {
|
|
15
|
+
if (!id.endsWith(".vue") && !id.endsWith(".md")) return;
|
|
16
|
+
if (!code.includes("CodeBlock") && !code.includes("code-block")) return;
|
|
17
|
+
const transformed = code.replace(re, (_match, tag, attrs, content) => {
|
|
18
|
+
if (/(?:^|\s):code\b/.test(attrs) || /v-bind:code\b/.test(attrs)) return _match;
|
|
19
|
+
const stripped = content.replace(/^\n+/, "").replace(/\s+$/, "");
|
|
20
|
+
if (!stripped) return _match;
|
|
21
|
+
const minIndent = stripped.match(/^[ \t]*(?=\S)/gm)?.reduce((min, ws) => Math.min(min, ws.length), Infinity) ?? 0;
|
|
22
|
+
return `<${tag}${attrs} code="${(minIndent > 0 ? stripped.replace(new RegExp(`^[ \\t]{${minIndent}}`, "gm"), "") : stripped).replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">")}" />`;
|
|
23
|
+
});
|
|
24
|
+
if (transformed !== code) return {
|
|
25
|
+
code: transformed,
|
|
26
|
+
map: null
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { codeBlockExtract };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=codeBlockExtract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeBlockExtract.js","names":[],"sources":["../../../src/render/plugins/codeBlockExtract.ts"],"sourcesContent":["import type { Plugin } from 'vite'\n\n/**\n * Vite plugin that extracts raw slot content from <CodeBlock> tags\n * and passes it as a :code prop before Vue compiles the template.\n *\n * This lets users write HTML naturally inside CodeBlock slots without\n * Vue attempting to compile it as template syntax.\n */\nexport function codeBlockExtract(): Plugin {\n // Matches <CodeBlock ...>content</CodeBlock> (and kebab-case <code-block>)\n const re = /<(CodeBlock|code-block)((?:\\s[^>]*?)?)>([\\s\\S]*?)<\\/\\1>/g\n\n return {\n name: 'maizzle:code-block-extract',\n enforce: 'pre',\n transform(code: string, id: string) {\n if (!id.endsWith('.vue') && !id.endsWith('.md')) return\n if (!code.includes('CodeBlock') && !code.includes('code-block')) return\n\n const transformed = code.replace(re, (_match, tag, attrs, content) => {\n // Skip if already has a :code or v-bind:code prop\n if (/(?:^|\\s):code\\b/.test(attrs) || /v-bind:code\\b/.test(attrs)) return _match\n\n // Strip leading/trailing blank lines, then dedent based on\n // the minimum indent of non-empty lines (à la min-indent)\n const stripped = content.replace(/^\\n+/, '').replace(/\\s+$/, '')\n if (!stripped) return _match\n\n const minIndent = stripped.match(/^[ \\t]*(?=\\S)/gm)\n ?.reduce((min: number, ws: string) => Math.min(min, ws.length), Infinity) ?? 0\n\n const dedented = minIndent > 0\n ? stripped.replace(new RegExp(`^[ \\\\t]{${minIndent}}`, 'gm'), '')\n : stripped\n\n // HTML-escape for safe embedding in a static attribute value.\n const escaped = dedented\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n\n return `<${tag}${attrs} code=\"${escaped}\" />`\n })\n\n if (transformed !== code) {\n return { code: transformed, map: null }\n }\n },\n }\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,mBAA2B;CAEzC,MAAM,KAAK;CAEX,OAAO;EACL,MAAM;EACN,SAAS;EACT,UAAU,MAAc,IAAY;GAClC,IAAI,CAAC,GAAG,SAAS,OAAO,IAAI,CAAC,GAAG,SAAS,MAAM,EAAE;GACjD,IAAI,CAAC,KAAK,SAAS,YAAY,IAAI,CAAC,KAAK,SAAS,aAAa,EAAE;GAEjE,MAAM,cAAc,KAAK,QAAQ,KAAK,QAAQ,KAAK,OAAO,YAAY;IAEpE,IAAI,kBAAkB,KAAK,MAAM,IAAI,gBAAgB,KAAK,MAAM,EAAE,OAAO;IAIzE,MAAM,WAAW,QAAQ,QAAQ,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG;IAChE,IAAI,CAAC,UAAU,OAAO;IAEtB,MAAM,YAAY,SAAS,MAAM,kBAAkB,EAC/C,QAAQ,KAAa,OAAe,KAAK,IAAI,KAAK,GAAG,OAAO,EAAE,SAAS,IAAI;IAa/E,OAAO,IAAI,MAAM,MAAM,UAXN,YAAY,IACzB,SAAS,QAAQ,IAAI,OAAO,WAAW,UAAU,IAAI,KAAK,EAAE,GAAG,GAC/D,UAID,QAAQ,MAAM,QAAQ,CACtB,QAAQ,MAAM,SAAS,CACvB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAEsB,CAAC;KACxC;GAEF,IAAI,gBAAgB,MAClB,OAAO;IAAE,MAAM;IAAa,KAAK;IAAM;;EAG5C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/render/plugins/markdownExtract.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Vite plugin that pre-processes <Markdown> tags:
|
|
6
|
+
* - Extracts slot content, dedents it, and passes as :content prop
|
|
7
|
+
* - Resolves `src` prop to read file contents at build time
|
|
8
|
+
*/
|
|
9
|
+
declare function markdownExtract(): Plugin;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { markdownExtract };
|
|
12
|
+
//# sourceMappingURL=markdownExtract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownExtract.d.ts","names":[],"sources":["../../../src/render/plugins/markdownExtract.ts"],"mappings":";;;;;AASA;;;iBAAgB,eAAA,CAAA,GAAmB,MAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
//#region src/render/plugins/markdownExtract.ts
|
|
4
|
+
/**
|
|
5
|
+
* Vite plugin that pre-processes <Markdown> tags:
|
|
6
|
+
* - Extracts slot content, dedents it, and passes as :content prop
|
|
7
|
+
* - Resolves `src` prop to read file contents at build time
|
|
8
|
+
*/
|
|
9
|
+
function markdownExtract() {
|
|
10
|
+
const re = /<(Markdown|markdown)((?:\s[^>]*?)?)>([\s\S]*?)<\/\1>/g;
|
|
11
|
+
const selfClosingRe = /<(Markdown|markdown)((?:\s[^>]*?\bsrc\s*=\s*"[^"]*"[^>]*?))\/>/g;
|
|
12
|
+
return {
|
|
13
|
+
name: "maizzle:markdown-extract",
|
|
14
|
+
enforce: "pre",
|
|
15
|
+
transform(code, id) {
|
|
16
|
+
if (!id.endsWith(".vue") && !id.endsWith(".md")) return;
|
|
17
|
+
if (!code.includes("Markdown") && !code.includes("markdown")) return;
|
|
18
|
+
let transformed = code;
|
|
19
|
+
transformed = transformed.replace(re, (_match, tag, attrs, content) => {
|
|
20
|
+
if (/(?:^|\s):content\b/.test(attrs) || /v-bind:content\b/.test(attrs)) return _match;
|
|
21
|
+
const stripped = content.replace(/^\n+/, "").replace(/\s+$/, "");
|
|
22
|
+
if (!stripped) return _match;
|
|
23
|
+
const minIndent = stripped.match(/^[ \t]*(?=\S)/gm)?.reduce((min, ws) => Math.min(min, ws.length), Infinity) ?? 0;
|
|
24
|
+
return `<${tag}${attrs} content="${(minIndent > 0 ? stripped.replace(new RegExp(`^[ \\t]{${minIndent}}`, "gm"), "") : stripped).replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">")}" />`;
|
|
25
|
+
});
|
|
26
|
+
transformed = transformed.replace(selfClosingRe, (_match, tag, attrs) => {
|
|
27
|
+
const srcMatch = attrs.match(/\bsrc\s*=\s*"([^"]*)"/);
|
|
28
|
+
if (!srcMatch) return _match;
|
|
29
|
+
const srcPath = srcMatch[1];
|
|
30
|
+
const resolvedPath = resolve(dirname(id), srcPath);
|
|
31
|
+
let fileContent;
|
|
32
|
+
try {
|
|
33
|
+
fileContent = readFileSync(resolvedPath, "utf-8").trim();
|
|
34
|
+
} catch {
|
|
35
|
+
return _match;
|
|
36
|
+
}
|
|
37
|
+
return `<${tag}${attrs.replace(/\s*\bsrc\s*=\s*"[^"]*"/, "")} content="${fileContent.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">")}" />`;
|
|
38
|
+
});
|
|
39
|
+
if (transformed !== code) return {
|
|
40
|
+
code: transformed,
|
|
41
|
+
map: null
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { markdownExtract };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=markdownExtract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownExtract.js","names":[],"sources":["../../../src/render/plugins/markdownExtract.ts"],"sourcesContent":["import { dirname, resolve } from 'node:path'\nimport { readFileSync } from 'node:fs'\nimport type { Plugin } from 'vite'\n\n/**\n * Vite plugin that pre-processes <Markdown> tags:\n * - Extracts slot content, dedents it, and passes as :content prop\n * - Resolves `src` prop to read file contents at build time\n */\nexport function markdownExtract(): Plugin {\n const re = /<(Markdown|markdown)((?:\\s[^>]*?)?)>([\\s\\S]*?)<\\/\\1>/g\n const selfClosingRe = /<(Markdown|markdown)((?:\\s[^>]*?\\bsrc\\s*=\\s*\"[^\"]*\"[^>]*?))\\/>/g\n\n return {\n name: 'maizzle:markdown-extract',\n enforce: 'pre',\n transform(code: string, id: string) {\n if (!id.endsWith('.vue') && !id.endsWith('.md')) return\n if (!code.includes('Markdown') && !code.includes('markdown')) return\n\n let transformed = code\n\n // Handle <Markdown>content</Markdown>\n transformed = transformed.replace(re, (_match, tag, attrs, content) => {\n if (/(?:^|\\s):content\\b/.test(attrs) || /v-bind:content\\b/.test(attrs)) return _match\n\n const stripped = content.replace(/^\\n+/, '').replace(/\\s+$/, '')\n if (!stripped) return _match\n\n const minIndent = stripped.match(/^[ \\t]*(?=\\S)/gm)\n ?.reduce((min: number, ws: string) => Math.min(min, ws.length), Infinity) ?? 0\n\n const dedented = minIndent > 0\n ? stripped.replace(new RegExp(`^[ \\\\t]{${minIndent}}`, 'gm'), '')\n : stripped\n\n const escaped = dedented\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n\n return `<${tag}${attrs} content=\"${escaped}\" />`\n })\n\n // Handle <Markdown src=\"./file.md\" /> — resolve and inline file content\n transformed = transformed.replace(selfClosingRe, (_match, tag, attrs) => {\n const srcMatch = attrs.match(/\\bsrc\\s*=\\s*\"([^\"]*)\"/)\n if (!srcMatch) return _match\n\n const srcPath = srcMatch[1]\n const resolvedPath = resolve(dirname(id), srcPath)\n\n let fileContent: string\n try {\n fileContent = readFileSync(resolvedPath, 'utf-8').trim()\n } catch {\n return _match\n }\n\n // Remove src prop, add content prop\n const cleanAttrs = attrs.replace(/\\s*\\bsrc\\s*=\\s*\"[^\"]*\"/, '')\n const escaped = fileContent\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n\n return `<${tag}${cleanAttrs} content=\"${escaped}\" />`\n })\n\n if (transformed !== code) {\n return { code: transformed, map: null }\n }\n },\n }\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,kBAA0B;CACxC,MAAM,KAAK;CACX,MAAM,gBAAgB;CAEtB,OAAO;EACL,MAAM;EACN,SAAS;EACT,UAAU,MAAc,IAAY;GAClC,IAAI,CAAC,GAAG,SAAS,OAAO,IAAI,CAAC,GAAG,SAAS,MAAM,EAAE;GACjD,IAAI,CAAC,KAAK,SAAS,WAAW,IAAI,CAAC,KAAK,SAAS,WAAW,EAAE;GAE9D,IAAI,cAAc;GAGlB,cAAc,YAAY,QAAQ,KAAK,QAAQ,KAAK,OAAO,YAAY;IACrE,IAAI,qBAAqB,KAAK,MAAM,IAAI,mBAAmB,KAAK,MAAM,EAAE,OAAO;IAE/E,MAAM,WAAW,QAAQ,QAAQ,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG;IAChE,IAAI,CAAC,UAAU,OAAO;IAEtB,MAAM,YAAY,SAAS,MAAM,kBAAkB,EAC/C,QAAQ,KAAa,OAAe,KAAK,IAAI,KAAK,GAAG,OAAO,EAAE,SAAS,IAAI;IAY/E,OAAO,IAAI,MAAM,MAAM,aAVN,YAAY,IACzB,SAAS,QAAQ,IAAI,OAAO,WAAW,UAAU,IAAI,KAAK,EAAE,GAAG,GAC/D,UAGD,QAAQ,MAAM,QAAQ,CACtB,QAAQ,MAAM,SAAS,CACvB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAEyB,CAAC;KAC3C;GAGF,cAAc,YAAY,QAAQ,gBAAgB,QAAQ,KAAK,UAAU;IACvE,MAAM,WAAW,MAAM,MAAM,wBAAwB;IACrD,IAAI,CAAC,UAAU,OAAO;IAEtB,MAAM,UAAU,SAAS;IACzB,MAAM,eAAe,QAAQ,QAAQ,GAAG,EAAE,QAAQ;IAElD,IAAI;IACJ,IAAI;KACF,cAAc,aAAa,cAAc,QAAQ,CAAC,MAAM;YAClD;KACN,OAAO;;IAWT,OAAO,IAAI,MAPQ,MAAM,QAAQ,0BAA0B,GAOhC,CAAC,YANZ,YACb,QAAQ,MAAM,QAAQ,CACtB,QAAQ,MAAM,SAAS,CACvB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAE8B,CAAC;KAChD;GAEF,IAAI,gBAAgB,MAClB,OAAO;IAAE,MAAM;IAAa,KAAK;IAAM;;EAG5C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/render/plugins/rawExtract.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Vite plugin that extracts raw slot content from <Raw> tags
|
|
6
|
+
* and passes it as a :content prop before Vue compiles the template.
|
|
7
|
+
*
|
|
8
|
+
* Lets users write content (including `{{ }}` interpolation syntax used
|
|
9
|
+
* by ESPs / Handlebars / Liquid) inside <Raw> without Vue parsing it.
|
|
10
|
+
*/
|
|
11
|
+
declare function rawExtract(): Plugin;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { rawExtract };
|
|
14
|
+
//# sourceMappingURL=rawExtract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawExtract.d.ts","names":[],"sources":["../../../src/render/plugins/rawExtract.ts"],"mappings":";;;;;AASA;;;;;iBAAgB,UAAA,CAAA,GAAc,MAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/render/plugins/rawExtract.ts
|
|
2
|
+
/**
|
|
3
|
+
* Vite plugin that extracts raw slot content from <Raw> tags
|
|
4
|
+
* and passes it as a :content prop before Vue compiles the template.
|
|
5
|
+
*
|
|
6
|
+
* Lets users write content (including `{{ }}` interpolation syntax used
|
|
7
|
+
* by ESPs / Handlebars / Liquid) inside <Raw> without Vue parsing it.
|
|
8
|
+
*/
|
|
9
|
+
function rawExtract() {
|
|
10
|
+
const re = /<(Raw)((?:\s[^>]*?)?)>([\s\S]*?)<\/\1>/g;
|
|
11
|
+
return {
|
|
12
|
+
name: "maizzle:raw-extract",
|
|
13
|
+
enforce: "pre",
|
|
14
|
+
transform(code, id) {
|
|
15
|
+
if (!id.endsWith(".vue") && !id.endsWith(".md")) return;
|
|
16
|
+
if (!code.includes("Raw")) return;
|
|
17
|
+
const transformed = code.replace(re, (_match, tag, attrs, content) => {
|
|
18
|
+
if (/(?:^|\s):content\b/.test(attrs) || /v-bind:content\b/.test(attrs)) return _match;
|
|
19
|
+
const stripped = content.replace(/^\n+/, "").replace(/\s+$/, "");
|
|
20
|
+
if (!stripped) return _match;
|
|
21
|
+
const minIndent = stripped.match(/^[ \t]*(?=\S)/gm)?.reduce((min, ws) => Math.min(min, ws.length), Infinity) ?? 0;
|
|
22
|
+
return `<${tag}${attrs} content="${(minIndent > 0 ? stripped.replace(new RegExp(`^[ \\t]{${minIndent}}`, "gm"), "") : stripped).replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">")}" />`;
|
|
23
|
+
});
|
|
24
|
+
if (transformed !== code) return {
|
|
25
|
+
code: transformed,
|
|
26
|
+
map: null
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { rawExtract };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=rawExtract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rawExtract.js","names":[],"sources":["../../../src/render/plugins/rawExtract.ts"],"sourcesContent":["import type { Plugin } from 'vite'\n\n/**\n * Vite plugin that extracts raw slot content from <Raw> tags\n * and passes it as a :content prop before Vue compiles the template.\n *\n * Lets users write content (including `{{ }}` interpolation syntax used\n * by ESPs / Handlebars / Liquid) inside <Raw> without Vue parsing it.\n */\nexport function rawExtract(): Plugin {\n const re = /<(Raw)((?:\\s[^>]*?)?)>([\\s\\S]*?)<\\/\\1>/g\n\n return {\n name: 'maizzle:raw-extract',\n enforce: 'pre',\n transform(code: string, id: string) {\n if (!id.endsWith('.vue') && !id.endsWith('.md')) return\n if (!code.includes('Raw')) return\n\n const transformed = code.replace(re, (_match, tag, attrs, content) => {\n if (/(?:^|\\s):content\\b/.test(attrs) || /v-bind:content\\b/.test(attrs)) return _match\n\n const stripped = content.replace(/^\\n+/, '').replace(/\\s+$/, '')\n if (!stripped) return _match\n\n const minIndent = stripped.match(/^[ \\t]*(?=\\S)/gm)\n ?.reduce((min: number, ws: string) => Math.min(min, ws.length), Infinity) ?? 0\n\n const dedented = minIndent > 0\n ? stripped.replace(new RegExp(`^[ \\\\t]{${minIndent}}`, 'gm'), '')\n : stripped\n\n const escaped = dedented\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n\n return `<${tag}${attrs} content=\"${escaped}\" />`\n })\n\n if (transformed !== code) {\n return { code: transformed, map: null }\n }\n },\n }\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,aAAqB;CACnC,MAAM,KAAK;CAEX,OAAO;EACL,MAAM;EACN,SAAS;EACT,UAAU,MAAc,IAAY;GAClC,IAAI,CAAC,GAAG,SAAS,OAAO,IAAI,CAAC,GAAG,SAAS,MAAM,EAAE;GACjD,IAAI,CAAC,KAAK,SAAS,MAAM,EAAE;GAE3B,MAAM,cAAc,KAAK,QAAQ,KAAK,QAAQ,KAAK,OAAO,YAAY;IACpE,IAAI,qBAAqB,KAAK,MAAM,IAAI,mBAAmB,KAAK,MAAM,EAAE,OAAO;IAE/E,MAAM,WAAW,QAAQ,QAAQ,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG;IAChE,IAAI,CAAC,UAAU,OAAO;IAEtB,MAAM,YAAY,SAAS,MAAM,kBAAkB,EAC/C,QAAQ,KAAa,OAAe,KAAK,IAAI,KAAK,GAAG,OAAO,EAAE,SAAS,IAAI;IAY/E,OAAO,IAAI,MAAM,MAAM,aAVN,YAAY,IACzB,SAAS,QAAQ,IAAI,OAAO,WAAW,UAAU,IAAI,KAAK,EAAE,GAAG,GAC/D,UAGD,QAAQ,MAAM,QAAQ,CACtB,QAAQ,MAAM,SAAS,CACvB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAEyB,CAAC;KAC3C;GAEF,IAAI,gBAAgB,MAClB,OAAO;IAAE,MAAM;IAAa,KAAK;IAAM;;EAG5C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Plugin } from "vite";
|
|
2
|
+
|
|
3
|
+
//#region src/render/plugins/rowSourceLocation.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Vite plugin that injects `data-maizzle-loc="<file>:<line>"` into every
|
|
6
|
+
* `<Row>`/`<row>` opening tag in user templates.
|
|
7
|
+
*
|
|
8
|
+
* Used by Row.vue's runtime to point the user at the exact line in their
|
|
9
|
+
* template when they misuse Row (e.g. without a Column child).
|
|
10
|
+
*
|
|
11
|
+
* Only transforms inside `<template>` blocks of SFCs (or the entire file
|
|
12
|
+
* for `.md` templates) so `<Row>` mentions in `<script>` blocks (e.g. in
|
|
13
|
+
* string literals or comments) are left untouched.
|
|
14
|
+
*/
|
|
15
|
+
declare function rowSourceLocation(): Plugin;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { rowSourceLocation };
|
|
18
|
+
//# sourceMappingURL=rowSourceLocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowSourceLocation.d.ts","names":[],"sources":["../../../src/render/plugins/rowSourceLocation.ts"],"mappings":";;;;;AAaA;;;;;;;;;iBAAgB,iBAAA,CAAA,GAAqB,MAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/render/plugins/rowSourceLocation.ts
|
|
2
|
+
/**
|
|
3
|
+
* Vite plugin that injects `data-maizzle-loc="<file>:<line>"` into every
|
|
4
|
+
* `<Row>`/`<row>` opening tag in user templates.
|
|
5
|
+
*
|
|
6
|
+
* Used by Row.vue's runtime to point the user at the exact line in their
|
|
7
|
+
* template when they misuse Row (e.g. without a Column child).
|
|
8
|
+
*
|
|
9
|
+
* Only transforms inside `<template>` blocks of SFCs (or the entire file
|
|
10
|
+
* for `.md` templates) so `<Row>` mentions in `<script>` blocks (e.g. in
|
|
11
|
+
* string literals or comments) are left untouched.
|
|
12
|
+
*/
|
|
13
|
+
function rowSourceLocation() {
|
|
14
|
+
const tagRe = /(<(?:Row|row))(\b[^>]*?)(\/?>)/g;
|
|
15
|
+
function injectLoc(html, htmlOffset, fullCode, id) {
|
|
16
|
+
return html.replace(tagRe, (match, tag, attrs, end, localOffset) => {
|
|
17
|
+
if (/\bdata-maizzle-loc\s*=/.test(attrs)) return match;
|
|
18
|
+
const absoluteOffset = htmlOffset + localOffset;
|
|
19
|
+
return `${tag}${attrs} data-maizzle-loc="${id}:${fullCode.slice(0, absoluteOffset).split("\n").length}"${end}`;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
name: "maizzle:row-loc",
|
|
24
|
+
enforce: "pre",
|
|
25
|
+
transform(code, id) {
|
|
26
|
+
const isVue = id.endsWith(".vue");
|
|
27
|
+
const isMd = id.endsWith(".md");
|
|
28
|
+
if (!isVue && !isMd) return;
|
|
29
|
+
if (!code.includes("<Row") && !code.includes("<row")) return;
|
|
30
|
+
let transformed;
|
|
31
|
+
if (isVue) transformed = code.replace(/(<template\b[^>]*>)([\s\S]*?)(<\/template>)/g, (_match, open, inner, close, offset) => {
|
|
32
|
+
return open + injectLoc(inner, offset + open.length, code, id) + close;
|
|
33
|
+
});
|
|
34
|
+
else transformed = injectLoc(code, 0, code, id);
|
|
35
|
+
if (transformed !== code) return {
|
|
36
|
+
code: transformed,
|
|
37
|
+
map: null
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { rowSourceLocation };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=rowSourceLocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowSourceLocation.js","names":[],"sources":["../../../src/render/plugins/rowSourceLocation.ts"],"sourcesContent":["import type { Plugin } from 'vite'\n\n/**\n * Vite plugin that injects `data-maizzle-loc=\"<file>:<line>\"` into every\n * `<Row>`/`<row>` opening tag in user templates.\n *\n * Used by Row.vue's runtime to point the user at the exact line in their\n * template when they misuse Row (e.g. without a Column child).\n *\n * Only transforms inside `<template>` blocks of SFCs (or the entire file\n * for `.md` templates) so `<Row>` mentions in `<script>` blocks (e.g. in\n * string literals or comments) are left untouched.\n */\nexport function rowSourceLocation(): Plugin {\n const tagRe = /(<(?:Row|row))(\\b[^>]*?)(\\/?>)/g\n\n function injectLoc(html: string, htmlOffset: number, fullCode: string, id: string): string {\n return html.replace(tagRe, (match, tag, attrs, end, localOffset: number) => {\n if (/\\bdata-maizzle-loc\\s*=/.test(attrs)) return match\n const absoluteOffset = htmlOffset + localOffset\n const line = fullCode.slice(0, absoluteOffset).split('\\n').length\n return `${tag}${attrs} data-maizzle-loc=\"${id}:${line}\"${end}`\n })\n }\n\n return {\n name: 'maizzle:row-loc',\n enforce: 'pre',\n transform(code, id) {\n const isVue = id.endsWith('.vue')\n const isMd = id.endsWith('.md')\n if (!isVue && !isMd) return\n if (!code.includes('<Row') && !code.includes('<row')) return\n\n let transformed: string\n\n if (isVue) {\n // Replace inside every <template>...</template> block, leaving\n // <script> and <style> blocks alone.\n const templateBlock = /(<template\\b[^>]*>)([\\s\\S]*?)(<\\/template>)/g\n transformed = code.replace(templateBlock, (_match, open, inner, close, offset: number) => {\n const innerOffset = offset + open.length\n return open + injectLoc(inner, innerOffset, code, id) + close\n })\n } else {\n transformed = injectLoc(code, 0, code, id)\n }\n\n if (transformed !== code) {\n return { code: transformed, map: null }\n }\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;AAaA,SAAgB,oBAA4B;CAC1C,MAAM,QAAQ;CAEd,SAAS,UAAU,MAAc,YAAoB,UAAkB,IAAoB;EACzF,OAAO,KAAK,QAAQ,QAAQ,OAAO,KAAK,OAAO,KAAK,gBAAwB;GAC1E,IAAI,yBAAyB,KAAK,MAAM,EAAE,OAAO;GACjD,MAAM,iBAAiB,aAAa;GAEpC,OAAO,GAAG,MAAM,MAAM,qBAAqB,GAAG,GADjC,SAAS,MAAM,GAAG,eAAe,CAAC,MAAM,KAAK,CAAC,OACL,GAAG;IACzD;;CAGJ,OAAO;EACL,MAAM;EACN,SAAS;EACT,UAAU,MAAM,IAAI;GAClB,MAAM,QAAQ,GAAG,SAAS,OAAO;GACjC,MAAM,OAAO,GAAG,SAAS,MAAM;GAC/B,IAAI,CAAC,SAAS,CAAC,MAAM;GACrB,IAAI,CAAC,KAAK,SAAS,OAAO,IAAI,CAAC,KAAK,SAAS,OAAO,EAAE;GAEtD,IAAI;GAEJ,IAAI,OAIF,cAAc,KAAK,QAAQ,iDAAgB,QAAQ,MAAM,OAAO,OAAO,WAAmB;IAExF,OAAO,OAAO,UAAU,OADJ,SAAS,KAAK,QACU,MAAM,GAAG,GAAG;KACxD;QAEF,cAAc,UAAU,MAAM,GAAG,MAAM,GAAG;GAG5C,IAAI,gBAAgB,MAClB,OAAO;IAAE,MAAM;IAAa,KAAK;IAAM;;EAG5C"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { MaizzleConfig } from "./types/config.
|
|
1
|
+
import { MaizzleConfig } from "./types/config.js";
|
|
2
2
|
import { ViteDevServer } from "vite";
|
|
3
3
|
|
|
4
4
|
//#region src/serve.d.ts
|
|
5
5
|
interface ServeOptions {
|
|
6
6
|
config?: Partial<MaizzleConfig> | string;
|
|
7
|
+
/** Override the dev server port (takes precedence over config.server.port) */
|
|
8
|
+
port?: number;
|
|
7
9
|
/** Expose the server on the network (e.g. --host) */
|
|
8
10
|
host?: boolean | string;
|
|
9
11
|
/** When true, suppresses the banner/URL output (used by the Vite plugin, which prints its own) */
|
|
@@ -22,4 +24,4 @@ declare function serve(options?: ServeOptions): Promise<ViteDevServer>;
|
|
|
22
24
|
declare function printBanner(server: ViteDevServer, startupTime?: number): void;
|
|
23
25
|
//#endregion
|
|
24
26
|
export { ServeOptions, printBanner, serve };
|
|
25
|
-
//# sourceMappingURL=serve.d.
|
|
27
|
+
//# sourceMappingURL=serve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.d.ts","names":[],"sources":["../src/serve.ts"],"mappings":";;;;UAmCiB,YAAA;EACf,MAAA,GAAS,OAAA,CAAQ,aAAA;;EAEjB,IAAA;EAH2B;EAK3B,IAAA;EAJgB;EAMhB,MAAA;AAAA;;;;;;;AAYF;;;iBAAsB,KAAA,CAAM,OAAA,GAAS,YAAA,GAAiB,OAAA,CAAA,aAAA;AAAA,iBA+jBtC,WAAA,CAAY,MAAA,EAAQ,aAAA,EAAe,WAAA"}
|