meno-core 1.0.48 → 1.0.50
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/build-astro.ts +6 -2
- package/dist/build-static.js +7 -7
- package/dist/chunks/{chunk-D5E3OKSL.js → chunk-56EUSC6D.js} +5 -5
- package/dist/chunks/{chunk-3FHJUHAS.js → chunk-7NIC4I3V.js} +300 -43
- package/dist/chunks/chunk-7NIC4I3V.js.map +7 -0
- package/dist/chunks/{chunk-B2RTLDXY.js → chunk-AZQYF6KE.js} +132 -1
- package/dist/chunks/chunk-AZQYF6KE.js.map +7 -0
- package/dist/chunks/{chunk-TPQ7APVQ.js → chunk-CVLFID6V.js} +473 -73
- package/dist/chunks/chunk-CVLFID6V.js.map +7 -0
- package/dist/chunks/{chunk-NP76N4HQ.js → chunk-EDQSMAMP.js} +13 -2
- package/dist/chunks/{chunk-NP76N4HQ.js.map → chunk-EDQSMAMP.js.map} +2 -2
- package/dist/chunks/{chunk-RQSTH2BS.js → chunk-H4JSCDNW.js} +2 -2
- package/dist/chunks/{chunk-EK4KESLU.js → chunk-J23ZX5AP.js} +8 -2
- package/dist/chunks/{chunk-EK4KESLU.js.map → chunk-J23ZX5AP.js.map} +2 -2
- package/dist/chunks/{chunk-UUA5LEWF.js → chunk-LPVETICS.js} +156 -8
- package/dist/chunks/chunk-LPVETICS.js.map +7 -0
- package/dist/chunks/{chunk-BJRKEPMP.js → chunk-PQ2HRXDR.js} +5 -2
- package/dist/chunks/chunk-PQ2HRXDR.js.map +7 -0
- package/dist/chunks/{chunk-NKUV77SR.js → chunk-YWJJD5D6.js} +133 -37
- package/dist/chunks/chunk-YWJJD5D6.js.map +7 -0
- package/dist/chunks/{configService-IGJEC3MC.js → configService-VOY2MY2K.js} +3 -3
- package/dist/entries/server-router.js +9 -9
- package/dist/entries/server-router.js.map +2 -2
- package/dist/lib/client/index.js +92 -32
- package/dist/lib/client/index.js.map +3 -3
- package/dist/lib/server/index.js +14 -12
- package/dist/lib/server/index.js.map +2 -2
- package/dist/lib/shared/index.js +46 -10
- package/dist/lib/shared/index.js.map +3 -3
- package/entries/server-router.tsx +6 -2
- package/lib/client/core/ComponentBuilder.test.ts +34 -0
- package/lib/client/core/ComponentBuilder.ts +33 -4
- package/lib/client/core/builders/embedBuilder.ts +28 -7
- package/lib/client/core/builders/linkNodeBuilder.ts +28 -7
- package/lib/client/core/builders/localeListBuilder.ts +30 -11
- package/lib/client/styles/StyleInjector.ts +3 -2
- package/lib/client/templateEngine.ts +24 -0
- package/lib/client/theme.ts +4 -4
- package/lib/server/cssGenerator.test.ts +64 -1
- package/lib/server/cssGenerator.ts +48 -9
- package/lib/server/fileWatcher.test.ts +134 -0
- package/lib/server/fileWatcher.ts +100 -32
- package/lib/server/jsonLoader.ts +1 -0
- package/lib/server/providers/fileSystemCMSProvider.test.ts +163 -0
- package/lib/server/providers/fileSystemCMSProvider.ts +240 -19
- package/lib/server/routes/index.ts +1 -1
- package/lib/server/routes/pages.ts +23 -1
- package/lib/server/services/cmsService.test.ts +246 -0
- package/lib/server/services/cmsService.ts +122 -5
- package/lib/server/services/configService.ts +6 -0
- package/lib/server/services/fileWatcherService.ts +17 -0
- package/lib/server/ssr/attributeBuilder.ts +41 -0
- package/lib/server/ssr/htmlGenerator.test.ts +113 -0
- package/lib/server/ssr/htmlGenerator.ts +62 -7
- package/lib/server/ssr/liveReloadIntegration.test.ts +209 -0
- package/lib/server/ssr/ssrRenderer.test.ts +564 -0
- package/lib/server/ssr/ssrRenderer.ts +228 -49
- package/lib/server/webflow/buildWebflow.ts +1 -1
- package/lib/server/websocketManager.test.ts +61 -6
- package/lib/server/websocketManager.ts +25 -1
- package/lib/shared/cssGeneration.test.ts +267 -1
- package/lib/shared/cssGeneration.ts +240 -18
- package/lib/shared/cssProperties.test.ts +275 -1
- package/lib/shared/cssProperties.ts +223 -7
- package/lib/shared/interfaces/contentProvider.ts +39 -6
- package/lib/shared/pathSecurity.ts +16 -0
- package/lib/shared/responsiveScaling.test.ts +143 -0
- package/lib/shared/responsiveScaling.ts +253 -2
- package/lib/shared/themeDefaults.test.ts +3 -3
- package/lib/shared/themeDefaults.ts +3 -3
- package/lib/shared/types/api.ts +10 -1
- package/lib/shared/types/cms.ts +46 -12
- package/lib/shared/types/index.ts +1 -0
- package/lib/shared/utilityClassConfig.ts +3 -0
- package/lib/shared/utilityClassMapper.test.ts +123 -0
- package/lib/shared/utilityClassMapper.ts +179 -8
- package/lib/shared/validation/schemas.test.ts +93 -0
- package/lib/shared/validation/schemas.ts +71 -16
- package/lib/shared/validation/validators.ts +26 -1
- package/package.json +1 -1
- package/dist/chunks/chunk-3FHJUHAS.js.map +0 -7
- package/dist/chunks/chunk-B2RTLDXY.js.map +0 -7
- package/dist/chunks/chunk-BJRKEPMP.js.map +0 -7
- package/dist/chunks/chunk-NKUV77SR.js.map +0 -7
- package/dist/chunks/chunk-TPQ7APVQ.js.map +0 -7
- package/dist/chunks/chunk-UUA5LEWF.js.map +0 -7
- /package/dist/chunks/{chunk-D5E3OKSL.js.map → chunk-56EUSC6D.js.map} +0 -0
- /package/dist/chunks/{chunk-RQSTH2BS.js.map → chunk-H4JSCDNW.js.map} +0 -0
- /package/dist/chunks/{configService-IGJEC3MC.js.map → configService-VOY2MY2K.js.map} +0 -0
|
@@ -6,25 +6,25 @@ import {
|
|
|
6
6
|
PageService,
|
|
7
7
|
WebSocketManager,
|
|
8
8
|
createServer
|
|
9
|
-
} from "../chunks/chunk-
|
|
9
|
+
} from "../chunks/chunk-YWJJD5D6.js";
|
|
10
10
|
import {
|
|
11
11
|
CMSService,
|
|
12
12
|
FileSystemCMSProvider,
|
|
13
13
|
loadProjectConfig,
|
|
14
14
|
migrateTemplatesDirectory
|
|
15
|
-
} from "../chunks/chunk-
|
|
15
|
+
} from "../chunks/chunk-CVLFID6V.js";
|
|
16
16
|
import {
|
|
17
17
|
configService
|
|
18
|
-
} from "../chunks/chunk-
|
|
18
|
+
} from "../chunks/chunk-PQ2HRXDR.js";
|
|
19
19
|
import {
|
|
20
20
|
projectPaths
|
|
21
21
|
} from "../chunks/chunk-I7YIGZXT.js";
|
|
22
22
|
import "../chunks/chunk-WQFG7PAH.js";
|
|
23
|
-
import "../chunks/chunk-
|
|
24
|
-
import "../chunks/chunk-
|
|
25
|
-
import "../chunks/chunk-
|
|
26
|
-
import "../chunks/chunk-
|
|
27
|
-
import "../chunks/chunk-
|
|
23
|
+
import "../chunks/chunk-H4JSCDNW.js";
|
|
24
|
+
import "../chunks/chunk-J23ZX5AP.js";
|
|
25
|
+
import "../chunks/chunk-EDQSMAMP.js";
|
|
26
|
+
import "../chunks/chunk-7NIC4I3V.js";
|
|
27
|
+
import "../chunks/chunk-AZQYF6KE.js";
|
|
28
28
|
import "../chunks/chunk-UB44F4Z2.js";
|
|
29
29
|
import "../chunks/chunk-2QK6U5UK.js";
|
|
30
30
|
import "../chunks/chunk-KSBZ2L7C.js";
|
|
@@ -37,7 +37,7 @@ var pageService = new PageService(pageCache, pageProvider);
|
|
|
37
37
|
var componentService = new ComponentService();
|
|
38
38
|
var wsManager = new WebSocketManager();
|
|
39
39
|
var cmsProvider = new FileSystemCMSProvider(projectPaths.templates(), projectPaths.cms());
|
|
40
|
-
var cmsService = new CMSService(cmsProvider);
|
|
40
|
+
var cmsService = new CMSService(cmsProvider, { previewMode: true });
|
|
41
41
|
var fileWatcherService = new FileWatcherService(
|
|
42
42
|
componentService,
|
|
43
43
|
pageService,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../entries/server-router.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Server Router\n * Main entry point for the development server\n * Uses the createServer factory with all services initialized\n */\n\nimport { PageCache } from '../lib/server/pageCache';\nimport { WebSocketManager } from '../lib/server/websocketManager';\nimport { PageService, ComponentService, FileWatcherService } from '../lib/server/services';\nimport { CMSService } from '../lib/server/services/cmsService';\nimport { createServer } from '../lib/server/createServer';\nimport { loadProjectConfig } from '../lib/shared/fontLoader';\nimport { FileSystemPageProvider } from '../lib/server/providers/fileSystemPageProvider';\nimport { FileSystemCMSProvider } from '../lib/server/providers/fileSystemCMSProvider';\nimport { configService } from '../lib/server/services/configService';\nimport { projectPaths } from '../lib/server/projectContext';\nimport { migrateTemplatesDirectory } from '../lib/server/migrateTemplates';\n\n// Auto-migrate pages/templates/ \u2192 templates/ if needed\nawait migrateTemplatesDirectory();\n\n// Initialize services\nconst pageCache = new PageCache();\nconst pageProvider = new FileSystemPageProvider(projectPaths.pages(), projectPaths.templates());\nconst pageService = new PageService(pageCache, pageProvider);\nconst componentService = new ComponentService();\nconst wsManager = new WebSocketManager();\n\n// Initialize CMS services\nconst cmsProvider = new FileSystemCMSProvider(projectPaths.templates(), projectPaths.cms());\nconst cmsService = new CMSService(cmsProvider);\n\n// Initialize file watcher with CMS service for template change detection\nconst fileWatcherService = new FileWatcherService(\n componentService,\n pageService,\n pageCache,\n wsManager,\n cmsService\n);\n\n// Initialize server data\nasync function initialize() {\n // Load centralized config first\n await configService.load();\n\n // Load project config for fonts (uses legacy loader for now)\n await loadProjectConfig();\n\n // Load global components first\n await componentService.loadAllComponents();\n\n // Load all pages\n await pageService.loadAllPages();\n\n // Initialize CMS service (extract schemas from pages)\n await cmsService.initialize();\n\n // Setup file watchers\n fileWatcherService.initialize();\n}\n\n// Initialize before starting server\nawait initialize();\n\n// Create and start server using the factory\nconst { server, port } = await createServer({\n pageService,\n componentService,\n wsManager,\n cmsService,\n cmsProvider,\n});\n\nconsole.log(`Server with routing and HMR running at http://localhost:${port}`);\nconsole.log(`Available pages:`, pageService.getAllPagePaths());\nconsole.log(`Edit any JSON file to see instant hot reloading!`);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAM,0BAA0B;AAGhC,IAAM,YAAY,IAAI,UAAU;AAChC,IAAM,eAAe,IAAI,uBAAuB,aAAa,MAAM,GAAG,aAAa,UAAU,CAAC;AAC9F,IAAM,cAAc,IAAI,YAAY,WAAW,YAAY;AAC3D,IAAM,mBAAmB,IAAI,iBAAiB;AAC9C,IAAM,YAAY,IAAI,iBAAiB;
|
|
4
|
+
"sourcesContent": ["/**\n * Server Router\n * Main entry point for the development server\n * Uses the createServer factory with all services initialized\n */\n\nimport { PageCache } from '../lib/server/pageCache';\nimport { WebSocketManager } from '../lib/server/websocketManager';\nimport { PageService, ComponentService, FileWatcherService } from '../lib/server/services';\nimport { CMSService } from '../lib/server/services/cmsService';\nimport { createServer } from '../lib/server/createServer';\nimport { loadProjectConfig } from '../lib/shared/fontLoader';\nimport { FileSystemPageProvider } from '../lib/server/providers/fileSystemPageProvider';\nimport { FileSystemCMSProvider } from '../lib/server/providers/fileSystemCMSProvider';\nimport { configService } from '../lib/server/services/configService';\nimport { projectPaths } from '../lib/server/projectContext';\nimport { migrateTemplatesDirectory } from '../lib/server/migrateTemplates';\n\n// Auto-migrate pages/templates/ \u2192 templates/ if needed\nawait migrateTemplatesDirectory();\n\n// Initialize services\nconst pageCache = new PageCache();\nconst pageProvider = new FileSystemPageProvider(projectPaths.pages(), projectPaths.templates());\nconst pageService = new PageService(pageCache, pageProvider);\nconst componentService = new ComponentService();\nconst wsManager = new WebSocketManager();\n\n// Initialize CMS services. The service runs in preview mode so SSR-facing\n// reads merge drafts over published content \u2014 the localhost dev runtime\n// reflects unpublished edits. Production builds (build-static / build-astro\n// / Webflow export) construct the service without the flag and only ever\n// serve published content.\nconst cmsProvider = new FileSystemCMSProvider(projectPaths.templates(), projectPaths.cms());\nconst cmsService = new CMSService(cmsProvider, { previewMode: true });\n\n// Initialize file watcher with CMS service for template change detection\nconst fileWatcherService = new FileWatcherService(\n componentService,\n pageService,\n pageCache,\n wsManager,\n cmsService\n);\n\n// Initialize server data\nasync function initialize() {\n // Load centralized config first\n await configService.load();\n\n // Load project config for fonts (uses legacy loader for now)\n await loadProjectConfig();\n\n // Load global components first\n await componentService.loadAllComponents();\n\n // Load all pages\n await pageService.loadAllPages();\n\n // Initialize CMS service (extract schemas from pages)\n await cmsService.initialize();\n\n // Setup file watchers\n fileWatcherService.initialize();\n}\n\n// Initialize before starting server\nawait initialize();\n\n// Create and start server using the factory\nconst { server, port } = await createServer({\n pageService,\n componentService,\n wsManager,\n cmsService,\n cmsProvider,\n});\n\nconsole.log(`Server with routing and HMR running at http://localhost:${port}`);\nconsole.log(`Available pages:`, pageService.getAllPagePaths());\nconsole.log(`Edit any JSON file to see instant hot reloading!`);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,MAAM,0BAA0B;AAGhC,IAAM,YAAY,IAAI,UAAU;AAChC,IAAM,eAAe,IAAI,uBAAuB,aAAa,MAAM,GAAG,aAAa,UAAU,CAAC;AAC9F,IAAM,cAAc,IAAI,YAAY,WAAW,YAAY;AAC3D,IAAM,mBAAmB,IAAI,iBAAiB;AAC9C,IAAM,YAAY,IAAI,iBAAiB;AAOvC,IAAM,cAAc,IAAI,sBAAsB,aAAa,UAAU,GAAG,aAAa,IAAI,CAAC;AAC1F,IAAM,aAAa,IAAI,WAAW,aAAa,EAAE,aAAa,KAAK,CAAC;AAGpE,IAAM,qBAAqB,IAAI;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,eAAe,aAAa;AAE1B,QAAM,cAAc,KAAK;AAGzB,QAAM,kBAAkB;AAGxB,QAAM,iBAAiB,kBAAkB;AAGzC,QAAM,YAAY,aAAa;AAG/B,QAAM,WAAW,WAAW;AAG5B,qBAAmB,WAAW;AAChC;AAGA,MAAM,WAAW;AAGjB,IAAM,EAAE,QAAQ,KAAK,IAAI,MAAM,aAAa;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,QAAQ,IAAI,2DAA2D,IAAI,EAAE;AAC7E,QAAQ,IAAI,oBAAoB,YAAY,gBAAgB,CAAC;AAC7D,QAAQ,IAAI,kDAAkD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/lib/client/index.js
CHANGED
|
@@ -12,12 +12,12 @@ import {
|
|
|
12
12
|
resolveLinkMapping,
|
|
13
13
|
resolveStyleMapping,
|
|
14
14
|
skipEmptyTemplateAttributes
|
|
15
|
-
} from "../../chunks/chunk-
|
|
15
|
+
} from "../../chunks/chunk-EDQSMAMP.js";
|
|
16
16
|
import {
|
|
17
17
|
filterCSSProperties,
|
|
18
18
|
logNetworkError,
|
|
19
19
|
logRuntimeError
|
|
20
|
-
} from "../../chunks/chunk-
|
|
20
|
+
} from "../../chunks/chunk-LPVETICS.js";
|
|
21
21
|
import {
|
|
22
22
|
BaseComponentRegistry,
|
|
23
23
|
DEFAULT_PREFETCH_CONFIG,
|
|
@@ -59,19 +59,20 @@ import {
|
|
|
59
59
|
singularize,
|
|
60
60
|
sortClassesByPropertyOrder,
|
|
61
61
|
validatePageData
|
|
62
|
-
} from "../../chunks/chunk-
|
|
62
|
+
} from "../../chunks/chunk-7NIC4I3V.js";
|
|
63
63
|
import {
|
|
64
64
|
DEFAULT_BREAKPOINTS,
|
|
65
65
|
DEFAULT_I18N_CONFIG,
|
|
66
66
|
DEFAULT_REM_CONFIG,
|
|
67
67
|
DEFAULT_RESPONSIVE_SCALES,
|
|
68
68
|
getBreakpointValues,
|
|
69
|
+
isI18nValue,
|
|
69
70
|
migrateI18nConfig,
|
|
70
71
|
normalizeBreakpointConfig,
|
|
71
72
|
parseLocaleFromPath,
|
|
72
73
|
resolveI18nValue,
|
|
73
74
|
setStoredLocale
|
|
74
|
-
} from "../../chunks/chunk-
|
|
75
|
+
} from "../../chunks/chunk-AZQYF6KE.js";
|
|
75
76
|
import {
|
|
76
77
|
isTiptapDocument,
|
|
77
78
|
tiptapToHtml
|
|
@@ -636,7 +637,7 @@ function setI18nConfig(config) {
|
|
|
636
637
|
|
|
637
638
|
// lib/client/core/cmsTemplateProcessor.ts
|
|
638
639
|
init_constants();
|
|
639
|
-
function
|
|
640
|
+
function isI18nValue2(value) {
|
|
640
641
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
641
642
|
return false;
|
|
642
643
|
}
|
|
@@ -669,7 +670,7 @@ function processCMSTemplate(template, cmsItem, locale) {
|
|
|
669
670
|
return "";
|
|
670
671
|
}
|
|
671
672
|
}
|
|
672
|
-
if (
|
|
673
|
+
if (isI18nValue2(value)) {
|
|
673
674
|
value = resolveI18nValue2(value, effectiveLocale, config);
|
|
674
675
|
}
|
|
675
676
|
if (value === null || value === void 0) {
|
|
@@ -758,7 +759,12 @@ function buildEmbed(node, ctx, deps) {
|
|
|
758
759
|
i18nResolver
|
|
759
760
|
);
|
|
760
761
|
}
|
|
761
|
-
const
|
|
762
|
+
const scales = getCachedResponsiveScalesConfig();
|
|
763
|
+
const fluidActive = scales?.enabled === true && scales?.mode === "fluid";
|
|
764
|
+
const utilityClasses = responsiveStylesToClasses(
|
|
765
|
+
processedStyle,
|
|
766
|
+
{ fluidActive, responsiveScales: scales ?? void 0 }
|
|
767
|
+
);
|
|
762
768
|
UtilityClassCollector.collect(utilityClasses);
|
|
763
769
|
classNames.push(...utilityClasses);
|
|
764
770
|
}
|
|
@@ -793,7 +799,12 @@ function buildEmbed(node, ctx, deps) {
|
|
|
793
799
|
const previewClasses = [];
|
|
794
800
|
for (const rule of nodeInteractiveStyles) {
|
|
795
801
|
if (rule.previewProp && ctx.componentResolvedProps[rule.previewProp] === true) {
|
|
796
|
-
const
|
|
802
|
+
const previewScales = getCachedResponsiveScalesConfig();
|
|
803
|
+
const previewFluidActive = previewScales?.enabled === true && previewScales?.mode === "fluid";
|
|
804
|
+
const styleClasses = responsiveStylesToClasses(
|
|
805
|
+
rule.style,
|
|
806
|
+
{ fluidActive: previewFluidActive, responsiveScales: previewScales ?? void 0 }
|
|
807
|
+
);
|
|
797
808
|
UtilityClassCollector.collect(styleClasses);
|
|
798
809
|
previewClasses.push(...styleClasses);
|
|
799
810
|
}
|
|
@@ -804,9 +815,12 @@ function buildEmbed(node, ctx, deps) {
|
|
|
804
815
|
}
|
|
805
816
|
}
|
|
806
817
|
}
|
|
807
|
-
if (extractedAttributes
|
|
808
|
-
const
|
|
809
|
-
|
|
818
|
+
if ("class" in extractedAttributes || "className" in extractedAttributes) {
|
|
819
|
+
const attrClass = extractedAttributes.class ?? extractedAttributes.className ?? "";
|
|
820
|
+
if (attrClass) {
|
|
821
|
+
classNames.push(...attrClass.split(/\s+/));
|
|
822
|
+
}
|
|
823
|
+
delete extractedAttributes.class;
|
|
810
824
|
delete extractedAttributes.className;
|
|
811
825
|
}
|
|
812
826
|
if (classNames.length > 0) {
|
|
@@ -890,7 +904,12 @@ function buildLinkNode(node, children, ctx, deps) {
|
|
|
890
904
|
i18nResolver
|
|
891
905
|
);
|
|
892
906
|
}
|
|
893
|
-
const
|
|
907
|
+
const scales = getCachedResponsiveScalesConfig();
|
|
908
|
+
const fluidActive = scales?.enabled === true && scales?.mode === "fluid";
|
|
909
|
+
const utilityClasses = responsiveStylesToClasses(
|
|
910
|
+
processedStyle,
|
|
911
|
+
{ fluidActive, responsiveScales: scales ?? void 0 }
|
|
912
|
+
);
|
|
894
913
|
UtilityClassCollector.collect(utilityClasses);
|
|
895
914
|
classNames.push(...utilityClasses);
|
|
896
915
|
}
|
|
@@ -925,7 +944,12 @@ function buildLinkNode(node, children, ctx, deps) {
|
|
|
925
944
|
const previewClasses = [];
|
|
926
945
|
for (const rule of nodeInteractiveStyles) {
|
|
927
946
|
if (rule.previewProp && ctx.componentResolvedProps[rule.previewProp] === true) {
|
|
928
|
-
const
|
|
947
|
+
const previewScales = getCachedResponsiveScalesConfig();
|
|
948
|
+
const previewFluidActive = previewScales?.enabled === true && previewScales?.mode === "fluid";
|
|
949
|
+
const styleClasses = responsiveStylesToClasses(
|
|
950
|
+
rule.style,
|
|
951
|
+
{ fluidActive: previewFluidActive, responsiveScales: previewScales ?? void 0 }
|
|
952
|
+
);
|
|
929
953
|
UtilityClassCollector.collect(styleClasses);
|
|
930
954
|
previewClasses.push(...styleClasses);
|
|
931
955
|
}
|
|
@@ -936,9 +960,12 @@ function buildLinkNode(node, children, ctx, deps) {
|
|
|
936
960
|
}
|
|
937
961
|
}
|
|
938
962
|
}
|
|
939
|
-
if (extractedAttributes
|
|
940
|
-
const
|
|
941
|
-
|
|
963
|
+
if ("class" in extractedAttributes || "className" in extractedAttributes) {
|
|
964
|
+
const attrClass = extractedAttributes.class ?? extractedAttributes.className ?? "";
|
|
965
|
+
if (attrClass) {
|
|
966
|
+
classNames.push(...attrClass.split(/\s+/));
|
|
967
|
+
}
|
|
968
|
+
delete extractedAttributes.class;
|
|
942
969
|
delete extractedAttributes.className;
|
|
943
970
|
}
|
|
944
971
|
if (deps.getCurrentPagePath && typeof node.href === "string") {
|
|
@@ -1024,8 +1051,13 @@ function buildLocaleList(node, ctx, deps) {
|
|
|
1024
1051
|
localeListProps["data-cms-item-index"] = cmsItemIndexPath.join(".");
|
|
1025
1052
|
}
|
|
1026
1053
|
let classNames = [];
|
|
1054
|
+
const scales = getCachedResponsiveScalesConfig();
|
|
1055
|
+
const fluidActive = scales?.enabled === true && scales?.mode === "fluid";
|
|
1027
1056
|
if (node.style) {
|
|
1028
|
-
const utilityClasses = responsiveStylesToClasses(
|
|
1057
|
+
const utilityClasses = responsiveStylesToClasses(
|
|
1058
|
+
node.style,
|
|
1059
|
+
{ fluidActive, responsiveScales: scales ?? void 0 }
|
|
1060
|
+
);
|
|
1029
1061
|
UtilityClassCollector.collect(utilityClasses);
|
|
1030
1062
|
classNames.push(...utilityClasses);
|
|
1031
1063
|
}
|
|
@@ -1060,7 +1092,10 @@ function buildLocaleList(node, ctx, deps) {
|
|
|
1060
1092
|
const previewClasses = [];
|
|
1061
1093
|
for (const rule of nodeInteractiveStyles) {
|
|
1062
1094
|
if (rule.previewProp && ctx.componentResolvedProps[rule.previewProp] === true) {
|
|
1063
|
-
const styleClasses = responsiveStylesToClasses(
|
|
1095
|
+
const styleClasses = responsiveStylesToClasses(
|
|
1096
|
+
rule.style,
|
|
1097
|
+
{ fluidActive, responsiveScales: scales ?? void 0 }
|
|
1098
|
+
);
|
|
1064
1099
|
UtilityClassCollector.collect(styleClasses);
|
|
1065
1100
|
previewClasses.push(...styleClasses);
|
|
1066
1101
|
}
|
|
@@ -1071,9 +1106,12 @@ function buildLocaleList(node, ctx, deps) {
|
|
|
1071
1106
|
}
|
|
1072
1107
|
}
|
|
1073
1108
|
}
|
|
1074
|
-
if (extractedAttributes
|
|
1075
|
-
const
|
|
1076
|
-
|
|
1109
|
+
if ("class" in extractedAttributes || "className" in extractedAttributes) {
|
|
1110
|
+
const attrClass = extractedAttributes.class ?? extractedAttributes.className ?? "";
|
|
1111
|
+
if (attrClass) {
|
|
1112
|
+
classNames.push(...attrClass.split(/\s+/));
|
|
1113
|
+
}
|
|
1114
|
+
delete extractedAttributes.class;
|
|
1077
1115
|
delete extractedAttributes.className;
|
|
1078
1116
|
}
|
|
1079
1117
|
if (classNames.length > 0) {
|
|
@@ -1093,10 +1131,10 @@ function buildLocaleList(node, ctx, deps) {
|
|
|
1093
1131
|
const showFlag = node.showFlag !== false;
|
|
1094
1132
|
const configLocales = i18nConfig?.locales || [];
|
|
1095
1133
|
const currentLocaleCode = locale || i18nConfig?.defaultLocale || "en";
|
|
1096
|
-
const itemClasses = node.itemStyle ? responsiveStylesToClasses(node.itemStyle) : [];
|
|
1097
|
-
const activeItemClasses = node.activeItemStyle ? responsiveStylesToClasses(node.activeItemStyle) : [];
|
|
1098
|
-
const separatorClasses = node.separatorStyle ? responsiveStylesToClasses(node.separatorStyle) : [];
|
|
1099
|
-
const flagClasses = node.flagStyle ? responsiveStylesToClasses(node.flagStyle) : [];
|
|
1134
|
+
const itemClasses = node.itemStyle ? responsiveStylesToClasses(node.itemStyle, { fluidActive, responsiveScales: scales ?? void 0 }) : [];
|
|
1135
|
+
const activeItemClasses = node.activeItemStyle ? responsiveStylesToClasses(node.activeItemStyle, { fluidActive, responsiveScales: scales ?? void 0 }) : [];
|
|
1136
|
+
const separatorClasses = node.separatorStyle ? responsiveStylesToClasses(node.separatorStyle, { fluidActive, responsiveScales: scales ?? void 0 }) : [];
|
|
1137
|
+
const flagClasses = node.flagStyle ? responsiveStylesToClasses(node.flagStyle, { fluidActive, responsiveScales: scales ?? void 0 }) : [];
|
|
1100
1138
|
UtilityClassCollector.collect(itemClasses);
|
|
1101
1139
|
UtilityClassCollector.collect(activeItemClasses);
|
|
1102
1140
|
UtilityClassCollector.collect(separatorClasses);
|
|
@@ -1643,7 +1681,12 @@ var ComponentBuilder = class {
|
|
|
1643
1681
|
getCachedStyleClasses(style) {
|
|
1644
1682
|
let cached = this.styleClassCache.get(style);
|
|
1645
1683
|
if (!cached) {
|
|
1646
|
-
|
|
1684
|
+
const scales = getCachedResponsiveScalesConfig();
|
|
1685
|
+
const fluidActive = scales?.enabled === true && scales?.mode === "fluid";
|
|
1686
|
+
cached = responsiveStylesToClasses(
|
|
1687
|
+
style,
|
|
1688
|
+
{ fluidActive, responsiveScales: scales ?? void 0 }
|
|
1689
|
+
);
|
|
1647
1690
|
this.styleClassCache.set(style, cached);
|
|
1648
1691
|
}
|
|
1649
1692
|
UtilityClassCollector.collect(cached);
|
|
@@ -1818,6 +1861,12 @@ var ComponentBuilder = class {
|
|
|
1818
1861
|
componentResolvedProps = null
|
|
1819
1862
|
} = options;
|
|
1820
1863
|
if (!node) return null;
|
|
1864
|
+
if (isI18nValue(node)) {
|
|
1865
|
+
const i18nResolveConfig = i18nConfig ?? DEFAULT_I18N_CONFIG;
|
|
1866
|
+
const i18nEffectiveLocale = locale || i18nResolveConfig.defaultLocale;
|
|
1867
|
+
const resolved = resolveI18nValue(node, i18nEffectiveLocale, i18nResolveConfig);
|
|
1868
|
+
return this.buildComponent({ ...options, node: resolved });
|
|
1869
|
+
}
|
|
1821
1870
|
const ctx = {
|
|
1822
1871
|
key,
|
|
1823
1872
|
elementPath,
|
|
@@ -2151,10 +2200,20 @@ var ComponentBuilder = class {
|
|
|
2151
2200
|
return result;
|
|
2152
2201
|
}
|
|
2153
2202
|
/**
|
|
2154
|
-
* Extract and merge attributes from node
|
|
2203
|
+
* Extract and merge attributes from node. Resolves any `_i18n` value
|
|
2204
|
+
* objects on attribute values to the active locale's string before
|
|
2205
|
+
* downstream template / CMS processing, mirroring the SSR path.
|
|
2155
2206
|
*/
|
|
2156
2207
|
mergeAttributes(props, node, ctx) {
|
|
2157
2208
|
let extractedAttributes = extractAttributesFromNode(node);
|
|
2209
|
+
const attrI18nConfig = ctx.i18nConfig ?? DEFAULT_I18N_CONFIG;
|
|
2210
|
+
const attrEffectiveLocale = ctx.locale || attrI18nConfig.defaultLocale;
|
|
2211
|
+
for (const [key, value] of Object.entries(extractedAttributes)) {
|
|
2212
|
+
if (isI18nValue(value)) {
|
|
2213
|
+
extractedAttributes = { ...extractedAttributes };
|
|
2214
|
+
extractedAttributes[key] = resolveI18nValue(value, attrEffectiveLocale, attrI18nConfig);
|
|
2215
|
+
}
|
|
2216
|
+
}
|
|
2158
2217
|
const originalAttributes = { ...extractedAttributes };
|
|
2159
2218
|
if (ctx.cmsContext && Object.keys(extractedAttributes).length > 0) {
|
|
2160
2219
|
extractedAttributes = processCMSPropsTemplate(
|
|
@@ -3201,7 +3260,8 @@ ${originalCSS}`);
|
|
|
3201
3260
|
if (interactiveStylesMap.size === 0) return;
|
|
3202
3261
|
const breakpointConfig2 = getCachedBreakpointConfig() || DEFAULT_BREAKPOINTS;
|
|
3203
3262
|
const remConversionConfig2 = getCachedRemConversionConfig() || void 0;
|
|
3204
|
-
const
|
|
3263
|
+
const responsiveScalesConfig2 = getCachedResponsiveScalesConfig() || void 0;
|
|
3264
|
+
const interactiveCSS = generateAllInteractiveCSS(interactiveStylesMap, breakpointConfig2, remConversionConfig2, responsiveScalesConfig2);
|
|
3205
3265
|
if (!interactiveCSS) return;
|
|
3206
3266
|
if (document.head) {
|
|
3207
3267
|
let styleTag = document.getElementById(interactiveStyleId);
|
|
@@ -4237,9 +4297,9 @@ var lightThemeColors = {
|
|
|
4237
4297
|
backgroundTertiary: "#eaeef2",
|
|
4238
4298
|
border: "#d0d7de",
|
|
4239
4299
|
borderSecondary: "#d1d5da",
|
|
4240
|
-
text: "#
|
|
4300
|
+
text: "#1a1a1a",
|
|
4241
4301
|
textSecondary: "#586069",
|
|
4242
|
-
textMuted: "#
|
|
4302
|
+
textMuted: "#525a63",
|
|
4243
4303
|
codeString: "#032f62",
|
|
4244
4304
|
codeNumber: "#005cc5",
|
|
4245
4305
|
codeKey: "#005cc5",
|
|
@@ -4284,9 +4344,9 @@ var darkThemeColors = {
|
|
|
4284
4344
|
backgroundTertiary: "#252525",
|
|
4285
4345
|
border: "#333333",
|
|
4286
4346
|
borderSecondary: "#444444",
|
|
4287
|
-
text: "#
|
|
4347
|
+
text: "#ebebeb",
|
|
4288
4348
|
textSecondary: "#cccccc",
|
|
4289
|
-
textMuted: "#
|
|
4349
|
+
textMuted: "#b0b0b0",
|
|
4290
4350
|
codeString: "#ffffff",
|
|
4291
4351
|
codeNumber: "#b5cea8",
|
|
4292
4352
|
codeKey: "#9cdcfe",
|