meno-core 1.0.47 → 1.0.49
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 +2 -2
- package/dist/build-static.js +7 -7
- package/dist/chunks/{chunk-UUA5LEWF.js → chunk-6IVUG7FY.js} +138 -7
- package/dist/chunks/chunk-6IVUG7FY.js.map +7 -0
- package/dist/chunks/{chunk-XSWR3QLI.js → chunk-AZQYF6KE.js} +261 -130
- package/dist/chunks/chunk-AZQYF6KE.js.map +7 -0
- package/dist/chunks/{chunk-47UNLQUU.js → chunk-CHD5UCFF.js} +57 -12
- package/dist/chunks/chunk-CHD5UCFF.js.map +7 -0
- package/dist/chunks/{chunk-FGUZOYJX.js → chunk-EQYDSPBB.js} +435 -131
- package/dist/chunks/chunk-EQYDSPBB.js.map +7 -0
- package/dist/chunks/{chunk-IF3RATBY.js → chunk-H4JSCDNW.js} +2 -2
- package/dist/chunks/{chunk-KITQJYZV.js → chunk-J23ZX5AP.js} +40 -4
- package/dist/chunks/chunk-J23ZX5AP.js.map +7 -0
- package/dist/chunks/{chunk-LJFB5EBT.js → chunk-JER5NQVM.js} +5 -5
- package/dist/chunks/{chunk-ZTKHJQ2Z.js → chunk-KPU2XHOS.js} +5 -2
- package/dist/chunks/{chunk-ZTKHJQ2Z.js.map → chunk-KPU2XHOS.js.map} +2 -2
- package/dist/chunks/{chunk-BCLGRZ3U.js → chunk-LKAGAQ3M.js} +2 -2
- package/dist/chunks/{chunk-FED5MME6.js → chunk-S2CX6HFM.js} +262 -26
- package/dist/chunks/chunk-S2CX6HFM.js.map +7 -0
- package/dist/chunks/{configService-DYCUEURL.js → configService-CCA6AIDI.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 +64 -20
- package/dist/lib/client/index.js.map +3 -3
- package/dist/lib/server/index.js +1737 -296
- package/dist/lib/server/index.js.map +4 -4
- package/dist/lib/shared/index.js +50 -10
- package/dist/lib/shared/index.js.map +3 -3
- package/entries/server-router.tsx +6 -2
- package/lib/client/core/ComponentBuilder.test.ts +17 -0
- package/lib/client/core/ComponentBuilder.ts +25 -1
- package/lib/client/core/builders/embedBuilder.ts +15 -2
- package/lib/client/core/builders/linkNodeBuilder.ts +15 -2
- package/lib/client/core/builders/localeListBuilder.ts +17 -6
- package/lib/client/styles/StyleInjector.ts +3 -2
- 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/index.ts +1 -1
- package/lib/server/jsonLoader.test.ts +0 -17
- package/lib/server/jsonLoader.ts +0 -81
- package/lib/server/providers/fileSystemCMSProvider.test.ts +163 -0
- package/lib/server/providers/fileSystemCMSProvider.ts +200 -11
- package/lib/server/routes/api/variables.ts +4 -2
- 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 +5 -0
- package/lib/server/ssr/attributeBuilder.ts +41 -0
- package/lib/server/ssr/htmlGenerator.test.ts +114 -2
- package/lib/server/ssr/htmlGenerator.ts +53 -6
- package/lib/server/ssr/liveReloadIntegration.test.ts +209 -0
- package/lib/server/ssr/ssrRenderer.test.ts +362 -1
- package/lib/server/ssr/ssrRenderer.ts +216 -72
- package/lib/server/utils/jsonLineMapper.test.ts +53 -1
- package/lib/server/utils/jsonLineMapper.ts +43 -3
- package/lib/server/webflow/buildWebflow.ts +343 -123
- package/lib/server/webflow/index.ts +1 -0
- package/lib/server/webflow/nodeToWebflow.test.ts +3170 -0
- package/lib/server/webflow/nodeToWebflow.ts +2141 -129
- package/lib/server/webflow/styleMapper.test.ts +389 -0
- package/lib/server/webflow/styleMapper.ts +517 -63
- package/lib/server/webflow/templateWrapper.ts +49 -0
- package/lib/server/webflow/types.ts +218 -18
- package/lib/shared/cssGeneration.test.ts +267 -1
- package/lib/shared/cssGeneration.ts +240 -18
- package/lib/shared/cssProperties.test.ts +247 -1
- package/lib/shared/cssProperties.ts +196 -6
- package/lib/shared/elementClassName.test.ts +15 -0
- package/lib/shared/elementClassName.ts +7 -3
- package/lib/shared/interfaces/contentProvider.ts +39 -6
- package/lib/shared/pathSecurity.ts +16 -0
- package/lib/shared/registry/nodeTypes/ListNodeType.ts +1 -1
- 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/cms.ts +28 -3
- package/lib/shared/types/index.ts +2 -0
- package/lib/shared/types/variables.ts +37 -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.ts +15 -1
- package/lib/shared/validation/validators.ts +26 -1
- package/package.json +1 -1
- package/dist/chunks/chunk-47UNLQUU.js.map +0 -7
- package/dist/chunks/chunk-FED5MME6.js.map +0 -7
- package/dist/chunks/chunk-FGUZOYJX.js.map +0 -7
- package/dist/chunks/chunk-KITQJYZV.js.map +0 -7
- package/dist/chunks/chunk-UUA5LEWF.js.map +0 -7
- package/dist/chunks/chunk-XSWR3QLI.js.map +0 -7
- /package/dist/chunks/{chunk-IF3RATBY.js.map → chunk-H4JSCDNW.js.map} +0 -0
- /package/dist/chunks/{chunk-LJFB5EBT.js.map → chunk-JER5NQVM.js.map} +0 -0
- /package/dist/chunks/{chunk-BCLGRZ3U.js.map → chunk-LKAGAQ3M.js.map} +0 -0
- /package/dist/chunks/{configService-DYCUEURL.js.map → configService-CCA6AIDI.js.map} +0 -0
package/build-astro.ts
CHANGED
|
@@ -32,7 +32,7 @@ import { generateThemeColorVariablesCSS, generateVariablesCSS } from "./lib/serv
|
|
|
32
32
|
import { colorService } from "./lib/server/services/ColorService";
|
|
33
33
|
import { variableService } from "./lib/server/services/VariableService";
|
|
34
34
|
import { configService } from "./lib/server/services/configService";
|
|
35
|
-
import { loadBreakpointConfig,
|
|
35
|
+
import { loadBreakpointConfig, loadIconsConfig } from "./lib/server/jsonLoader";
|
|
36
36
|
import type { InteractiveStyles } from "./lib/shared/types/styles";
|
|
37
37
|
import { collectComponentLibraries, filterLibrariesByContext, mergeLibraries, generateLibraryTags } from "./lib/shared/libraryLoader";
|
|
38
38
|
import { migrateTemplatesDirectory } from "./lib/server/migrateTemplates";
|
|
@@ -322,10 +322,10 @@ export async function buildAstroProject(
|
|
|
322
322
|
const themeConfig = await colorService.loadThemeConfig();
|
|
323
323
|
const variablesConfig = await variableService.loadConfig();
|
|
324
324
|
const breakpoints = await loadBreakpointConfig();
|
|
325
|
-
const responsiveScales = await loadResponsiveScalesConfig();
|
|
326
325
|
|
|
327
326
|
// Libraries (global + component)
|
|
328
327
|
await configService.load();
|
|
328
|
+
const responsiveScales = configService.getResponsiveScales();
|
|
329
329
|
const globalLibraries = configService.getLibraries();
|
|
330
330
|
const componentLibraries = collectComponentLibraries(globalComponents);
|
|
331
331
|
|
package/dist/build-static.js
CHANGED
|
@@ -9,15 +9,15 @@ import {
|
|
|
9
9
|
hashContent,
|
|
10
10
|
injectTrackingScript,
|
|
11
11
|
isCMSPage
|
|
12
|
-
} from "./chunks/chunk-
|
|
13
|
-
import "./chunks/chunk-
|
|
14
|
-
import "./chunks/chunk-
|
|
12
|
+
} from "./chunks/chunk-JER5NQVM.js";
|
|
13
|
+
import "./chunks/chunk-EQYDSPBB.js";
|
|
14
|
+
import "./chunks/chunk-KPU2XHOS.js";
|
|
15
15
|
import "./chunks/chunk-I7YIGZXT.js";
|
|
16
16
|
import "./chunks/chunk-WQFG7PAH.js";
|
|
17
|
-
import "./chunks/chunk-
|
|
18
|
-
import "./chunks/chunk-
|
|
19
|
-
import "./chunks/chunk-
|
|
20
|
-
import "./chunks/chunk-
|
|
17
|
+
import "./chunks/chunk-J23ZX5AP.js";
|
|
18
|
+
import "./chunks/chunk-LKAGAQ3M.js";
|
|
19
|
+
import "./chunks/chunk-S2CX6HFM.js";
|
|
20
|
+
import "./chunks/chunk-AZQYF6KE.js";
|
|
21
21
|
import "./chunks/chunk-UB44F4Z2.js";
|
|
22
22
|
import "./chunks/chunk-2QK6U5UK.js";
|
|
23
23
|
import "./chunks/chunk-KSBZ2L7C.js";
|
|
@@ -378,14 +378,15 @@ function getPropertyPriority(property) {
|
|
|
378
378
|
return CSS_PROPERTY_PRIORITY[property] ?? 3;
|
|
379
379
|
}
|
|
380
380
|
var CSS_PROPERTY_GROUPS = {
|
|
381
|
-
"Layout": ["display"
|
|
382
|
-
"
|
|
383
|
-
"
|
|
384
|
-
"
|
|
381
|
+
"Layout": ["display"],
|
|
382
|
+
"Spacing": ["margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft"],
|
|
383
|
+
"Size": ["width", "height", "minWidth", "maxWidth", "minHeight", "maxHeight", "aspectRatio"],
|
|
384
|
+
"Position": ["position", "top", "right", "bottom", "left", "inset", "zIndex"],
|
|
385
|
+
"Flexbox": ["flex", "flexDirection", "flexWrap", "flexFlow", "justifyContent", "alignItems", "alignContent", "gap", "rowGap", "columnGap", "alignSelf", "flexGrow", "flexShrink", "flexBasis", "order"],
|
|
385
386
|
"Grid": ["grid", "gridTemplateColumns", "gridTemplateRows", "gridTemplateAreas", "gridGap", "gridColumn", "gridRow", "gridArea", "gridAutoFlow", "gridAutoColumns", "gridAutoRows", "justifyItems", "justifySelf", "placeContent", "placeItems", "placeSelf"],
|
|
386
|
-
"Typography": ["
|
|
387
|
+
"Typography": ["fontWeight", "fontSize", "fontFamily", "fontStyle", "lineHeight", "color", "textAlign", "textDecoration", "textTransform", "letterSpacing", "wordSpacing", "wordBreak", "overflowWrap", "textIndent", "verticalAlign"],
|
|
387
388
|
"Background": ["background", "backgroundColor", "backgroundImage", "backgroundSize", "backgroundPosition", "backgroundRepeat", "opacity"],
|
|
388
|
-
"Borders": ["
|
|
389
|
+
"Borders": ["borderRadius", "borderTopLeftRadius", "borderTopRightRadius", "borderBottomLeftRadius", "borderBottomRightRadius", "border", "borderWidth", "borderStyle", "borderColor", "borderTop", "borderRight", "borderBottom", "borderLeft"],
|
|
389
390
|
"Outline": ["outline", "outlineWidth", "outlineStyle", "outlineColor", "outlineOffset"],
|
|
390
391
|
"Effects": ["boxShadow", "textShadow", "filter", "backdropFilter", "transform", "transformOrigin", "transition", "animation", "backfaceVisibility", "mixBlendMode", "clipPath"],
|
|
391
392
|
"Overflow": ["overflow", "overflowX", "overflowY", "whiteSpace", "textOverflow", "visibility", "content"],
|
|
@@ -402,6 +403,97 @@ function getPropertyGroup(propertyName) {
|
|
|
402
403
|
}
|
|
403
404
|
return "Other";
|
|
404
405
|
}
|
|
406
|
+
var VISUAL_MODE_PROPERTIES = {
|
|
407
|
+
"Layout": ["display"],
|
|
408
|
+
"Grid": ["gridTemplateColumns"],
|
|
409
|
+
"Flexbox": ["flexDirection", "flexWrap", "justifyContent", "alignItems", "gap", "flexGrow", "flexShrink", "flexBasis"],
|
|
410
|
+
"Spacing": ["margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft"],
|
|
411
|
+
"Size": ["width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight"],
|
|
412
|
+
"Position": ["position", "top", "right", "bottom", "left", "zIndex"],
|
|
413
|
+
"Typography": ["fontFamily", "fontWeight", "fontSize", "lineHeight", "color", "letterSpacing", "textAlign", "textTransform", "textDecoration"],
|
|
414
|
+
"Background": ["backgroundColor", "backgroundImage", "backgroundSize", "backgroundPosition", "backgroundRepeat", "opacity"],
|
|
415
|
+
"Borders": ["borderRadius", "borderWidth", "borderStyle", "borderColor"],
|
|
416
|
+
"Effects": ["boxShadow", "transform", "transition", "filter"],
|
|
417
|
+
"Overflow": ["overflow", "whiteSpace"],
|
|
418
|
+
"Interaction": ["cursor", "pointerEvents"]
|
|
419
|
+
};
|
|
420
|
+
var VISUAL_MODE_PROPERTIES_SET = new Set(
|
|
421
|
+
Object.values(VISUAL_MODE_PROPERTIES).flat()
|
|
422
|
+
);
|
|
423
|
+
function isVisualModeProperty(prop) {
|
|
424
|
+
return VISUAL_MODE_PROPERTIES_SET.has(prop);
|
|
425
|
+
}
|
|
426
|
+
var isFlexDisplay = (d) => d === "flex" || d === "inline-flex";
|
|
427
|
+
var isGridDisplay = (d) => d === "grid" || d === "inline-grid";
|
|
428
|
+
var isListTag = (t) => t === "ul" || t === "ol" || t === "li";
|
|
429
|
+
var isMediaTag = (t) => t === "img" || t === "video";
|
|
430
|
+
var VISUAL_MODE_RULES = {
|
|
431
|
+
// Flex/Grid CONTAINER props — own display must be flex/grid.
|
|
432
|
+
flexDirection: (ctx) => isFlexDisplay(ctx.display),
|
|
433
|
+
flexWrap: (ctx) => isFlexDisplay(ctx.display),
|
|
434
|
+
justifyContent: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),
|
|
435
|
+
alignItems: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),
|
|
436
|
+
alignContent: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),
|
|
437
|
+
gap: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),
|
|
438
|
+
rowGap: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),
|
|
439
|
+
columnGap: (ctx) => isFlexDisplay(ctx.display) || isGridDisplay(ctx.display),
|
|
440
|
+
gridTemplateColumns: (ctx) => isGridDisplay(ctx.display),
|
|
441
|
+
gridTemplateRows: (ctx) => isGridDisplay(ctx.display),
|
|
442
|
+
gridTemplateAreas: (ctx) => isGridDisplay(ctx.display),
|
|
443
|
+
gridGap: (ctx) => isGridDisplay(ctx.display),
|
|
444
|
+
gridAutoFlow: (ctx) => isGridDisplay(ctx.display),
|
|
445
|
+
gridAutoColumns: (ctx) => isGridDisplay(ctx.display),
|
|
446
|
+
gridAutoRows: (ctx) => isGridDisplay(ctx.display),
|
|
447
|
+
justifyItems: (ctx) => isGridDisplay(ctx.display),
|
|
448
|
+
placeItems: (ctx) => isGridDisplay(ctx.display),
|
|
449
|
+
placeContent: (ctx) => isGridDisplay(ctx.display),
|
|
450
|
+
// Flex/Grid ITEM props — PARENT display must be flex/grid.
|
|
451
|
+
flex: (ctx) => isFlexDisplay(ctx.parentDisplay),
|
|
452
|
+
flexFlow: (ctx) => isFlexDisplay(ctx.parentDisplay),
|
|
453
|
+
flexGrow: (ctx) => isFlexDisplay(ctx.parentDisplay),
|
|
454
|
+
flexShrink: (ctx) => isFlexDisplay(ctx.parentDisplay),
|
|
455
|
+
flexBasis: (ctx) => isFlexDisplay(ctx.parentDisplay),
|
|
456
|
+
alignSelf: (ctx) => isFlexDisplay(ctx.parentDisplay) || isGridDisplay(ctx.parentDisplay),
|
|
457
|
+
justifySelf: (ctx) => isGridDisplay(ctx.parentDisplay),
|
|
458
|
+
placeSelf: (ctx) => isGridDisplay(ctx.parentDisplay),
|
|
459
|
+
order: (ctx) => isFlexDisplay(ctx.parentDisplay) || isGridDisplay(ctx.parentDisplay),
|
|
460
|
+
gridArea: (ctx) => isGridDisplay(ctx.parentDisplay),
|
|
461
|
+
gridColumn: (ctx) => isGridDisplay(ctx.parentDisplay),
|
|
462
|
+
gridRow: (ctx) => isGridDisplay(ctx.parentDisplay),
|
|
463
|
+
// Position-dependent inset properties.
|
|
464
|
+
top: (ctx) => ctx.position !== "static",
|
|
465
|
+
right: (ctx) => ctx.position !== "static",
|
|
466
|
+
bottom: (ctx) => ctx.position !== "static",
|
|
467
|
+
left: (ctx) => ctx.position !== "static",
|
|
468
|
+
inset: (ctx) => ctx.position !== "static",
|
|
469
|
+
zIndex: (ctx) => ctx.position !== "static",
|
|
470
|
+
// Tag-based.
|
|
471
|
+
objectFit: (ctx) => isMediaTag(ctx.tagName),
|
|
472
|
+
objectPosition: (ctx) => isMediaTag(ctx.tagName),
|
|
473
|
+
listStyle: (ctx) => isListTag(ctx.tagName),
|
|
474
|
+
listStyleType: (ctx) => isListTag(ctx.tagName),
|
|
475
|
+
listStylePosition: (ctx) => isListTag(ctx.tagName),
|
|
476
|
+
// Padding/margin shorthand-vs-longhand auto-toggle.
|
|
477
|
+
// When ANY longhand is set, hide shorthand; otherwise hide longhands.
|
|
478
|
+
padding: (ctx) => !ctx.hasPaddingLonghand,
|
|
479
|
+
paddingTop: (ctx) => ctx.hasPaddingLonghand,
|
|
480
|
+
paddingRight: (ctx) => ctx.hasPaddingLonghand,
|
|
481
|
+
paddingBottom: (ctx) => ctx.hasPaddingLonghand,
|
|
482
|
+
paddingLeft: (ctx) => ctx.hasPaddingLonghand,
|
|
483
|
+
margin: (ctx) => !ctx.hasMarginLonghand,
|
|
484
|
+
marginTop: (ctx) => ctx.hasMarginLonghand,
|
|
485
|
+
marginRight: (ctx) => ctx.hasMarginLonghand,
|
|
486
|
+
marginBottom: (ctx) => ctx.hasMarginLonghand,
|
|
487
|
+
marginLeft: (ctx) => ctx.hasMarginLonghand,
|
|
488
|
+
// Background-image-only props — meaningless without a background image.
|
|
489
|
+
backgroundPosition: (ctx) => ctx.hasBackgroundImage,
|
|
490
|
+
backgroundSize: (ctx) => ctx.hasBackgroundImage,
|
|
491
|
+
backgroundRepeat: (ctx) => ctx.hasBackgroundImage
|
|
492
|
+
};
|
|
493
|
+
function isVisualModeRowVisible(prop, ctx) {
|
|
494
|
+
const rule = VISUAL_MODE_RULES[prop];
|
|
495
|
+
return rule ? rule(ctx) : true;
|
|
496
|
+
}
|
|
405
497
|
function matchesAbbreviation(property, input) {
|
|
406
498
|
if (!input) return false;
|
|
407
499
|
let propertyIndex = 0;
|
|
@@ -462,6 +554,39 @@ function filterPropertyValues(propertyName, input) {
|
|
|
462
554
|
function getPropertyType(propertyName) {
|
|
463
555
|
return CSS_PROPERTIES_DEFINITION[propertyName]?.type;
|
|
464
556
|
}
|
|
557
|
+
var UNITLESS_PROPERTIES = /* @__PURE__ */ new Set([
|
|
558
|
+
"fontWeight",
|
|
559
|
+
"lineHeight",
|
|
560
|
+
"opacity",
|
|
561
|
+
"fillOpacity",
|
|
562
|
+
"strokeOpacity",
|
|
563
|
+
"stopOpacity",
|
|
564
|
+
"zIndex",
|
|
565
|
+
"order",
|
|
566
|
+
"flexGrow",
|
|
567
|
+
"flexShrink",
|
|
568
|
+
"flex",
|
|
569
|
+
"columnCount",
|
|
570
|
+
"columns",
|
|
571
|
+
"tabSize",
|
|
572
|
+
"orphans",
|
|
573
|
+
"widows",
|
|
574
|
+
"gridRow",
|
|
575
|
+
"gridColumn",
|
|
576
|
+
"gridRowStart",
|
|
577
|
+
"gridRowEnd",
|
|
578
|
+
"gridColumnStart",
|
|
579
|
+
"gridColumnEnd",
|
|
580
|
+
"animationIterationCount",
|
|
581
|
+
"aspectRatio",
|
|
582
|
+
"scale"
|
|
583
|
+
]);
|
|
584
|
+
function appendsPxByDefault(propertyName) {
|
|
585
|
+
if (UNITLESS_PROPERTIES.has(propertyName)) return false;
|
|
586
|
+
const def = CSS_PROPERTIES_DEFINITION[propertyName];
|
|
587
|
+
if (def?.type === "select" || def?.type === "boolean" || def?.type === "number") return false;
|
|
588
|
+
return true;
|
|
589
|
+
}
|
|
465
590
|
|
|
466
591
|
// lib/shared/errorLogger.ts
|
|
467
592
|
var errorHandler = null;
|
|
@@ -507,12 +632,18 @@ export {
|
|
|
507
632
|
CSS_PROPERTIES,
|
|
508
633
|
CSS_PROPERTY_GROUPS,
|
|
509
634
|
getPropertyGroup,
|
|
635
|
+
VISUAL_MODE_PROPERTIES,
|
|
636
|
+
isVisualModeProperty,
|
|
637
|
+
VISUAL_MODE_RULES,
|
|
638
|
+
isVisualModeRowVisible,
|
|
510
639
|
filterCSSProperties,
|
|
511
640
|
getPropertyValues,
|
|
512
641
|
filterPropertyValues,
|
|
513
642
|
getPropertyType,
|
|
643
|
+
UNITLESS_PROPERTIES,
|
|
644
|
+
appendsPxByDefault,
|
|
514
645
|
setErrorHandler,
|
|
515
646
|
logRuntimeError,
|
|
516
647
|
logNetworkError
|
|
517
648
|
};
|
|
518
|
-
//# sourceMappingURL=chunk-
|
|
649
|
+
//# sourceMappingURL=chunk-6IVUG7FY.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../lib/shared/cssProperties.ts", "../../lib/shared/errorLogger.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 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 textTransform: {\n values: ['none', 'capitalize', 'uppercase', 'lowercase'],\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 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 transform: { type: 'string' },\n transformOrigin: { type: 'string' },\n transition: { type: 'string' },\n animation: { type: 'string' },\n backfaceVisibility: {\n values: ['visible', 'hidden'],\n type: 'select',\n },\n mixBlendMode: {\n values: ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'],\n type: 'select',\n },\n clipPath: { type: 'string' },\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\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: ['none', 'disc', 'circle', 'square', 'decimal', 'decimal-leading-zero', 'lower-roman', 'upper-roman', 'lower-alpha', 'upper-alpha'],\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 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': ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n 'Size': ['width', 'height', 'minWidth', 'maxWidth', 'minHeight', 'maxHeight', 'aspectRatio'],\n 'Position': ['position', 'top', 'right', 'bottom', 'left', 'inset', 'zIndex'],\n 'Flexbox': ['flex', 'flexDirection', 'flexWrap', 'flexFlow', 'justifyContent', 'alignItems', 'alignContent', 'gap', 'rowGap', 'columnGap', 'alignSelf', 'flexGrow', 'flexShrink', 'flexBasis', 'order'],\n 'Grid': ['grid', 'gridTemplateColumns', 'gridTemplateRows', 'gridTemplateAreas', 'gridGap', 'gridColumn', 'gridRow', 'gridArea', 'gridAutoFlow', 'gridAutoColumns', 'gridAutoRows', 'justifyItems', 'justifySelf', 'placeContent', 'placeItems', 'placeSelf'],\n 'Typography': ['fontWeight', 'fontSize', 'fontFamily', 'fontStyle', 'lineHeight', 'color', 'textAlign', 'textDecoration', 'textTransform', 'letterSpacing', 'wordSpacing', 'wordBreak', 'overflowWrap', 'textIndent', 'verticalAlign'],\n 'Background': ['background', 'backgroundColor', 'backgroundImage', 'backgroundSize', 'backgroundPosition', 'backgroundRepeat', 'opacity'],\n 'Borders': ['borderRadius', 'borderTopLeftRadius', 'borderTopRightRadius', 'borderBottomLeftRadius', 'borderBottomRightRadius', 'border', 'borderWidth', 'borderStyle', 'borderColor', 'borderTop', 'borderRight', 'borderBottom', 'borderLeft'],\n 'Outline': ['outline', 'outlineWidth', 'outlineStyle', 'outlineColor', 'outlineOffset'],\n 'Effects': ['boxShadow', 'textShadow', 'filter', 'backdropFilter', 'transform', 'transformOrigin', 'transition', 'animation', 'backfaceVisibility', 'mixBlendMode', 'clipPath'],\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': ['stroke', 'strokeWidth', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeOpacity', 'fill', 'fillOpacity', 'fillRule'],\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': ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n 'Size': ['width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight'],\n 'Position': ['position', 'top', 'right', 'bottom', 'left', 'zIndex'],\n 'Typography': ['fontFamily', 'fontWeight', 'fontSize', 'lineHeight', 'color', 'letterSpacing', 'textAlign', 'textTransform', 'textDecoration'],\n 'Background': ['backgroundColor', 'backgroundImage', 'backgroundSize', 'backgroundPosition', 'backgroundRepeat', 'opacity'],\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(\n Object.values(VISUAL_MODE_PROPERTIES).flat()\n);\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 = propertyIndex === 0 ||\n (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 * 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(prop =>\n matchesAbbreviation(prop, normalizedInput) &&\n !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) =>\n getPropertyPriority(a) - getPropertyPriority(b);\n\n return [\n ...startsWithMatches.sort(byPriority),\n ...abbreviationMatches.sort(byPriority),\n ];\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 =>\n value.toLowerCase().includes(normalizedInput)\n );\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', 'lineHeight',\n 'opacity', 'fillOpacity', 'strokeOpacity', 'stopOpacity',\n 'zIndex', 'order',\n 'flexGrow', 'flexShrink', 'flex',\n 'columnCount', 'columns', 'tabSize', 'orphans', 'widows',\n 'gridRow', 'gridColumn', 'gridRowStart', 'gridRowEnd',\n 'gridColumnStart', '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", "/**\n * Error Logger\n * Centralized error logging with optional telemetry integration\n */\n\nimport type { ErrorCategory } from './errors';\n\ninterface ErrorLogEntry {\n location: string;\n category: ErrorCategory;\n error: unknown;\n context?: Record<string, unknown>;\n timestamp: number;\n}\n\ntype ErrorHandler = (entry: ErrorLogEntry) => void;\n\nlet errorHandler: ErrorHandler | null = null;\n\n/**\n * Set custom error handler (for telemetry integration)\n */\nexport function setErrorHandler(handler: ErrorHandler | null): void {\n errorHandler = handler;\n}\n\n/**\n * Check if running in development mode\n */\nfunction isDevelopment(): boolean {\n // Check for Node.js environment\n if (typeof process !== 'undefined' && process.env?.NODE_ENV) {\n return process.env.NODE_ENV === 'development';\n }\n // Browser environment - assume development if no production indicators\n return true;\n}\n\n/**\n * Log runtime error with context\n * Use for graceful degradation scenarios where error is handled but should be visible\n */\nexport function logRuntimeError(\n location: string,\n error: unknown,\n context?: Record<string, unknown>\n): void {\n const entry: ErrorLogEntry = {\n location,\n category: 'runtime',\n error,\n context,\n timestamp: Date.now(),\n };\n\n // Development: always log to console\n if (isDevelopment()) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`[${location}] ${errorMessage}`, context ?? '');\n }\n\n // Custom handler (telemetry, etc.)\n errorHandler?.(entry);\n}\n\n/**\n * Log network/API error\n */\nexport function logNetworkError(\n location: string,\n error: unknown,\n context?: Record<string, unknown>\n): void {\n const entry: ErrorLogEntry = {\n location,\n category: 'network',\n error,\n context,\n timestamp: Date.now(),\n };\n\n if (isDevelopment()) {\n console.error(`[${location}] Network error:`, error, context ?? '');\n }\n\n errorHandler?.(entry);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|