meno-core 1.0.53 → 1.1.0
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/.claude/settings.local.json +1 -3
- package/bin/cli.ts +66 -261
- package/build-astro.ts +150 -128
- package/dist/bin/cli.js +42 -185
- package/dist/bin/cli.js.map +2 -2
- package/dist/chunks/chunk-2AR55GYH.js +42 -0
- package/dist/chunks/chunk-2AR55GYH.js.map +7 -0
- package/dist/chunks/{chunk-JGWFTO6P.js → chunk-2IIQK7T3.js} +2624 -1389
- package/dist/chunks/chunk-2IIQK7T3.js.map +7 -0
- package/dist/chunks/chunk-4ZRU52J2.js +169 -0
- package/dist/chunks/chunk-4ZRU52J2.js.map +7 -0
- package/dist/chunks/{chunk-UB44F4Z2.js → chunk-5X4HCN7J.js} +5 -7
- package/dist/chunks/chunk-5X4HCN7J.js.map +7 -0
- package/dist/chunks/{chunk-WQFG7PAH.js → chunk-7CCVOL5M.js} +15 -19
- package/dist/chunks/chunk-7CCVOL5M.js.map +7 -0
- package/dist/chunks/{chunk-YBLHKYFF.js → chunk-AR7LHIFY.js} +8 -2
- package/dist/chunks/chunk-AR7LHIFY.js.map +7 -0
- package/dist/chunks/{chunk-O3NAGJP4.js → chunk-NUP7H7D3.js} +135 -41
- package/dist/chunks/chunk-NUP7H7D3.js.map +7 -0
- package/dist/chunks/{chunk-X754AHS5.js → chunk-QWTQZHG3.js} +194 -90
- package/dist/chunks/chunk-QWTQZHG3.js.map +7 -0
- package/dist/chunks/{chunk-H3GJ4H2U.js → chunk-XTKNX4FW.js} +216 -87
- package/dist/chunks/chunk-XTKNX4FW.js.map +7 -0
- package/dist/chunks/{fs-JGINUXGL.js → fs-G3ANWEFP.js} +2 -2
- package/dist/lib/client/index.js +1003 -475
- package/dist/lib/client/index.js.map +3 -3
- package/dist/lib/server/index.js +14393 -6371
- package/dist/lib/server/index.js.map +4 -4
- package/dist/lib/shared/index.js +342 -101
- package/dist/lib/shared/index.js.map +4 -4
- package/dist/lib/shared/richtext/index.js +1 -1
- package/dist/lib/test-utils/index.js +64 -80
- package/dist/lib/test-utils/index.js.map +2 -2
- package/entries/client-router.tsx +10 -8
- package/lib/client/ClientInitializer.ts +8 -8
- package/lib/client/ErrorBoundary.test.tsx +246 -186
- package/lib/client/ErrorBoundary.tsx +183 -132
- package/lib/client/componentRegistry.test.ts +96 -108
- package/lib/client/componentRegistry.ts +1 -3
- package/lib/client/contexts/ThemeContext.tsx +3 -2
- package/lib/client/core/ComponentBuilder.test.ts +663 -560
- package/lib/client/core/ComponentBuilder.ts +427 -155
- package/lib/client/core/ComponentRenderer.test.tsx +2 -4
- package/lib/client/core/ComponentRenderer.tsx +46 -33
- package/lib/client/core/builders/embedBuilder.ts +242 -54
- package/lib/client/core/builders/linkBuilder.ts +72 -45
- package/lib/client/core/builders/linkNodeBuilder.ts +79 -54
- package/lib/client/core/builders/listBuilder.ts +155 -89
- package/lib/client/core/builders/localeListBuilder.ts +97 -62
- package/lib/client/core/builders/types.ts +5 -5
- package/lib/client/core/cmsTemplateProcessor.ts +8 -9
- package/lib/client/elementRegistry.ts +3 -3
- package/lib/client/fontFamiliesService.test.ts +2 -10
- package/lib/client/fontFamiliesService.ts +3 -3
- package/lib/client/hmr/HMRManager.tsx +47 -30
- package/lib/client/hmrCssReload.ts +49 -14
- package/lib/client/hmrWebSocket.ts +14 -19
- package/lib/client/hooks/useColorVariables.test.ts +21 -21
- package/lib/client/hooks/useColorVariables.ts +23 -18
- package/lib/client/hooks/usePropertyAutocomplete.ts +4 -6
- package/lib/client/hooks/useVariables.ts +6 -4
- package/lib/client/hydration/HydrationUtils.test.ts +24 -25
- package/lib/client/hydration/HydrationUtils.ts +3 -4
- package/lib/client/i18nConfigService.test.ts +2 -7
- package/lib/client/i18nConfigService.ts +2 -2
- package/lib/client/meno-filter/MenoFilter.test.ts +47 -49
- package/lib/client/meno-filter/MenoFilter.ts +14 -15
- package/lib/client/meno-filter/bindings.ts +18 -43
- package/lib/client/meno-filter/init.ts +4 -4
- package/lib/client/meno-filter/renderer.ts +30 -32
- package/lib/client/meno-filter/script.generated.ts +1 -3
- package/lib/client/meno-filter/ui.ts +4 -6
- package/lib/client/meno-filter/updates.ts +18 -23
- package/lib/client/meno-filter/utils.ts +1 -1
- package/lib/client/navigation.test.ts +174 -178
- package/lib/client/navigation.ts +0 -1
- package/lib/client/responsiveStyleResolver.knownTokens.test.ts +71 -0
- package/lib/client/responsiveStyleResolver.test.ts +234 -232
- package/lib/client/responsiveStyleResolver.ts +74 -20
- package/lib/client/routing/RouteLoader.test.ts +24 -25
- package/lib/client/routing/RouteLoader.ts +27 -35
- package/lib/client/routing/Router.tsx +210 -153
- package/lib/client/scripts/ScriptExecutor.test.ts +157 -158
- package/lib/client/scripts/ScriptExecutor.ts +18 -36
- package/lib/client/services/PrefetchService.test.ts +3 -3
- package/lib/client/services/PrefetchService.ts +23 -29
- package/lib/client/styleProcessor.test.ts +9 -9
- package/lib/client/styleProcessor.ts +24 -15
- package/lib/client/styles/StyleInjector.test.ts +122 -115
- package/lib/client/styles/StyleInjector.ts +10 -7
- package/lib/client/styles/UtilityClassCollector.ts +62 -28
- package/lib/client/styles/cspNonce.test.ts +2 -5
- package/lib/client/templateEngine.test.ts +554 -488
- package/lib/client/templateEngine.ts +203 -73
- package/lib/client/theme.test.ts +1 -1
- package/lib/client/theme.ts +0 -1
- package/lib/client/utils/toast.ts +0 -1
- package/lib/server/__integration__/api-routes.test.ts +8 -4
- package/lib/server/__integration__/cms-integration.test.ts +1 -4
- package/lib/server/__integration__/server-lifecycle.test.ts +4 -5
- package/lib/server/__integration__/ssr-rendering.test.ts +47 -37
- package/lib/server/__integration__/static-assets.test.ts +3 -3
- package/lib/server/__integration__/test-helpers.ts +87 -74
- package/lib/server/ab/generateFunctions.ts +12 -10
- package/lib/server/astro/cmsPageEmitter.ts +26 -42
- package/lib/server/astro/componentEmitter.ts +35 -43
- package/lib/server/astro/cssCollector.ts +10 -26
- package/lib/server/astro/nodeToAstro.test.ts +1754 -34
- package/lib/server/astro/nodeToAstro.ts +232 -216
- package/lib/server/astro/normalizeOrphanTemplateProps.test.ts +115 -119
- package/lib/server/astro/normalizeOrphanTemplateProps.ts +11 -18
- package/lib/server/astro/pageEmitter.ts +9 -13
- package/lib/server/astro/tailwindMapper.test.ts +10 -37
- package/lib/server/astro/tailwindMapper.ts +33 -40
- package/lib/server/astro/templateTransformer.ts +17 -20
- package/lib/server/createServer.ts +7 -19
- package/lib/server/cssGenerator.test.ts +35 -44
- package/lib/server/cssGenerator.ts +8 -19
- package/lib/server/fileWatcher.test.ts +164 -13
- package/lib/server/fileWatcher.ts +209 -124
- package/lib/server/index.ts +14 -17
- package/lib/server/jsonLoader.test.ts +39 -2
- package/lib/server/jsonLoader.ts +39 -34
- package/lib/server/middleware/cors.test.ts +21 -21
- package/lib/server/middleware/cors.ts +28 -4
- package/lib/server/middleware/errorHandler.test.ts +7 -5
- package/lib/server/middleware/errorHandler.ts +3 -8
- package/lib/server/middleware/index.ts +0 -1
- package/lib/server/middleware/logger.test.ts +10 -8
- package/lib/server/middleware/logger.ts +17 -29
- package/lib/server/migrateTemplates.ts +3 -3
- package/lib/server/pageCache.test.ts +76 -77
- package/lib/server/pageCache.ts +0 -1
- package/lib/server/projectContext.ts +5 -4
- package/lib/server/providers/fileSystemCMSProvider.test.ts +142 -99
- package/lib/server/providers/fileSystemCMSProvider.ts +62 -38
- package/lib/server/routes/api/cms.test.ts +26 -14
- package/lib/server/routes/api/cms.ts +9 -14
- package/lib/server/routes/api/colors.test.ts +2 -2
- package/lib/server/routes/api/components.ts +31 -35
- package/lib/server/routes/api/config.ts +3 -4
- package/lib/server/routes/api/core-routes.ts +49 -76
- package/lib/server/routes/api/enums.test.ts +2 -2
- package/lib/server/routes/api/functions.ts +9 -17
- package/lib/server/routes/api/index.ts +3 -6
- package/lib/server/routes/api/pages.ts +8 -11
- package/lib/server/routes/api/shared.test.ts +1 -1
- package/lib/server/routes/api/shared.ts +12 -9
- package/lib/server/routes/api/variables.test.ts +3 -5
- package/lib/server/routes/api/variables.ts +1 -1
- package/lib/server/routes/index.ts +25 -28
- package/lib/server/routes/pages.ts +35 -31
- package/lib/server/routes/static.ts +17 -6
- package/lib/server/runtime/bundler.ts +98 -61
- package/lib/server/runtime/fs.ts +16 -26
- package/lib/server/runtime/httpServer.ts +8 -12
- package/lib/server/services/ColorService.test.ts +3 -3
- package/lib/server/services/ColorService.ts +37 -29
- package/lib/server/services/EnumService.test.ts +4 -8
- package/lib/server/services/EnumService.ts +11 -3
- package/lib/server/services/VariableService.test.ts +8 -12
- package/lib/server/services/VariableService.ts +11 -3
- package/lib/server/services/cmsService.test.ts +158 -120
- package/lib/server/services/cmsService.ts +36 -146
- package/lib/server/services/componentService.test.ts +125 -45
- package/lib/server/services/componentService.ts +70 -46
- package/lib/server/services/configService.test.ts +22 -45
- package/lib/server/services/configService.ts +50 -27
- package/lib/server/services/fileWatcherService.ts +42 -8
- package/lib/server/services/index.ts +0 -1
- package/lib/server/services/pageService.test.ts +8 -10
- package/lib/server/services/pageService.ts +32 -18
- package/lib/server/ssr/attributeBuilder.ts +18 -8
- package/lib/server/ssr/buildErrorOverlay.ts +11 -12
- package/lib/server/ssr/clientDataInjector.ts +7 -21
- package/lib/server/ssr/cmsSSRProcessor.ts +4 -8
- package/lib/server/ssr/cssCollector.ts +1 -1
- package/lib/server/ssr/errorOverlay.test.ts +1 -1
- package/lib/server/ssr/errorOverlay.ts +3 -9
- package/lib/server/ssr/htmlGenerator.nonce.test.ts +9 -14
- package/lib/server/ssr/htmlGenerator.test.ts +120 -44
- package/lib/server/ssr/htmlGenerator.ts +126 -91
- package/lib/server/ssr/imageMetadata.test.ts +3 -1
- package/lib/server/ssr/imageMetadata.ts +27 -21
- package/lib/server/ssr/jsCollector.test.ts +8 -18
- package/lib/server/ssr/jsCollector.ts +3 -8
- package/lib/server/ssr/liveReloadIntegration.test.ts +76 -36
- package/lib/server/ssr/metaTagGenerator.ts +2 -2
- package/lib/server/ssr/ssrRenderer.branches.test.ts +1103 -0
- package/lib/server/ssr/ssrRenderer.test.ts +316 -256
- package/lib/server/ssr/ssrRenderer.ts +795 -243
- package/lib/server/ssrRenderer.test.ts +1048 -954
- package/lib/server/utils/jsonLineMapper.test.ts +28 -28
- package/lib/server/utils/jsonLineMapper.ts +7 -7
- package/lib/server/validateStyleCoverage.ts +18 -21
- package/lib/server/websocketManager.ts +28 -19
- package/lib/shared/attributeNodeUtils.test.ts +15 -15
- package/lib/shared/attributeNodeUtils.ts +5 -12
- package/lib/shared/breakpoints.test.ts +5 -5
- package/lib/shared/breakpoints.ts +4 -11
- package/lib/shared/cmsQuery.test.ts +81 -0
- package/lib/shared/cmsQuery.ts +92 -0
- package/lib/shared/cmsQueryParser.test.ts +50 -42
- package/lib/shared/cmsQueryParser.ts +60 -38
- package/lib/shared/colorConversions.ts +9 -9
- package/lib/shared/colorVariableUtils.test.ts +27 -5
- package/lib/shared/colorVariableUtils.ts +21 -12
- package/lib/shared/componentRefs.ts +1 -5
- package/lib/shared/constants.test.ts +3 -3
- package/lib/shared/constants.ts +8 -8
- package/lib/shared/cssGeneration.test.ts +285 -144
- package/lib/shared/cssGeneration.ts +217 -531
- package/lib/shared/cssNamedColors.ts +152 -30
- package/lib/shared/cssProperties.test.ts +69 -70
- package/lib/shared/cssProperties.ts +298 -114
- package/lib/shared/elementClassName.test.ts +109 -109
- package/lib/shared/elementClassName.ts +3 -3
- package/lib/shared/elementUtils.ts +12 -16
- package/lib/shared/errorLogger.test.ts +12 -12
- package/lib/shared/errorLogger.ts +2 -10
- package/lib/shared/errors.test.ts +2 -13
- package/lib/shared/errors.ts +2 -8
- package/lib/shared/expressionEvaluator.test.ts +145 -0
- package/lib/shared/expressionEvaluator.ts +52 -24
- package/lib/shared/fontLoader.test.ts +32 -18
- package/lib/shared/fontLoader.ts +2 -2
- package/lib/shared/friendlyError.ts +2 -3
- package/lib/shared/gradientUtils.test.ts +3 -7
- package/lib/shared/gradientUtils.ts +17 -14
- package/lib/shared/hrefRefs.test.ts +2 -2
- package/lib/shared/hrefRefs.ts +2 -10
- package/lib/shared/i18n.test.ts +4 -4
- package/lib/shared/i18n.ts +18 -38
- package/lib/shared/index.ts +27 -0
- package/lib/shared/inlineSvgStyleRules.ts +14 -13
- package/lib/shared/interactiveStyleMappings.test.ts +32 -54
- package/lib/shared/interactiveStyleMappings.ts +11 -24
- package/lib/shared/interactiveStyles.test.ts +165 -188
- package/lib/shared/interfaces/contentProvider.ts +1 -1
- package/lib/shared/itemTemplateUtils.test.ts +11 -17
- package/lib/shared/itemTemplateUtils.ts +27 -39
- package/lib/shared/jsonRepair.ts +16 -10
- package/lib/shared/libraryLoader.test.ts +21 -55
- package/lib/shared/libraryLoader.ts +7 -22
- package/lib/shared/linkUtils.ts +1 -1
- package/lib/shared/logger.test.ts +66 -0
- package/lib/shared/logger.ts +94 -0
- package/lib/shared/markdown.ts +25 -0
- package/lib/shared/netlifyLocale404.test.ts +179 -0
- package/lib/shared/netlifyLocale404.ts +110 -0
- package/lib/shared/nodeUtils.test.ts +28 -16
- package/lib/shared/nodeUtils.ts +76 -23
- package/lib/shared/pathArrayUtils.test.ts +1 -2
- package/lib/shared/pathArrayUtils.ts +1 -1
- package/lib/shared/pathSecurity.ts +2 -2
- package/lib/shared/pathUtils.test.ts +4 -6
- package/lib/shared/pathUtils.ts +42 -49
- package/lib/shared/paths/Path.test.ts +2 -2
- package/lib/shared/paths/Path.ts +0 -1
- package/lib/shared/paths/PathConverter.test.ts +1 -1
- package/lib/shared/paths/PathConverter.ts +17 -20
- package/lib/shared/paths/PathUtils.ts +13 -13
- package/lib/shared/paths/PathValidator.test.ts +2 -15
- package/lib/shared/paths/PathValidator.ts +12 -10
- package/lib/shared/paths/index.ts +1 -2
- package/lib/shared/permissions.test.ts +168 -0
- package/lib/shared/permissions.ts +162 -0
- package/lib/shared/propResolver.test.ts +240 -244
- package/lib/shared/propResolver.ts +15 -26
- package/lib/shared/pxToRem.test.ts +7 -6
- package/lib/shared/pxToRem.ts +2 -5
- package/lib/shared/registry/BaseNodeTypeRegistry.test.ts +12 -6
- package/lib/shared/registry/ClientRegistry.ts +0 -2
- package/lib/shared/registry/ComponentRegistry.test.ts +46 -32
- package/lib/shared/registry/ComponentRegistry.ts +12 -9
- package/lib/shared/registry/NodeTypeDefinition.ts +16 -9
- package/lib/shared/registry/RegistryManager.ts +1 -2
- package/lib/shared/registry/SSRRegistry.ts +0 -2
- package/lib/shared/registry/createNodeType.ts +7 -9
- package/lib/shared/registry/defineNodeType.ts +2 -6
- package/lib/shared/registry/fieldPresets.ts +3 -1
- package/lib/shared/registry/index.ts +0 -1
- package/lib/shared/registry/nodeTypes/ComponentInstanceNodeType.ts +14 -15
- package/lib/shared/registry/nodeTypes/CustomNodeType.ts +103 -0
- package/lib/shared/registry/nodeTypes/EmbedNodeType.ts +18 -11
- package/lib/shared/registry/nodeTypes/HtmlNodeType.ts +48 -19
- package/lib/shared/registry/nodeTypes/IslandNodeType.ts +129 -0
- package/lib/shared/registry/nodeTypes/LinkNodeType.ts +21 -19
- package/lib/shared/registry/nodeTypes/ListNodeType.ts +117 -77
- package/lib/shared/registry/nodeTypes/LocaleListNodeType.ts +27 -21
- package/lib/shared/registry/nodeTypes/MarkdownNodeType.ts +78 -0
- package/lib/shared/registry/nodeTypes/SlotMarkerType.ts +12 -8
- package/lib/shared/registry/nodeTypes/index.ts +26 -3
- package/lib/shared/responsiveScaling.test.ts +16 -34
- package/lib/shared/responsiveScaling.ts +61 -42
- package/lib/shared/responsiveStyleUtils.test.ts +0 -1
- package/lib/shared/responsiveStyleUtils.ts +11 -13
- package/lib/shared/richtext/htmlToTiptap.test.ts +139 -130
- package/lib/shared/richtext/htmlToTiptap.ts +2 -4
- package/lib/shared/richtext/tiptapToHtml.test.ts +5 -6
- package/lib/shared/richtext/types.ts +1 -8
- package/lib/shared/slugTranslator.test.ts +13 -13
- package/lib/shared/slugTranslator.ts +12 -16
- package/lib/shared/slugify.ts +9 -15
- package/lib/shared/styleNodeUtils.test.ts +8 -8
- package/lib/shared/styleNodeUtils.ts +18 -20
- package/lib/shared/styleUtils.test.ts +87 -61
- package/lib/shared/styleUtils.ts +5 -6
- package/lib/shared/themeDefaults.test.ts +11 -14
- package/lib/shared/themeDefaults.ts +3 -4
- package/lib/shared/tree/PathBuilder.test.ts +63 -145
- package/lib/shared/tree/PathBuilder.ts +59 -47
- package/lib/shared/treePathUtils.test.ts +51 -12
- package/lib/shared/treePathUtils.ts +91 -60
- package/lib/shared/types/api.ts +105 -8
- package/lib/shared/types/cms.test.ts +34 -0
- package/lib/shared/types/cms.ts +90 -34
- package/lib/shared/types/comment.ts +49 -16
- package/lib/shared/types/components.ts +51 -25
- package/lib/shared/types/errors.test.ts +1 -6
- package/lib/shared/types/errors.ts +3 -7
- package/lib/shared/types/experiments.ts +28 -28
- package/lib/shared/types/index.ts +25 -2
- package/lib/shared/types/permissions.ts +139 -0
- package/lib/shared/types/styles.ts +0 -1
- package/lib/shared/types/variables.test.ts +4 -13
- package/lib/shared/types/variables.ts +51 -30
- package/lib/shared/types.ts +1 -2
- package/lib/shared/utilityClassConfig.ts +751 -321
- package/lib/shared/utilityClassMapper.durability.test.ts +117 -0
- package/lib/shared/utilityClassMapper.test.ts +433 -95
- package/lib/shared/utilityClassMapper.ts +322 -249
- package/lib/shared/utilityClassNames.test.ts +38 -0
- package/lib/shared/utilityClassNames.ts +458 -0
- package/lib/shared/utils.test.ts +2 -10
- package/lib/shared/utils.ts +19 -10
- package/lib/shared/validation/cmsValidators.ts +2 -1
- package/lib/shared/validation/commentValidators.test.ts +53 -0
- package/lib/shared/validation/commentValidators.ts +12 -1
- package/lib/shared/validation/index.ts +1 -0
- package/lib/shared/validation/permissionsValidators.test.ts +49 -0
- package/lib/shared/validation/permissionsValidators.ts +49 -0
- package/lib/shared/validation/propValidator.test.ts +19 -21
- package/lib/shared/validation/propValidator.ts +13 -18
- package/lib/shared/validation/schemas.test.ts +64 -32
- package/lib/shared/validation/schemas.ts +616 -345
- package/lib/shared/validation/validators.test.ts +3 -8
- package/lib/shared/validation/validators.ts +89 -68
- package/lib/shared/viewportUnits.integration.test.ts +14 -10
- package/lib/shared/viewportUnits.test.ts +24 -23
- package/lib/shared/viewportUnits.ts +12 -5
- package/lib/test-utils/dom-setup.ts +1 -1
- package/lib/test-utils/factories/ConsoleMockFactory.ts +10 -14
- package/lib/test-utils/factories/DomMockFactory.ts +17 -23
- package/lib/test-utils/factories/EventMockFactory.ts +7 -13
- package/lib/test-utils/factories/FetchMockFactory.ts +39 -57
- package/lib/test-utils/factories/ServerMockFactory.ts +6 -10
- package/lib/test-utils/factories/StoreMockFactory.ts +18 -29
- package/lib/test-utils/fixtures.ts +45 -45
- package/lib/test-utils/helpers/asyncHelpers.test.ts +15 -18
- package/lib/test-utils/helpers/asyncHelpers.ts +11 -20
- package/lib/test-utils/helpers.ts +1 -5
- package/lib/test-utils/index.ts +0 -4
- package/lib/test-utils/mockFactories.ts +13 -19
- package/lib/test-utils/mocks.ts +6 -4
- package/package.json +3 -5
- package/scripts/build-for-publish.mjs +2 -4
- package/scripts/build-meno-filter.ts +4 -7
- package/tsconfig.json +1 -0
- package/vite.config.ts +4 -4
- package/build-next.ts +0 -1361
- package/build-static.test.ts +0 -424
- package/build-static.ts +0 -1074
- package/dist/build-static.js +0 -36
- package/dist/chunks/chunk-2MHDV5BF.js +0 -251
- package/dist/chunks/chunk-2MHDV5BF.js.map +0 -7
- package/dist/chunks/chunk-AZQYF6KE.js +0 -559
- package/dist/chunks/chunk-AZQYF6KE.js.map +0 -7
- package/dist/chunks/chunk-GZHGVVW3.js +0 -322
- package/dist/chunks/chunk-GZHGVVW3.js.map +0 -7
- package/dist/chunks/chunk-H3GJ4H2U.js.map +0 -7
- package/dist/chunks/chunk-I7YIGZXT.js +0 -467
- package/dist/chunks/chunk-I7YIGZXT.js.map +0 -7
- package/dist/chunks/chunk-IGYR22T6.js +0 -6192
- package/dist/chunks/chunk-IGYR22T6.js.map +0 -7
- package/dist/chunks/chunk-JGP5A3Y5.js +0 -1136
- package/dist/chunks/chunk-JGP5A3Y5.js.map +0 -7
- package/dist/chunks/chunk-JGWFTO6P.js.map +0 -7
- package/dist/chunks/chunk-O3NAGJP4.js.map +0 -7
- package/dist/chunks/chunk-QB2LNO4W.js +0 -77
- package/dist/chunks/chunk-QB2LNO4W.js.map +0 -7
- package/dist/chunks/chunk-R6XHAFBF.js +0 -3821
- package/dist/chunks/chunk-R6XHAFBF.js.map +0 -7
- package/dist/chunks/chunk-UB44F4Z2.js.map +0 -7
- package/dist/chunks/chunk-WQFG7PAH.js.map +0 -7
- package/dist/chunks/chunk-X754AHS5.js.map +0 -7
- package/dist/chunks/chunk-YBLHKYFF.js.map +0 -7
- package/dist/chunks/configService-R3OGU2UD.js +0 -13
- package/dist/chunks/configService-R3OGU2UD.js.map +0 -7
- package/dist/chunks/constants-STK2YBIW.js +0 -46
- package/dist/chunks/constants-STK2YBIW.js.map +0 -7
- package/dist/chunks/fs-JGINUXGL.js.map +0 -7
- package/dist/entries/server-router.js +0 -67
- package/dist/entries/server-router.js.map +0 -7
- package/entries/server-router.tsx +0 -81
- package/lib/server/providers/fileSystemPageProvider.ts +0 -160
- package/lib/server/webflow/buildWebflow.ts +0 -635
- package/lib/server/webflow/index.ts +0 -23
- package/lib/server/webflow/nodeToWebflow.test.ts +0 -3170
- package/lib/server/webflow/nodeToWebflow.ts +0 -2435
- package/lib/server/webflow/styleMapper.test.ts +0 -389
- package/lib/server/webflow/styleMapper.ts +0 -695
- package/lib/server/webflow/templateWrapper.ts +0 -49
- package/lib/server/webflow/types.ts +0 -396
- /package/dist/{build-static.js.map → chunks/fs-G3ANWEFP.js.map} +0 -0
|
@@ -79,7 +79,24 @@ var CSS_PROPERTIES_DEFINITION = {
|
|
|
79
79
|
type: "select"
|
|
80
80
|
},
|
|
81
81
|
backgroundBlendMode: {
|
|
82
|
-
values: [
|
|
82
|
+
values: [
|
|
83
|
+
"normal",
|
|
84
|
+
"multiply",
|
|
85
|
+
"screen",
|
|
86
|
+
"overlay",
|
|
87
|
+
"darken",
|
|
88
|
+
"lighten",
|
|
89
|
+
"color-dodge",
|
|
90
|
+
"color-burn",
|
|
91
|
+
"hard-light",
|
|
92
|
+
"soft-light",
|
|
93
|
+
"difference",
|
|
94
|
+
"exclusion",
|
|
95
|
+
"hue",
|
|
96
|
+
"saturation",
|
|
97
|
+
"color",
|
|
98
|
+
"luminosity"
|
|
99
|
+
],
|
|
83
100
|
type: "select"
|
|
84
101
|
},
|
|
85
102
|
// Gradient-text recipe (`background: linear-gradient(...); background-clip:
|
|
@@ -279,7 +296,24 @@ var CSS_PROPERTIES_DEFINITION = {
|
|
|
279
296
|
type: "select"
|
|
280
297
|
},
|
|
281
298
|
mixBlendMode: {
|
|
282
|
-
values: [
|
|
299
|
+
values: [
|
|
300
|
+
"normal",
|
|
301
|
+
"multiply",
|
|
302
|
+
"screen",
|
|
303
|
+
"overlay",
|
|
304
|
+
"darken",
|
|
305
|
+
"lighten",
|
|
306
|
+
"color-dodge",
|
|
307
|
+
"color-burn",
|
|
308
|
+
"hard-light",
|
|
309
|
+
"soft-light",
|
|
310
|
+
"difference",
|
|
311
|
+
"exclusion",
|
|
312
|
+
"hue",
|
|
313
|
+
"saturation",
|
|
314
|
+
"color",
|
|
315
|
+
"luminosity"
|
|
316
|
+
],
|
|
283
317
|
type: "select"
|
|
284
318
|
},
|
|
285
319
|
isolation: {
|
|
@@ -386,7 +420,18 @@ var CSS_PROPERTIES_DEFINITION = {
|
|
|
386
420
|
// Lists
|
|
387
421
|
listStyle: { type: "string" },
|
|
388
422
|
listStyleType: {
|
|
389
|
-
values: [
|
|
423
|
+
values: [
|
|
424
|
+
"none",
|
|
425
|
+
"disc",
|
|
426
|
+
"circle",
|
|
427
|
+
"square",
|
|
428
|
+
"decimal",
|
|
429
|
+
"decimal-leading-zero",
|
|
430
|
+
"lower-roman",
|
|
431
|
+
"upper-roman",
|
|
432
|
+
"lower-alpha",
|
|
433
|
+
"upper-alpha"
|
|
434
|
+
],
|
|
390
435
|
type: "select"
|
|
391
436
|
},
|
|
392
437
|
listStylePosition: {
|
|
@@ -562,22 +607,127 @@ function getPropertyPriority(property) {
|
|
|
562
607
|
return CSS_PROPERTY_PRIORITY[property] ?? 3;
|
|
563
608
|
}
|
|
564
609
|
var CSS_PROPERTY_GROUPS = {
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
610
|
+
Layout: ["display"],
|
|
611
|
+
Spacing: [
|
|
612
|
+
"margin",
|
|
613
|
+
"marginTop",
|
|
614
|
+
"marginRight",
|
|
615
|
+
"marginBottom",
|
|
616
|
+
"marginLeft",
|
|
617
|
+
"padding",
|
|
618
|
+
"paddingTop",
|
|
619
|
+
"paddingRight",
|
|
620
|
+
"paddingBottom",
|
|
621
|
+
"paddingLeft"
|
|
622
|
+
],
|
|
623
|
+
Size: ["width", "height", "minWidth", "maxWidth", "minHeight", "maxHeight", "aspectRatio"],
|
|
624
|
+
Position: ["position", "top", "right", "bottom", "left", "inset", "zIndex"],
|
|
625
|
+
Flexbox: [
|
|
626
|
+
"flex",
|
|
627
|
+
"flexDirection",
|
|
628
|
+
"flexWrap",
|
|
629
|
+
"flexFlow",
|
|
630
|
+
"justifyContent",
|
|
631
|
+
"alignItems",
|
|
632
|
+
"alignContent",
|
|
633
|
+
"gap",
|
|
634
|
+
"rowGap",
|
|
635
|
+
"columnGap",
|
|
636
|
+
"alignSelf",
|
|
637
|
+
"flexGrow",
|
|
638
|
+
"flexShrink",
|
|
639
|
+
"flexBasis",
|
|
640
|
+
"order"
|
|
641
|
+
],
|
|
642
|
+
Grid: [
|
|
643
|
+
"grid",
|
|
644
|
+
"gridTemplateColumns",
|
|
645
|
+
"gridTemplateRows",
|
|
646
|
+
"gridTemplateAreas",
|
|
647
|
+
"gridGap",
|
|
648
|
+
"gridColumn",
|
|
649
|
+
"gridRow",
|
|
650
|
+
"gridArea",
|
|
651
|
+
"gridAutoFlow",
|
|
652
|
+
"gridAutoColumns",
|
|
653
|
+
"gridAutoRows",
|
|
654
|
+
"justifyItems",
|
|
655
|
+
"justifySelf",
|
|
656
|
+
"placeContent",
|
|
657
|
+
"placeItems",
|
|
658
|
+
"placeSelf"
|
|
659
|
+
],
|
|
660
|
+
Typography: [
|
|
661
|
+
"fontWeight",
|
|
662
|
+
"fontSize",
|
|
663
|
+
"fontFamily",
|
|
664
|
+
"fontStyle",
|
|
665
|
+
"lineHeight",
|
|
666
|
+
"color",
|
|
667
|
+
"textAlign",
|
|
668
|
+
"textDecoration",
|
|
669
|
+
"textTransform",
|
|
670
|
+
"letterSpacing",
|
|
671
|
+
"wordSpacing",
|
|
672
|
+
"wordBreak",
|
|
673
|
+
"overflowWrap",
|
|
674
|
+
"textIndent",
|
|
675
|
+
"verticalAlign"
|
|
676
|
+
],
|
|
677
|
+
Background: [
|
|
678
|
+
"background",
|
|
679
|
+
"backgroundColor",
|
|
680
|
+
"backgroundImage",
|
|
681
|
+
"backgroundSize",
|
|
682
|
+
"backgroundPosition",
|
|
683
|
+
"backgroundRepeat",
|
|
684
|
+
"opacity"
|
|
685
|
+
],
|
|
686
|
+
Borders: [
|
|
687
|
+
"borderRadius",
|
|
688
|
+
"borderTopLeftRadius",
|
|
689
|
+
"borderTopRightRadius",
|
|
690
|
+
"borderBottomLeftRadius",
|
|
691
|
+
"borderBottomRightRadius",
|
|
692
|
+
"border",
|
|
693
|
+
"borderWidth",
|
|
694
|
+
"borderStyle",
|
|
695
|
+
"borderColor",
|
|
696
|
+
"borderTop",
|
|
697
|
+
"borderRight",
|
|
698
|
+
"borderBottom",
|
|
699
|
+
"borderLeft"
|
|
700
|
+
],
|
|
701
|
+
Outline: ["outline", "outlineWidth", "outlineStyle", "outlineColor", "outlineOffset"],
|
|
702
|
+
Effects: [
|
|
703
|
+
"boxShadow",
|
|
704
|
+
"textShadow",
|
|
705
|
+
"filter",
|
|
706
|
+
"backdropFilter",
|
|
707
|
+
"transform",
|
|
708
|
+
"transformOrigin",
|
|
709
|
+
"transition",
|
|
710
|
+
"animation",
|
|
711
|
+
"backfaceVisibility",
|
|
712
|
+
"mixBlendMode",
|
|
713
|
+
"clipPath"
|
|
714
|
+
],
|
|
715
|
+
Overflow: ["overflow", "overflowX", "overflowY", "whiteSpace", "textOverflow", "visibility", "content"],
|
|
716
|
+
Interaction: ["cursor", "pointerEvents", "userSelect"],
|
|
717
|
+
Lists: ["listStyle", "listStyleType", "listStylePosition"],
|
|
718
|
+
Other: ["float", "clear", "boxSizing", "objectFit", "objectPosition", "resize", "scrollBehavior", "accentColor"],
|
|
719
|
+
SVG: [
|
|
720
|
+
"stroke",
|
|
721
|
+
"strokeWidth",
|
|
722
|
+
"strokeDasharray",
|
|
723
|
+
"strokeDashoffset",
|
|
724
|
+
"strokeLinecap",
|
|
725
|
+
"strokeLinejoin",
|
|
726
|
+
"strokeOpacity",
|
|
727
|
+
"fill",
|
|
728
|
+
"fillOpacity",
|
|
729
|
+
"fillRule"
|
|
730
|
+
]
|
|
581
731
|
};
|
|
582
732
|
function getPropertyGroup(propertyName) {
|
|
583
733
|
for (const [groupName, properties] of Object.entries(CSS_PROPERTY_GROUPS)) {
|
|
@@ -588,22 +738,48 @@ function getPropertyGroup(propertyName) {
|
|
|
588
738
|
return "Other";
|
|
589
739
|
}
|
|
590
740
|
var VISUAL_MODE_PROPERTIES = {
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
741
|
+
Layout: ["display"],
|
|
742
|
+
Grid: ["gridTemplateColumns"],
|
|
743
|
+
Flexbox: ["flexDirection", "flexWrap", "justifyContent", "alignItems", "gap", "flexGrow", "flexShrink", "flexBasis"],
|
|
744
|
+
Spacing: [
|
|
745
|
+
"margin",
|
|
746
|
+
"marginTop",
|
|
747
|
+
"marginRight",
|
|
748
|
+
"marginBottom",
|
|
749
|
+
"marginLeft",
|
|
750
|
+
"padding",
|
|
751
|
+
"paddingTop",
|
|
752
|
+
"paddingRight",
|
|
753
|
+
"paddingBottom",
|
|
754
|
+
"paddingLeft"
|
|
755
|
+
],
|
|
756
|
+
Size: ["width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight"],
|
|
757
|
+
Position: ["position", "top", "right", "bottom", "left", "zIndex"],
|
|
758
|
+
Typography: [
|
|
759
|
+
"fontFamily",
|
|
760
|
+
"fontWeight",
|
|
761
|
+
"fontSize",
|
|
762
|
+
"lineHeight",
|
|
763
|
+
"color",
|
|
764
|
+
"letterSpacing",
|
|
765
|
+
"textAlign",
|
|
766
|
+
"textTransform",
|
|
767
|
+
"textDecoration"
|
|
768
|
+
],
|
|
769
|
+
Background: [
|
|
770
|
+
"backgroundColor",
|
|
771
|
+
"backgroundImage",
|
|
772
|
+
"backgroundSize",
|
|
773
|
+
"backgroundPosition",
|
|
774
|
+
"backgroundRepeat",
|
|
775
|
+
"opacity"
|
|
776
|
+
],
|
|
777
|
+
Borders: ["borderRadius", "borderWidth", "borderStyle", "borderColor"],
|
|
778
|
+
Effects: ["boxShadow", "transform", "transition", "filter"],
|
|
779
|
+
Overflow: ["overflow", "whiteSpace"],
|
|
780
|
+
Interaction: ["cursor", "pointerEvents"]
|
|
603
781
|
};
|
|
604
|
-
var VISUAL_MODE_PROPERTIES_SET = new Set(
|
|
605
|
-
Object.values(VISUAL_MODE_PROPERTIES).flat()
|
|
606
|
-
);
|
|
782
|
+
var VISUAL_MODE_PROPERTIES_SET = new Set(Object.values(VISUAL_MODE_PROPERTIES).flat());
|
|
607
783
|
function isVisualModeProperty(prop) {
|
|
608
784
|
return VISUAL_MODE_PROPERTIES_SET.has(prop);
|
|
609
785
|
}
|
|
@@ -682,10 +858,10 @@ function matchesAbbreviation(property, input) {
|
|
|
682
858
|
if (!input) return false;
|
|
683
859
|
let propertyIndex = 0;
|
|
684
860
|
for (let inputIndex = 0; inputIndex < input.length; inputIndex++) {
|
|
685
|
-
const inputChar = input[inputIndex];
|
|
861
|
+
const inputChar = input[inputIndex] ?? "";
|
|
686
862
|
let found = false;
|
|
687
863
|
while (propertyIndex < property.length) {
|
|
688
|
-
const propChar = property[propertyIndex];
|
|
864
|
+
const propChar = property[propertyIndex] ?? "";
|
|
689
865
|
const isWordBoundary = propertyIndex === 0 || propChar === propChar.toUpperCase() && propChar !== propChar.toLowerCase();
|
|
690
866
|
if (isWordBoundary && inputChar.toLowerCase() === propChar.toLowerCase()) {
|
|
691
867
|
found = true;
|
|
@@ -725,10 +901,7 @@ function filterCSSProperties(input) {
|
|
|
725
901
|
// Don't duplicate startsWith matches
|
|
726
902
|
);
|
|
727
903
|
const byPriority = (a, b) => getPropertyPriority(a) - getPropertyPriority(b);
|
|
728
|
-
const combined = [
|
|
729
|
-
...startsWithMatches.sort(byPriority),
|
|
730
|
-
...abbreviationMatches.sort(byPriority)
|
|
731
|
-
];
|
|
904
|
+
const combined = [...startsWithMatches.sort(byPriority), ...abbreviationMatches.sort(byPriority)];
|
|
732
905
|
const shortcut = PROPERTY_SHORTCUTS[normalizedInput.toLowerCase()];
|
|
733
906
|
if (shortcut) {
|
|
734
907
|
return [shortcut, ...combined.filter((prop) => prop !== shortcut)];
|
|
@@ -748,9 +921,7 @@ function filterPropertyValues(propertyName, input) {
|
|
|
748
921
|
if (!normalizedInput) {
|
|
749
922
|
return values;
|
|
750
923
|
}
|
|
751
|
-
return values.filter(
|
|
752
|
-
(value) => value.toLowerCase().includes(normalizedInput)
|
|
753
|
-
);
|
|
924
|
+
return values.filter((value) => value.toLowerCase().includes(normalizedInput));
|
|
754
925
|
}
|
|
755
926
|
function getPropertyType(propertyName) {
|
|
756
927
|
return CSS_PROPERTIES_DEFINITION[propertyName]?.type;
|
|
@@ -789,45 +960,6 @@ function appendsPxByDefault(propertyName) {
|
|
|
789
960
|
return true;
|
|
790
961
|
}
|
|
791
962
|
|
|
792
|
-
// lib/shared/errorLogger.ts
|
|
793
|
-
var errorHandler = null;
|
|
794
|
-
function setErrorHandler(handler) {
|
|
795
|
-
errorHandler = handler;
|
|
796
|
-
}
|
|
797
|
-
function isDevelopment() {
|
|
798
|
-
if (typeof process !== "undefined" && process.env?.NODE_ENV) {
|
|
799
|
-
return process.env.NODE_ENV === "development";
|
|
800
|
-
}
|
|
801
|
-
return true;
|
|
802
|
-
}
|
|
803
|
-
function logRuntimeError(location, error, context) {
|
|
804
|
-
const entry = {
|
|
805
|
-
location,
|
|
806
|
-
category: "runtime",
|
|
807
|
-
error,
|
|
808
|
-
context,
|
|
809
|
-
timestamp: Date.now()
|
|
810
|
-
};
|
|
811
|
-
if (isDevelopment()) {
|
|
812
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
813
|
-
console.error(`[${location}] ${errorMessage}`, context ?? "");
|
|
814
|
-
}
|
|
815
|
-
errorHandler?.(entry);
|
|
816
|
-
}
|
|
817
|
-
function logNetworkError(location, error, context) {
|
|
818
|
-
const entry = {
|
|
819
|
-
location,
|
|
820
|
-
category: "network",
|
|
821
|
-
error,
|
|
822
|
-
context,
|
|
823
|
-
timestamp: Date.now()
|
|
824
|
-
};
|
|
825
|
-
if (isDevelopment()) {
|
|
826
|
-
console.error(`[${location}] Network error:`, error, context ?? "");
|
|
827
|
-
}
|
|
828
|
-
errorHandler?.(entry);
|
|
829
|
-
}
|
|
830
|
-
|
|
831
963
|
export {
|
|
832
964
|
CSS_PROPERTIES_DEFINITION,
|
|
833
965
|
CSS_PROPERTIES,
|
|
@@ -842,9 +974,6 @@ export {
|
|
|
842
974
|
filterPropertyValues,
|
|
843
975
|
getPropertyType,
|
|
844
976
|
UNITLESS_PROPERTIES,
|
|
845
|
-
appendsPxByDefault
|
|
846
|
-
setErrorHandler,
|
|
847
|
-
logRuntimeError,
|
|
848
|
-
logNetworkError
|
|
977
|
+
appendsPxByDefault
|
|
849
978
|
};
|
|
850
|
-
//# sourceMappingURL=chunk-
|
|
979
|
+
//# sourceMappingURL=chunk-XTKNX4FW.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../lib/shared/cssProperties.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * CSS Property Definition structure\n */\ninterface CSSPropertyDefinition {\n values?: readonly string[];\n type?: 'string' | 'select' | 'boolean' | 'number';\n}\n\n/**\n * CSS Properties with their valid values and metadata\n * Used for autocomplete suggestions for both property names and values\n */\nexport const CSS_PROPERTIES_DEFINITION: Record<string, CSSPropertyDefinition> = {\n // Display & Layout\n display: {\n values: ['block', 'flex', 'grid', 'inline', 'inline-block', 'inline-flex', 'inline-grid', 'none'],\n type: 'select',\n },\n position: {\n values: ['static', 'relative', 'absolute', 'fixed', 'sticky'],\n type: 'select',\n },\n top: { type: 'string' },\n right: { type: 'string' },\n bottom: { type: 'string' },\n left: { type: 'string' },\n inset: { type: 'string' },\n zIndex: { type: 'number' },\n\n // Dimensions\n width: { type: 'string' },\n height: { type: 'string' },\n minWidth: { type: 'string' },\n maxWidth: { type: 'string' },\n minHeight: { type: 'string' },\n maxHeight: { type: 'string' },\n aspectRatio: { type: 'string' },\n\n // Spacing\n margin: { type: 'string' },\n marginTop: { type: 'string' },\n marginRight: { type: 'string' },\n marginBottom: { type: 'string' },\n marginLeft: { type: 'string' },\n padding: { type: 'string' },\n paddingTop: { type: 'string' },\n paddingRight: { type: 'string' },\n paddingBottom: { type: 'string' },\n paddingLeft: { type: 'string' },\n gap: { type: 'string' },\n rowGap: { type: 'string' },\n columnGap: { type: 'string' },\n\n // Borders\n border: { type: 'string' },\n borderWidth: { type: 'string' },\n borderStyle: {\n values: ['solid', 'dashed', 'dotted', 'double', 'groove', 'ridge', 'inset', 'outset', 'none'],\n type: 'select',\n },\n borderColor: { type: 'string' },\n borderTop: { type: 'string' },\n borderRight: { type: 'string' },\n borderBottom: { type: 'string' },\n borderLeft: { type: 'string' },\n borderRadius: { type: 'string' },\n borderTopLeftRadius: { type: 'string' },\n borderTopRightRadius: { type: 'string' },\n borderBottomLeftRadius: { type: 'string' },\n borderBottomRightRadius: { type: 'string' },\n\n // Background & Colors\n background: { type: 'string' },\n backgroundColor: { type: 'string' },\n backgroundImage: { type: 'string' },\n backgroundSize: {\n values: ['auto', 'cover', 'contain'],\n type: 'select',\n },\n backgroundPosition: {\n values: ['top', 'bottom', 'left', 'right', 'center'],\n type: 'select',\n },\n backgroundRepeat: {\n values: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'],\n type: 'select',\n },\n backgroundAttachment: {\n values: ['scroll', 'fixed', 'local'],\n type: 'select',\n },\n backgroundOrigin: {\n values: ['border-box', 'padding-box', 'content-box'],\n type: 'select',\n },\n backgroundBlendMode: {\n values: [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ],\n type: 'select',\n },\n // Gradient-text recipe (`background: linear-gradient(...); background-clip:\n // text; -webkit-background-clip: text; -webkit-text-fill-color: transparent`).\n // The `Webkit*` capitalization is intentional \u2014 utilityClassMapper's\n // camel\u2192kebab emitter only prepends `-` when the first letter is uppercase,\n // so `WebkitBackgroundClip` round-trips back to `-webkit-background-clip`.\n backgroundClip: {\n values: ['border-box', 'padding-box', 'content-box', 'text'],\n type: 'select',\n },\n WebkitBackgroundClip: {\n values: ['border-box', 'padding-box', 'content-box', 'text'],\n type: 'select',\n },\n WebkitTextFillColor: { type: 'string' },\n WebkitTextStroke: { type: 'string' },\n WebkitTextStrokeWidth: { type: 'string' },\n WebkitTextStrokeColor: { type: 'string' },\n color: { type: 'string' },\n opacity: { type: 'number' },\n\n // Flexbox\n flex: { type: 'string' },\n flexDirection: {\n values: ['row', 'column', 'row-reverse', 'column-reverse'],\n type: 'select',\n },\n flexWrap: {\n values: ['nowrap', 'wrap', 'wrap-reverse'],\n type: 'select',\n },\n flexFlow: { type: 'string' },\n justifyContent: {\n values: ['flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly'],\n type: 'select',\n },\n alignItems: {\n values: ['flex-start', 'flex-end', 'center', 'stretch', 'baseline'],\n type: 'select',\n },\n alignContent: {\n values: ['flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'stretch'],\n type: 'select',\n },\n alignSelf: {\n values: ['auto', 'flex-start', 'flex-end', 'center', 'stretch', 'baseline'],\n type: 'select',\n },\n flexGrow: { type: 'number' },\n flexShrink: { type: 'number' },\n flexBasis: { type: 'string' },\n order: { type: 'number' },\n\n // Grid\n grid: { type: 'string' },\n gridTemplateColumns: { type: 'string' },\n gridTemplateRows: { type: 'string' },\n gridTemplateAreas: { type: 'string' },\n gridGap: { type: 'string' },\n gridColumn: { type: 'string' },\n gridRow: { type: 'string' },\n gridArea: { type: 'string' },\n gridAutoFlow: {\n values: ['row', 'column', 'row dense', 'column dense'],\n type: 'select',\n },\n gridAutoColumns: { type: 'string' },\n gridAutoRows: { type: 'string' },\n justifyItems: {\n values: ['start', 'end', 'center', 'stretch'],\n type: 'select',\n },\n justifySelf: {\n values: ['auto', 'start', 'end', 'center', 'stretch'],\n type: 'select',\n },\n placeContent: { type: 'string' },\n placeItems: { type: 'string' },\n placeSelf: { type: 'string' },\n\n // Text & Font\n fontSize: { type: 'string' },\n fontWeight: {\n values: ['100', '200', '300', '400', '500', '600', '700', '800', '900', 'normal', 'bold'],\n type: 'select',\n },\n fontFamily: { type: 'string' },\n fontStyle: {\n values: ['normal', 'italic', 'oblique'],\n type: 'select',\n },\n lineHeight: { type: 'string' },\n textAlign: {\n values: ['left', 'right', 'center', 'justify', 'start', 'end'],\n type: 'select',\n },\n textDecoration: {\n values: ['none', 'underline', 'overline', 'line-through'],\n type: 'select',\n },\n textDecorationLine: {\n values: ['none', 'underline', 'overline', 'line-through'],\n type: 'select',\n },\n textDecorationStyle: {\n values: ['solid', 'double', 'dotted', 'dashed', 'wavy'],\n type: 'select',\n },\n textDecorationColor: { type: 'string' },\n textDecorationThickness: { type: 'string' },\n textUnderlineOffset: { type: 'string' },\n textUnderlinePosition: { type: 'string' },\n textTransform: {\n values: ['none', 'capitalize', 'uppercase', 'lowercase'],\n type: 'select',\n },\n textRendering: {\n values: ['auto', 'optimizeSpeed', 'optimizeLegibility', 'geometricPrecision'],\n type: 'select',\n },\n fontVariant: { type: 'string' },\n fontStretch: { type: 'string' },\n fontFeatureSettings: { type: 'string' },\n fontVariationSettings: { type: 'string' },\n fontKerning: {\n values: ['auto', 'normal', 'none'],\n type: 'select',\n },\n WebkitFontSmoothing: {\n values: ['auto', 'none', 'antialiased', 'subpixel-antialiased'],\n type: 'select',\n },\n MozOsxFontSmoothing: {\n values: ['auto', 'grayscale'],\n type: 'select',\n },\n hyphens: {\n values: ['none', 'manual', 'auto'],\n type: 'select',\n },\n WebkitHyphens: {\n values: ['none', 'manual', 'auto'],\n type: 'select',\n },\n writingMode: {\n values: ['horizontal-tb', 'vertical-rl', 'vertical-lr'],\n type: 'select',\n },\n direction: {\n values: ['ltr', 'rtl'],\n type: 'select',\n },\n tabSize: { type: 'string' },\n wordWrap: {\n values: ['normal', 'break-word'],\n type: 'select',\n },\n letterSpacing: { type: 'string' },\n wordSpacing: { type: 'string' },\n wordBreak: {\n values: ['normal', 'break-all', 'keep-all', 'break-word'],\n type: 'select',\n },\n overflowWrap: {\n values: ['normal', 'break-word', 'anywhere'],\n type: 'select',\n },\n textWrap: {\n values: ['wrap', 'nowrap', 'balance', 'pretty', 'stable'],\n type: 'select',\n },\n textIndent: { type: 'string' },\n verticalAlign: {\n values: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super'],\n type: 'select',\n },\n\n // Box Shadow & Effects\n boxShadow: { type: 'string' },\n textShadow: { type: 'string' },\n filter: { type: 'string' },\n backdropFilter: { type: 'string' },\n WebkitBackdropFilter: { type: 'string' },\n transform: { type: 'string' },\n transformOrigin: { type: 'string' },\n transformStyle: {\n values: ['flat', 'preserve-3d'],\n type: 'select',\n },\n perspective: { type: 'string' },\n perspectiveOrigin: { type: 'string' },\n transition: { type: 'string' },\n transitionProperty: { type: 'string' },\n transitionDuration: { type: 'string' },\n transitionTimingFunction: { type: 'string' },\n transitionDelay: { type: 'string' },\n animation: { type: 'string' },\n backfaceVisibility: {\n values: ['visible', 'hidden'],\n type: 'select',\n },\n mixBlendMode: {\n values: [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ],\n type: 'select',\n },\n isolation: {\n values: ['auto', 'isolate'],\n type: 'select',\n },\n willChange: { type: 'string' },\n imageRendering: {\n values: ['auto', 'crisp-edges', 'pixelated', 'smooth'],\n type: 'select',\n },\n clipPath: { type: 'string' },\n WebkitClipPath: { type: 'string' },\n // Mask family \u2014 gradient/SVG masks. Emit both the standard and `-webkit-`\n // form because Safari still needs the prefix.\n maskImage: { type: 'string' },\n WebkitMaskImage: { type: 'string' },\n maskSize: { type: 'string' },\n WebkitMaskSize: { type: 'string' },\n maskPosition: { type: 'string' },\n WebkitMaskPosition: { type: 'string' },\n maskRepeat: { type: 'string' },\n WebkitMaskRepeat: { type: 'string' },\n maskOrigin: { type: 'string' },\n WebkitMaskOrigin: { type: 'string' },\n maskClip: { type: 'string' },\n WebkitMaskClip: { type: 'string' },\n maskComposite: { type: 'string' },\n WebkitMaskComposite: { type: 'string' },\n maskMode: { type: 'string' },\n maskType: {\n values: ['luminance', 'alpha'],\n type: 'select',\n },\n\n // Overflow & Content\n overflow: {\n values: ['visible', 'hidden', 'scroll', 'auto'],\n type: 'select',\n },\n overflowX: {\n values: ['visible', 'hidden', 'scroll', 'auto'],\n type: 'select',\n },\n overflowY: {\n values: ['visible', 'hidden', 'scroll', 'auto'],\n type: 'select',\n },\n whiteSpace: {\n values: ['normal', 'nowrap', 'pre', 'pre-wrap', 'pre-line'],\n type: 'select',\n },\n textOverflow: {\n values: ['clip', 'ellipsis'],\n type: 'select',\n },\n visibility: {\n values: ['visible', 'hidden', 'collapse'],\n type: 'select',\n },\n content: { type: 'string' },\n\n // Cursor & Interaction\n cursor: {\n values: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'not-allowed', 'help'],\n type: 'select',\n },\n pointerEvents: {\n values: ['auto', 'none'],\n type: 'select',\n },\n userSelect: {\n values: ['auto', 'none', 'text', 'all'],\n type: 'select',\n },\n WebkitUserSelect: {\n values: ['auto', 'none', 'text', 'all'],\n type: 'select',\n },\n MozUserSelect: {\n values: ['auto', 'none', 'text', 'all'],\n type: 'select',\n },\n caretColor: { type: 'string' },\n appearance: {\n values: ['none', 'auto', 'menulist-button', 'textfield'],\n type: 'select',\n },\n WebkitAppearance: {\n values: ['none', 'auto', 'menulist-button', 'textfield'],\n type: 'select',\n },\n MozAppearance: {\n values: ['none', 'auto', 'menulist-button', 'textfield'],\n type: 'select',\n },\n\n // Outline\n outline: { type: 'string' },\n outlineWidth: { type: 'string' },\n outlineStyle: {\n values: ['none', 'solid', 'dashed', 'dotted', 'double', 'groove', 'ridge', 'inset', 'outset'],\n type: 'select',\n },\n outlineColor: { type: 'string' },\n outlineOffset: { type: 'string' },\n\n // Lists\n listStyle: { type: 'string' },\n listStyleType: {\n values: [\n 'none',\n 'disc',\n 'circle',\n 'square',\n 'decimal',\n 'decimal-leading-zero',\n 'lower-roman',\n 'upper-roman',\n 'lower-alpha',\n 'upper-alpha',\n ],\n type: 'select',\n },\n listStylePosition: {\n values: ['inside', 'outside'],\n type: 'select',\n },\n\n // Miscellaneous\n float: {\n values: ['left', 'right', 'none'],\n type: 'select',\n },\n clear: {\n values: ['left', 'right', 'both', 'none'],\n type: 'select',\n },\n boxSizing: {\n values: ['content-box', 'border-box'],\n type: 'select',\n },\n objectFit: {\n values: ['fill', 'contain', 'cover', 'scale-down'],\n type: 'select',\n },\n objectPosition: {\n values: ['top', 'bottom', 'left', 'right', 'center'],\n type: 'select',\n },\n resize: {\n values: ['none', 'both', 'horizontal', 'vertical'],\n type: 'select',\n },\n scrollBehavior: {\n values: ['auto', 'smooth'],\n type: 'select',\n },\n scrollSnapType: { type: 'string' },\n scrollSnapAlign: {\n values: ['none', 'start', 'end', 'center'],\n type: 'select',\n },\n scrollSnapStop: {\n values: ['normal', 'always'],\n type: 'select',\n },\n scrollMarginTop: { type: 'string' },\n scrollMarginRight: { type: 'string' },\n scrollMarginBottom: { type: 'string' },\n scrollMarginLeft: { type: 'string' },\n scrollPaddingTop: { type: 'string' },\n scrollPaddingRight: { type: 'string' },\n scrollPaddingBottom: { type: 'string' },\n scrollPaddingLeft: { type: 'string' },\n overscrollBehavior: {\n values: ['auto', 'contain', 'none'],\n type: 'select',\n },\n overscrollBehaviorX: {\n values: ['auto', 'contain', 'none'],\n type: 'select',\n },\n overscrollBehaviorY: {\n values: ['auto', 'contain', 'none'],\n type: 'select',\n },\n // CSS Containment \u2014 container queries depend on these.\n containerType: {\n values: ['normal', 'size', 'inline-size'],\n type: 'select',\n },\n containerName: { type: 'string' },\n accentColor: { type: 'string' },\n\n // SVG\n stroke: { type: 'string' },\n strokeWidth: { type: 'string' },\n strokeDasharray: { type: 'string' },\n strokeDashoffset: { type: 'string' },\n strokeLinecap: {\n values: ['butt', 'round', 'square'],\n type: 'select',\n },\n strokeLinejoin: {\n values: ['miter', 'round', 'bevel'],\n type: 'select',\n },\n strokeOpacity: { type: 'number' },\n fill: { type: 'string' },\n fillOpacity: { type: 'number' },\n fillRule: {\n values: ['nonzero', 'evenodd'],\n type: 'select',\n },\n};\n\n/**\n * Common CSS properties for autocomplete suggestions (camelCase for React/JS)\n * Derived from CSS_PROPERTIES_DEFINITION keys\n */\nexport const CSS_PROPERTIES = Object.keys(CSS_PROPERTIES_DEFINITION);\n\n/**\n * Popularity tiers for CSS properties (lower = more common).\n * Properties not listed default to tier 3.\n * Used to sort autocomplete suggestions within each match group.\n */\nconst CSS_PROPERTY_PRIORITY: Record<string, number> = {\n // Tier 1: Most commonly used\n display: 1,\n position: 1,\n width: 1,\n height: 1,\n margin: 1,\n padding: 1,\n color: 1,\n backgroundColor: 1,\n fontSize: 1,\n fontWeight: 1,\n border: 1,\n borderRadius: 1,\n flex: 1,\n flexDirection: 1,\n justifyContent: 1,\n alignItems: 1,\n gap: 1,\n opacity: 1,\n overflow: 1,\n zIndex: 1,\n top: 1,\n right: 1,\n bottom: 1,\n left: 1,\n cursor: 1,\n background: 1,\n boxShadow: 1,\n transition: 1,\n transform: 1,\n lineHeight: 1,\n textAlign: 1,\n\n // Tier 2: Common but less frequent\n maxWidth: 2,\n maxHeight: 2,\n minWidth: 3,\n minHeight: 3,\n marginTop: 2,\n marginBottom: 2,\n marginLeft: 2,\n marginRight: 2,\n paddingTop: 2,\n paddingBottom: 2,\n paddingLeft: 2,\n paddingRight: 2,\n fontFamily: 2,\n fontStyle: 2,\n textDecoration: 2,\n textTransform: 2,\n letterSpacing: 2,\n borderWidth: 2,\n borderStyle: 2,\n borderColor: 2,\n borderBottom: 2,\n borderTop: 2,\n flexWrap: 2,\n flexGrow: 2,\n flexShrink: 2,\n flexBasis: 2,\n alignSelf: 2,\n gridTemplateColumns: 2,\n gridTemplateRows: 2,\n backgroundImage: 2,\n backgroundSize: 2,\n backgroundPosition: 2,\n whiteSpace: 2,\n textOverflow: 2,\n visibility: 2,\n pointerEvents: 2,\n userSelect: 2,\n boxSizing: 2,\n objectFit: 2,\n filter: 2,\n animation: 2,\n outline: 2,\n inset: 2,\n};\n\nfunction getPropertyPriority(property: string): number {\n return CSS_PROPERTY_PRIORITY[property] ?? 3;\n}\n\n/**\n * CSS Property Groups for organizing styles in the editor\n * Order determines display order in the UI\n */\nexport const CSS_PROPERTY_GROUPS: Record<string, string[]> = {\n Layout: ['display'],\n Spacing: [\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'padding',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n ],\n Size: ['width', 'height', 'minWidth', 'maxWidth', 'minHeight', 'maxHeight', 'aspectRatio'],\n Position: ['position', 'top', 'right', 'bottom', 'left', 'inset', 'zIndex'],\n Flexbox: [\n 'flex',\n 'flexDirection',\n 'flexWrap',\n 'flexFlow',\n 'justifyContent',\n 'alignItems',\n 'alignContent',\n 'gap',\n 'rowGap',\n 'columnGap',\n 'alignSelf',\n 'flexGrow',\n 'flexShrink',\n 'flexBasis',\n 'order',\n ],\n Grid: [\n 'grid',\n 'gridTemplateColumns',\n 'gridTemplateRows',\n 'gridTemplateAreas',\n 'gridGap',\n 'gridColumn',\n 'gridRow',\n 'gridArea',\n 'gridAutoFlow',\n 'gridAutoColumns',\n 'gridAutoRows',\n 'justifyItems',\n 'justifySelf',\n 'placeContent',\n 'placeItems',\n 'placeSelf',\n ],\n Typography: [\n 'fontWeight',\n 'fontSize',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'color',\n 'textAlign',\n 'textDecoration',\n 'textTransform',\n 'letterSpacing',\n 'wordSpacing',\n 'wordBreak',\n 'overflowWrap',\n 'textIndent',\n 'verticalAlign',\n ],\n Background: [\n 'background',\n 'backgroundColor',\n 'backgroundImage',\n 'backgroundSize',\n 'backgroundPosition',\n 'backgroundRepeat',\n 'opacity',\n ],\n Borders: [\n 'borderRadius',\n 'borderTopLeftRadius',\n 'borderTopRightRadius',\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n 'border',\n 'borderWidth',\n 'borderStyle',\n 'borderColor',\n 'borderTop',\n 'borderRight',\n 'borderBottom',\n 'borderLeft',\n ],\n Outline: ['outline', 'outlineWidth', 'outlineStyle', 'outlineColor', 'outlineOffset'],\n Effects: [\n 'boxShadow',\n 'textShadow',\n 'filter',\n 'backdropFilter',\n 'transform',\n 'transformOrigin',\n 'transition',\n 'animation',\n 'backfaceVisibility',\n 'mixBlendMode',\n 'clipPath',\n ],\n Overflow: ['overflow', 'overflowX', 'overflowY', 'whiteSpace', 'textOverflow', 'visibility', 'content'],\n Interaction: ['cursor', 'pointerEvents', 'userSelect'],\n Lists: ['listStyle', 'listStyleType', 'listStylePosition'],\n Other: ['float', 'clear', 'boxSizing', 'objectFit', 'objectPosition', 'resize', 'scrollBehavior', 'accentColor'],\n SVG: [\n 'stroke',\n 'strokeWidth',\n 'strokeDasharray',\n 'strokeDashoffset',\n 'strokeLinecap',\n 'strokeLinejoin',\n 'strokeOpacity',\n 'fill',\n 'fillOpacity',\n 'fillRule',\n ],\n};\n\n/**\n * Get the group name for a CSS property\n * @param propertyName - The CSS property name\n * @returns The group name or 'Other' if not found\n */\nexport function getPropertyGroup(propertyName: string): string {\n for (const [groupName, properties] of Object.entries(CSS_PROPERTY_GROUPS)) {\n if (properties.includes(propertyName)) {\n return groupName;\n }\n }\n return 'Other';\n}\n\n/**\n * Subset of CSS properties shown as \"always-visible\" rows in the visual style\n * editor mode (Webflow-like). Each property here renders even when unset, so\n * the user can see at a glance which properties are available and click an\n * empty row to start typing a value.\n *\n * Keys must be group names from CSS_PROPERTY_GROUPS so the visual editor can\n * reuse the same group headers as list mode.\n */\nexport const VISUAL_MODE_PROPERTIES: Record<string, string[]> = {\n Layout: ['display'],\n Grid: ['gridTemplateColumns'],\n Flexbox: ['flexDirection', 'flexWrap', 'justifyContent', 'alignItems', 'gap', 'flexGrow', 'flexShrink', 'flexBasis'],\n Spacing: [\n 'margin',\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'padding',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n ],\n Size: ['width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight'],\n Position: ['position', 'top', 'right', 'bottom', 'left', 'zIndex'],\n Typography: [\n 'fontFamily',\n 'fontWeight',\n 'fontSize',\n 'lineHeight',\n 'color',\n 'letterSpacing',\n 'textAlign',\n 'textTransform',\n 'textDecoration',\n ],\n Background: [\n 'backgroundColor',\n 'backgroundImage',\n 'backgroundSize',\n 'backgroundPosition',\n 'backgroundRepeat',\n 'opacity',\n ],\n Borders: ['borderRadius', 'borderWidth', 'borderStyle', 'borderColor'],\n Effects: ['boxShadow', 'transform', 'transition', 'filter'],\n Overflow: ['overflow', 'whiteSpace'],\n Interaction: ['cursor', 'pointerEvents'],\n};\n\nconst VISUAL_MODE_PROPERTIES_SET = new Set(Object.values(VISUAL_MODE_PROPERTIES).flat());\n\n/**\n * True if `prop` belongs to the always-visible visual-mode list.\n */\nexport function isVisualModeProperty(prop: string): boolean {\n return VISUAL_MODE_PROPERTIES_SET.has(prop);\n}\n\n/**\n * Context used by visual-mode visibility rules. Captures everything a rule\n * needs to decide whether a property row is meaningful for the currently\n * selected element. Built once per render in `StyleEditor`.\n */\nexport interface VisualModeRuleContext {\n /** Effective `display` of the selected element \u2014 getComputedStyle().display\n * with declared (instance/inherited/effective) merge as fallback when the\n * iframe hasn't loaded yet. Defaults to 'block'. */\n display: string;\n /** Effective `display` of the DOM parent \u2014 used for flex/grid item props\n * whose applicability depends on the parent's layout mode. '' when no\n * parent is reachable (root element, iframe missing). */\n parentDisplay: string;\n /** Effective `position` of the selected element. Defaults to 'static'. */\n position: string;\n /** Lowercase HTML tag name of the selected element ('div', 'img', 'ul'\u2026). */\n tagName: string;\n /** True if any of paddingTop / paddingRight / paddingBottom / paddingLeft\n * is set anywhere in the cascade (instance + inherited + effective).\n * When true, the panel shows the four longhand rows and hides `padding`. */\n hasPaddingLonghand: boolean;\n /** Same as `hasPaddingLonghand` for the four `margin*` longhands. */\n hasMarginLonghand: boolean;\n /** True if `backgroundImage` (or the `background` shorthand) is set anywhere\n * in the cascade. Drives visibility of background-image-only properties\n * like `backgroundPosition` / `backgroundSize` / `backgroundRepeat`. */\n hasBackgroundImage: boolean;\n}\n\nexport type VisualModeRule = (ctx: VisualModeRuleContext) => boolean;\n\nconst isFlexDisplay = (d: string) => d === 'flex' || d === 'inline-flex';\nconst isGridDisplay = (d: string) => d === 'grid' || d === 'inline-grid';\nconst isListTag = (t: string) => t === 'ul' || t === 'ol' || t === 'li';\nconst isMediaTag = (t: string) => t === 'img' || t === 'video';\n\n/**\n * Visibility rules for the visual-mode style panel. Each entry is a predicate\n * that returns true when the row should be rendered for the current element\n * context. Properties without an entry are always visible. Properties that\n * are *explicitly set* on the element bypass these rules (the explicit-value\n * override is enforced by the caller, not here).\n */\nexport const VISUAL_MODE_RULES: Record<string, VisualModeRule> = {\n // Flex/Grid CONTAINER props \u2014 own display must be flex/grid.\n flexDirection: (ctx) => isFlexDisplay(ctx.display),\n flexWrap: (ctx) => isFlexDisplay(ctx.display),\n justifyContent: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),\n alignItems: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),\n alignContent: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),\n gap: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),\n rowGap: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),\n columnGap: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),\n gridTemplateColumns: (ctx) => isGridDisplay(ctx.display),\n gridTemplateRows: (ctx) => isGridDisplay(ctx.display),\n gridTemplateAreas: (ctx) => isGridDisplay(ctx.display),\n gridGap: (ctx) => isGridDisplay(ctx.display),\n gridAutoFlow: (ctx) => isGridDisplay(ctx.display),\n gridAutoColumns: (ctx) => isGridDisplay(ctx.display),\n gridAutoRows: (ctx) => isGridDisplay(ctx.display),\n justifyItems: (ctx) => isGridDisplay(ctx.display),\n placeItems: (ctx) => isGridDisplay(ctx.display),\n placeContent: (ctx) => isGridDisplay(ctx.display),\n\n // Flex/Grid ITEM props \u2014 PARENT display must be flex/grid.\n flex: (ctx) => isFlexDisplay(ctx.parentDisplay),\n flexFlow: (ctx) => isFlexDisplay(ctx.parentDisplay),\n flexGrow: (ctx) => isFlexDisplay(ctx.parentDisplay),\n flexShrink: (ctx) => isFlexDisplay(ctx.parentDisplay),\n flexBasis: (ctx) => isFlexDisplay(ctx.parentDisplay),\n alignSelf: (ctx) => isFlexDisplay(ctx.parentDisplay) || isGridDisplay(ctx.parentDisplay),\n justifySelf: (ctx) => isGridDisplay(ctx.parentDisplay),\n placeSelf: (ctx) => isGridDisplay(ctx.parentDisplay),\n order: (ctx) => isFlexDisplay(ctx.parentDisplay) || isGridDisplay(ctx.parentDisplay),\n gridArea: (ctx) => isGridDisplay(ctx.parentDisplay),\n gridColumn: (ctx) => isGridDisplay(ctx.parentDisplay),\n gridRow: (ctx) => isGridDisplay(ctx.parentDisplay),\n\n // Position-dependent inset properties.\n top: (ctx) => ctx.position !== 'static',\n right: (ctx) => ctx.position !== 'static',\n bottom: (ctx) => ctx.position !== 'static',\n left: (ctx) => ctx.position !== 'static',\n inset: (ctx) => ctx.position !== 'static',\n zIndex: (ctx) => ctx.position !== 'static',\n\n // Tag-based.\n objectFit: (ctx) => isMediaTag(ctx.tagName),\n objectPosition: (ctx) => isMediaTag(ctx.tagName),\n listStyle: (ctx) => isListTag(ctx.tagName),\n listStyleType: (ctx) => isListTag(ctx.tagName),\n listStylePosition: (ctx) => isListTag(ctx.tagName),\n\n // Padding/margin shorthand-vs-longhand auto-toggle.\n // When ANY longhand is set, hide shorthand; otherwise hide longhands.\n padding: (ctx) => !ctx.hasPaddingLonghand,\n paddingTop: (ctx) => ctx.hasPaddingLonghand,\n paddingRight: (ctx) => ctx.hasPaddingLonghand,\n paddingBottom: (ctx) => ctx.hasPaddingLonghand,\n paddingLeft: (ctx) => ctx.hasPaddingLonghand,\n margin: (ctx) => !ctx.hasMarginLonghand,\n marginTop: (ctx) => ctx.hasMarginLonghand,\n marginRight: (ctx) => ctx.hasMarginLonghand,\n marginBottom: (ctx) => ctx.hasMarginLonghand,\n marginLeft: (ctx) => ctx.hasMarginLonghand,\n\n // Background-image-only props \u2014 meaningless without a background image.\n backgroundPosition: (ctx) => ctx.hasBackgroundImage,\n backgroundSize: (ctx) => ctx.hasBackgroundImage,\n backgroundRepeat: (ctx) => ctx.hasBackgroundImage,\n};\n\n/**\n * True if `prop` should be visible in the visual-mode panel given `ctx`.\n * Properties without an entry in `VISUAL_MODE_RULES` default to visible.\n * Callers are responsible for the explicit-value override (a property that\n * the user has set must remain visible regardless of the rule outcome).\n */\nexport function isVisualModeRowVisible(prop: string, ctx: VisualModeRuleContext): boolean {\n const rule = VISUAL_MODE_RULES[prop];\n return rule ? rule(ctx) : true;\n}\n\n/**\n * Check if property matches the abbreviation pattern\n * For example, \"bC\" matches \"backgroundColor\" (b\u2192b, C\u2192C capital letter)\n */\nfunction matchesAbbreviation(property: string, input: string): boolean {\n if (!input) return false;\n\n let propertyIndex = 0;\n\n for (let inputIndex = 0; inputIndex < input.length; inputIndex++) {\n const inputChar = input[inputIndex] ?? '';\n let found = false;\n\n // Search from current position to end of property for a match at a word boundary\n while (propertyIndex < property.length) {\n const propChar = property[propertyIndex] ?? '';\n // Word boundary = first character OR capital letter\n const isWordBoundary =\n propertyIndex === 0 || (propChar === propChar.toUpperCase() && propChar !== propChar.toLowerCase());\n\n if (isWordBoundary && inputChar.toLowerCase() === propChar.toLowerCase()) {\n // Match found at word boundary\n found = true;\n propertyIndex++; // Move past this character for next search\n break;\n }\n\n propertyIndex++;\n }\n\n if (!found) {\n return false; // Couldn't find this input character at a word boundary\n }\n }\n\n return true;\n}\n\n/**\n * Direction-abbreviation shortcuts. When the user types one of these exact\n * inputs, the mapped property is forced to the top of the suggestions list\n * (ahead of startsWith matches like `placeContent` for \"pl\"). \"u\" stands for\n * \"up\" \u2014 a natural mnemonic for `Top`.\n */\nconst PROPERTY_SHORTCUTS: Record<string, string> = {\n pl: 'paddingLeft',\n pr: 'paddingRight',\n pt: 'paddingTop',\n pu: 'paddingTop',\n pb: 'paddingBottom',\n ml: 'marginLeft',\n mr: 'marginRight',\n mt: 'marginTop',\n mu: 'marginTop',\n mb: 'marginBottom',\n};\n\n/**\n * Filter CSS properties based on input value\n * Supports both startsWith matching and camelCase abbreviation matching\n */\nexport function filterCSSProperties(input: string): string[] {\n const normalizedInput = (input ?? '').trim();\n if (!normalizedInput) {\n return CSS_PROPERTIES.slice(0, 15); // Show first 15 by default\n }\n\n // First, try startsWith matching (exact prefix match)\n const startsWithMatches = CSS_PROPERTIES.filter((prop) =>\n prop.toLowerCase().startsWith(normalizedInput.toLowerCase()),\n );\n\n // Then, try abbreviation/fuzzy matching\n const abbreviationMatches = CSS_PROPERTIES.filter(\n (prop) => matchesAbbreviation(prop, normalizedInput) && !startsWithMatches.includes(prop), // Don't duplicate startsWith matches\n );\n\n // Sort each group by popularity, then combine: exact matches first, then fuzzy matches\n const byPriority = (a: string, b: string) => getPropertyPriority(a) - getPropertyPriority(b);\n\n const combined = [...startsWithMatches.sort(byPriority), ...abbreviationMatches.sort(byPriority)];\n\n const shortcut = PROPERTY_SHORTCUTS[normalizedInput.toLowerCase()];\n if (shortcut) {\n return [shortcut, ...combined.filter((prop) => prop !== shortcut)];\n }\n\n return combined;\n}\n\n/**\n * Get available values for a specific CSS property\n * @param propertyName - The CSS property name (e.g., 'flexDirection')\n * @returns Array of valid values for the property, or empty array if property has no predefined values\n */\nexport function getPropertyValues(propertyName: string): string[] {\n const values = CSS_PROPERTIES_DEFINITION[propertyName]?.values;\n return values ? Array.from(values) : [];\n}\n\n/**\n * Filter values for a specific CSS property based on input\n * Supports substring matching and returns values that contain the input\n * @param propertyName - The CSS property name (e.g., 'flexDirection')\n * @param input - The user input to filter values by\n * @returns Filtered array of valid values for the property\n */\nexport function filterPropertyValues(propertyName: string, input: string): string[] {\n const values = getPropertyValues(propertyName);\n if (!values.length) {\n return []; // No predefined values for this property\n }\n\n const normalizedInput = (input ?? '').trim().toLowerCase();\n if (!normalizedInput) {\n return values; // Return all values if no input\n }\n\n // Filter values that contain the input (substring match)\n return values.filter((value) => value.toLowerCase().includes(normalizedInput));\n}\n\n/**\n * Get the property type for a CSS property\n * @param propertyName - The CSS property name\n * @returns The property type ('string' | 'select' | 'boolean' | 'number') or undefined\n */\nexport function getPropertyType(propertyName: string): 'string' | 'select' | 'boolean' | 'number' | undefined {\n return CSS_PROPERTIES_DEFINITION[propertyName]?.type;\n}\n\n/**\n * CSS properties whose numeric values are unitless by spec \u2014 `font-weight: 400`,\n * `line-height: 1.5`, `opacity: 0.8`, `z-index: 10`, etc. The auto-px commit\n * normalizer must NOT append `px` to bare numbers for these.\n */\nexport const UNITLESS_PROPERTIES: ReadonlySet<string> = new Set([\n 'fontWeight',\n 'lineHeight',\n 'opacity',\n 'fillOpacity',\n 'strokeOpacity',\n 'stopOpacity',\n 'zIndex',\n 'order',\n 'flexGrow',\n 'flexShrink',\n 'flex',\n 'columnCount',\n 'columns',\n 'tabSize',\n 'orphans',\n 'widows',\n 'gridRow',\n 'gridColumn',\n 'gridRowStart',\n 'gridRowEnd',\n 'gridColumnStart',\n 'gridColumnEnd',\n 'animationIterationCount',\n 'aspectRatio',\n 'scale',\n]);\n\n/**\n * Whether bare numeric values for `propertyName` should be treated as pixels at\n * commit time (e.g. typing `52` for `width` becomes `52px`). Unitless props,\n * `select`/`boolean` keyword props, and existing `number`-typed entries return false.\n */\nexport function appendsPxByDefault(propertyName: string): boolean {\n if (UNITLESS_PROPERTIES.has(propertyName)) return false;\n const def = CSS_PROPERTIES_DEFINITION[propertyName];\n if (def?.type === 'select' || def?.type === 'boolean' || def?.type === 'number') return false;\n return true;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
serveFile,
|
|
12
12
|
spawnProcess,
|
|
13
13
|
writeFile
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-7CCVOL5M.js";
|
|
15
15
|
import "./chunk-KSBZ2L7C.js";
|
|
16
16
|
export {
|
|
17
17
|
ensureDir,
|
|
@@ -27,4 +27,4 @@ export {
|
|
|
27
27
|
spawnProcess,
|
|
28
28
|
writeFile
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=fs-
|
|
30
|
+
//# sourceMappingURL=fs-G3ANWEFP.js.map
|