From ca308367b232a87bc476387295b5596de84f583f Mon Sep 17 00:00:00 2001 From: DavidBabinec Date: Fri, 3 Jul 2026 09:30:02 +0200 Subject: [PATCH 1/2] feat(publisher): optimize media background images --- docs/features/publisher.md | 25 +++- server/handlers/cms/data/preview.ts | 2 +- server/publish/mediaPrefetch.ts | 5 + server/publish/publicRenderer.ts | 2 +- server/publish/publishSite.ts | 4 +- server/publish/siteCssBundle.ts | 35 ++++- server/router.ts | 15 +- .../canvas/classStyleInjector.test.ts | 63 +++++++++ .../editor/readOnlyNodeTree.test.tsx | 37 ++++- .../publisher/classStyleInjector.test.ts | 59 +++++++- .../server/mediaBatchResolution.test.ts | 62 ++++++++ .../media/hooks/useCmsMediaAssetByPath.ts | 31 ++++ .../hooks/useResponsiveBackgroundStyle.ts | 88 ++++++++++++ .../pages/site/canvas/ClassStyleInjector.tsx | 51 ++++++- .../pages/site/canvas/ModuleSandboxFrame.tsx | 25 +++- src/admin/pages/site/canvas/NodeRenderer.tsx | 8 +- src/admin/pages/site/canvas/canvasClassCss.ts | 17 ++- src/core/publisher/classCss.ts | 37 +++-- src/core/publisher/classInjection.ts | 4 +- src/core/publisher/cssCollector.ts | 5 +- src/core/publisher/index.ts | 10 ++ src/core/publisher/render.ts | 14 +- src/core/publisher/renderLoop.ts | 2 +- src/core/publisher/renderNode.ts | 2 +- .../publisher/renderVisualComponentRef.ts | 2 +- src/core/publisher/responsiveBackground.ts | 132 ++++++++++++++++++ src/modules/base/utils/ReadOnlyNodeTree.tsx | 4 +- 27 files changed, 682 insertions(+), 59 deletions(-) create mode 100644 src/admin/pages/media/hooks/useResponsiveBackgroundStyle.ts create mode 100644 src/core/publisher/responsiveBackground.ts diff --git a/docs/features/publisher.md b/docs/features/publisher.md index 3f130b28d..6013bfd14 100644 --- a/docs/features/publisher.md +++ b/docs/features/publisher.md @@ -33,6 +33,7 @@ src/core/publisher/ ├── escapeProps.ts — escape string props at the render boundary, dispatched per-prop on the schema control `type` ├── classInjection.ts — inject author classIds into rendered HTML ├── classCss.ts — compile user StyleRule entries → CSS, including supported raw @keyframes +├── responsiveBackground.ts — rewrite media-library background-image url(...) values to optimized image-set(...) ladders ├── cssCollector.ts — CssCollector + collectClassCSS + sanitizeModuleCSS ├── reset.ts — PUBLISHER_RESET_CSS (cross-browser baseline) ├── frameworkCss.ts — site framework CSS (spacing scale, typography) @@ -52,7 +53,7 @@ server/publish/ ├── publishedHtmlPipeline.ts — post-process (sanitize + plugin filters + injections) ├── siteCssBundle.ts — server-side hashing + file emission ├── frontendInjections.ts — splice plugin