@endora-commerce/page-builder-core 0.100.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/LICENSE +21 -0
- package/README.md +51 -0
- package/dist/block-name.d.ts +48 -0
- package/dist/block-name.d.ts.map +1 -0
- package/dist/block-name.js +79 -0
- package/dist/block-name.js.map +1 -0
- package/dist/block-tree.d.ts +44 -0
- package/dist/block-tree.d.ts.map +1 -0
- package/dist/block-tree.js +120 -0
- package/dist/block-tree.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +4 -0
- package/dist/client.js.map +1 -0
- package/dist/color-palette/context.d.ts +18 -0
- package/dist/color-palette/context.d.ts.map +1 -0
- package/dist/color-palette/context.js +11 -0
- package/dist/color-palette/context.js.map +1 -0
- package/dist/define-component.d.ts +47 -0
- package/dist/define-component.d.ts.map +1 -0
- package/dist/define-component.js +74 -0
- package/dist/define-component.js.map +1 -0
- package/dist/editor/editor-carousel-preview-ui.d.ts +7 -0
- package/dist/editor/editor-carousel-preview-ui.d.ts.map +1 -0
- package/dist/editor/editor-carousel-preview-ui.js +11 -0
- package/dist/editor/editor-carousel-preview-ui.js.map +1 -0
- package/dist/editor/editor-carousel-preview.d.ts +31 -0
- package/dist/editor/editor-carousel-preview.d.ts.map +1 -0
- package/dist/editor/editor-carousel-preview.js +109 -0
- package/dist/editor/editor-carousel-preview.js.map +1 -0
- package/dist/editor/enhance-component-config.d.ts +7 -0
- package/dist/editor/enhance-component-config.d.ts.map +1 -0
- package/dist/editor/enhance-component-config.js +55 -0
- package/dist/editor/enhance-component-config.js.map +1 -0
- package/dist/editor/field-tabs.d.ts +7 -0
- package/dist/editor/field-tabs.d.ts.map +1 -0
- package/dist/editor/field-tabs.js +29 -0
- package/dist/editor/field-tabs.js.map +1 -0
- package/dist/editor/fields-tab-panel.d.ts +9 -0
- package/dist/editor/fields-tab-panel.d.ts.map +1 -0
- package/dist/editor/fields-tab-panel.js +132 -0
- package/dist/editor/fields-tab-panel.js.map +1 -0
- package/dist/editor/format-outline-label.d.ts +2 -0
- package/dist/editor/format-outline-label.d.ts.map +1 -0
- package/dist/editor/format-outline-label.js +10 -0
- package/dist/editor/format-outline-label.js.map +1 -0
- package/dist/editor/outline-data.d.ts +13 -0
- package/dist/editor/outline-data.d.ts.map +1 -0
- package/dist/editor/outline-data.js +73 -0
- package/dist/editor/outline-data.js.map +1 -0
- package/dist/editor/outline-dnd.d.ts +15 -0
- package/dist/editor/outline-dnd.d.ts.map +1 -0
- package/dist/editor/outline-dnd.js +55 -0
- package/dist/editor/outline-dnd.js.map +1 -0
- package/dist/editor/page-builder-component-overlay.d.ts +13 -0
- package/dist/editor/page-builder-component-overlay.d.ts.map +1 -0
- package/dist/editor/page-builder-component-overlay.js +14 -0
- package/dist/editor/page-builder-component-overlay.js.map +1 -0
- package/dist/editor/page-builder-outline.d.ts +10 -0
- package/dist/editor/page-builder-outline.d.ts.map +1 -0
- package/dist/editor/page-builder-outline.js +133 -0
- package/dist/editor/page-builder-outline.js.map +1 -0
- package/dist/editor/page-builder-plugin.d.ts +6 -0
- package/dist/editor/page-builder-plugin.d.ts.map +1 -0
- package/dist/editor/page-builder-plugin.js +31 -0
- package/dist/editor/page-builder-plugin.js.map +1 -0
- package/dist/editor/preview-viewport-bridge.d.ts +9 -0
- package/dist/editor/preview-viewport-bridge.d.ts.map +1 -0
- package/dist/editor/preview-viewport-bridge.js +19 -0
- package/dist/editor/preview-viewport-bridge.js.map +1 -0
- package/dist/editor/preview-viewport-store.d.ts +4 -0
- package/dist/editor/preview-viewport-store.d.ts.map +1 -0
- package/dist/editor/preview-viewport-store.js +24 -0
- package/dist/editor/preview-viewport-store.js.map +1 -0
- package/dist/editor/puck-action-guards.d.ts +46 -0
- package/dist/editor/puck-action-guards.d.ts.map +1 -0
- package/dist/editor/puck-action-guards.js +232 -0
- package/dist/editor/puck-action-guards.js.map +1 -0
- package/dist/editor/puck-dnd-element.d.ts +3 -0
- package/dist/editor/puck-dnd-element.d.ts.map +1 -0
- package/dist/editor/puck-dnd-element.js +20 -0
- package/dist/editor/puck-dnd-element.js.map +1 -0
- package/dist/editor/settings-scope-context.d.ts +13 -0
- package/dist/editor/settings-scope-context.d.ts.map +1 -0
- package/dist/editor/settings-scope-context.js +30 -0
- package/dist/editor/settings-scope-context.js.map +1 -0
- package/dist/editor/settings-scope-store.d.ts +5 -0
- package/dist/editor/settings-scope-store.d.ts.map +1 -0
- package/dist/editor/settings-scope-store.js +22 -0
- package/dist/editor/settings-scope-store.js.map +1 -0
- package/dist/editor/settings-tab-store.d.ts +5 -0
- package/dist/editor/settings-tab-store.d.ts.map +1 -0
- package/dist/editor/settings-tab-store.js +22 -0
- package/dist/editor/settings-tab-store.js.map +1 -0
- package/dist/editor/use-component-scope.d.ts +4 -0
- package/dist/editor/use-component-scope.d.ts.map +1 -0
- package/dist/editor/use-component-scope.js +15 -0
- package/dist/editor/use-component-scope.js.map +1 -0
- package/dist/editor/use-page-builder-puck.d.ts +4 -0
- package/dist/editor/use-page-builder-puck.d.ts.map +1 -0
- package/dist/editor/use-page-builder-puck.js +4 -0
- package/dist/editor/use-page-builder-puck.js.map +1 -0
- package/dist/editor/use-preview-breakpoint-tier.d.ts +10 -0
- package/dist/editor/use-preview-breakpoint-tier.d.ts.map +1 -0
- package/dist/editor/use-preview-breakpoint-tier.js +40 -0
- package/dist/editor/use-preview-breakpoint-tier.js.map +1 -0
- package/dist/editor.d.ts +15 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +16 -0
- package/dist/editor.js.map +1 -0
- package/dist/fields/background-field.d.ts +14 -0
- package/dist/fields/background-field.d.ts.map +1 -0
- package/dist/fields/background-field.js +38 -0
- package/dist/fields/background-field.js.map +1 -0
- package/dist/fields/border-field.d.ts +5 -0
- package/dist/fields/border-field.d.ts.map +1 -0
- package/dist/fields/border-field.js +85 -0
- package/dist/fields/border-field.js.map +1 -0
- package/dist/fields/color-field-utils.d.ts +16 -0
- package/dist/fields/color-field-utils.d.ts.map +1 -0
- package/dist/fields/color-field-utils.js +45 -0
- package/dist/fields/color-field-utils.js.map +1 -0
- package/dist/fields/color-field.d.ts +5 -0
- package/dist/fields/color-field.d.ts.map +1 -0
- package/dist/fields/color-field.js +74 -0
- package/dist/fields/color-field.js.map +1 -0
- package/dist/fields/color-input-debounce.d.ts +6 -0
- package/dist/fields/color-input-debounce.d.ts.map +1 -0
- package/dist/fields/color-input-debounce.js +24 -0
- package/dist/fields/color-input-debounce.js.map +1 -0
- package/dist/fields/editor-name-field.d.ts +3 -0
- package/dist/fields/editor-name-field.d.ts.map +1 -0
- package/dist/fields/editor-name-field.js +12 -0
- package/dist/fields/editor-name-field.js.map +1 -0
- package/dist/fields/hide-on-field.d.ts +4 -0
- package/dist/fields/hide-on-field.d.ts.map +1 -0
- package/dist/fields/hide-on-field.js +26 -0
- package/dist/fields/hide-on-field.js.map +1 -0
- package/dist/fields/native-color-input.d.ts +12 -0
- package/dist/fields/native-color-input.d.ts.map +1 -0
- package/dist/fields/native-color-input.js +51 -0
- package/dist/fields/native-color-input.js.map +1 -0
- package/dist/fields/puck-field-label.d.ts +8 -0
- package/dist/fields/puck-field-label.d.ts.map +1 -0
- package/dist/fields/puck-field-label.js +8 -0
- package/dist/fields/puck-field-label.js.map +1 -0
- package/dist/fields/responsive-field-types.d.ts +21 -0
- package/dist/fields/responsive-field-types.d.ts.map +1 -0
- package/dist/fields/responsive-field-types.js +97 -0
- package/dist/fields/responsive-field-types.js.map +1 -0
- package/dist/fields/scoped-field.d.ts +19 -0
- package/dist/fields/scoped-field.d.ts.map +1 -0
- package/dist/fields/scoped-field.js +67 -0
- package/dist/fields/scoped-field.js.map +1 -0
- package/dist/fields/spacing-field.d.ts +14 -0
- package/dist/fields/spacing-field.d.ts.map +1 -0
- package/dist/fields/spacing-field.js +71 -0
- package/dist/fields/spacing-field.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/migration/frozen-block-renames.d.ts +14 -0
- package/dist/migration/frozen-block-renames.d.ts.map +1 -0
- package/dist/migration/frozen-block-renames.js +132 -0
- package/dist/migration/frozen-block-renames.js.map +1 -0
- package/dist/migration/index.d.ts +4 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +22 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/rename-block-names-sql.d.ts +28 -0
- package/dist/migration/rename-block-names-sql.d.ts.map +1 -0
- package/dist/migration/rename-block-names-sql.js +117 -0
- package/dist/migration/rename-block-names-sql.js.map +1 -0
- package/dist/palette.d.ts +47 -0
- package/dist/palette.d.ts.map +1 -0
- package/dist/palette.js +84 -0
- package/dist/palette.js.map +1 -0
- package/dist/render/responsive-styles.d.ts +19 -0
- package/dist/render/responsive-styles.d.ts.map +1 -0
- package/dist/render/responsive-styles.js +91 -0
- package/dist/render/responsive-styles.js.map +1 -0
- package/dist/types/background.d.ts +26 -0
- package/dist/types/background.d.ts.map +1 -0
- package/dist/types/background.js +76 -0
- package/dist/types/background.js.map +1 -0
- package/dist/types/box-styles.d.ts +67 -0
- package/dist/types/box-styles.d.ts.map +1 -0
- package/dist/types/box-styles.js +217 -0
- package/dist/types/box-styles.js.map +1 -0
- package/dist/types/editor-chrome.d.ts +15 -0
- package/dist/types/editor-chrome.d.ts.map +1 -0
- package/dist/types/editor-chrome.js +8 -0
- package/dist/types/editor-chrome.js.map +1 -0
- package/dist/types/hide-on.d.ts +6 -0
- package/dist/types/hide-on.d.ts.map +1 -0
- package/dist/types/hide-on.js +2 -0
- package/dist/types/hide-on.js.map +1 -0
- package/dist/types/responsive.d.ts +70 -0
- package/dist/types/responsive.d.ts.map +1 -0
- package/dist/types/responsive.js +91 -0
- package/dist/types/responsive.js.map +1 -0
- package/dist/visibility/with-hide-on.d.ts +12 -0
- package/dist/visibility/with-hide-on.d.ts.map +1 -0
- package/dist/visibility/with-hide-on.js +28 -0
- package/dist/visibility/with-hide-on.js.map +1 -0
- package/package.json +96 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { memo, useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { ScopedFieldHint, ScopedResetLink, readScopedValue, responsiveBaseSeed, writeScopedValue, } from './scoped-field.js';
|
|
5
|
+
import { getStoredScope } from '../editor/settings-scope-store.js';
|
|
6
|
+
import { hasResponsiveOverride, isResponsiveField, settingsScopeToTier, } from '../types/responsive.js';
|
|
7
|
+
import { useComponentScope } from '../editor/use-component-scope.js';
|
|
8
|
+
import { usePageBuilderPuck } from '../editor/use-page-builder-puck.js';
|
|
9
|
+
const inputClassName = '_Input-input_bsxfo_26';
|
|
10
|
+
function useFieldFocus(name) {
|
|
11
|
+
return usePageBuilderPuck((s) => s.appState?.ui?.field?.focus === name);
|
|
12
|
+
}
|
|
13
|
+
function useScopedLocalValue(name, value, scope, fallback) {
|
|
14
|
+
const isFocused = useFieldFocus(name);
|
|
15
|
+
const scoped = readScopedValue(value, scope, fallback);
|
|
16
|
+
const [local, setLocal] = useState(scoped);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (!isFocused) {
|
|
19
|
+
setLocal(readScopedValue(value, scope, fallback));
|
|
20
|
+
}
|
|
21
|
+
}, [value, scope, fallback, isFocused]);
|
|
22
|
+
return [local, setLocal];
|
|
23
|
+
}
|
|
24
|
+
function numberFallback(value, field) {
|
|
25
|
+
const fallback = field.min ?? 0;
|
|
26
|
+
return responsiveBaseSeed(value, fallback);
|
|
27
|
+
}
|
|
28
|
+
const ResponsiveNumberControl = memo(function ResponsiveNumberControl({ name, field, value, onChange, readOnly, label, labelIcon, Label: labelComponent, id, }) {
|
|
29
|
+
const componentId = usePageBuilderPuck((s) => s.selectedItem?.props.id);
|
|
30
|
+
const componentIdRef = useRef(componentId);
|
|
31
|
+
componentIdRef.current = componentId;
|
|
32
|
+
const scope = useComponentScope(componentId);
|
|
33
|
+
const fallback = numberFallback(value, field);
|
|
34
|
+
const tier = settingsScopeToTier(scope);
|
|
35
|
+
const inherited = scope !== 'base' && !hasResponsiveOverride(value, tier);
|
|
36
|
+
const valueRef = useRef(value);
|
|
37
|
+
valueRef.current = value;
|
|
38
|
+
const onChangeRef = useRef(onChange);
|
|
39
|
+
onChangeRef.current = onChange;
|
|
40
|
+
const [local, setLocal] = useScopedLocalValue(name, value, scope, fallback);
|
|
41
|
+
const commit = useCallback((next) => {
|
|
42
|
+
setLocal(next);
|
|
43
|
+
const activeScope = getStoredScope(componentIdRef.current);
|
|
44
|
+
const activeFallback = numberFallback(valueRef.current, field);
|
|
45
|
+
onChangeRef.current(writeScopedValue(valueRef.current, activeScope, next, activeFallback));
|
|
46
|
+
}, [field, setLocal]);
|
|
47
|
+
const control = (_jsxs("div", { className: "space-y-1", children: [_jsx(ScopedFieldHint, { value: value, scope: scope, fallback: fallback }), _jsx(ScopedResetLink, { value: value, scope: scope, fallback: fallback, onChange: onChange, ...(readOnly === true ? { readOnly: true } : {}) }), _jsx("input", { id: id ?? `pb-${name}`, type: "number", className: inputClassName, style: { width: '100%', boxSizing: 'border-box' }, value: Number.isFinite(Number(local)) ? Number(local) : '', min: field.min, max: field.max, step: field.step, readOnly: readOnly, onChange: (e) => {
|
|
48
|
+
const parsed = Number(e.target.value);
|
|
49
|
+
if (!Number.isNaN(parsed))
|
|
50
|
+
commit(parsed);
|
|
51
|
+
} }), inherited ? (_jsx("p", { className: "text-xs opacity-60", children: "Inherited value shown \u2014 change to override for this scope." })) : null] }));
|
|
52
|
+
if (!labelComponent)
|
|
53
|
+
return control;
|
|
54
|
+
const Label = labelComponent;
|
|
55
|
+
return (_jsx(Label, { label: label || name, icon: labelIcon, ...(readOnly === true ? { readOnly: true } : {}), children: control }));
|
|
56
|
+
});
|
|
57
|
+
const ResponsiveSelectControl = memo(function ResponsiveSelectControl({ name, field, value, onChange, readOnly, label, labelIcon, Label: labelComponent, id, }) {
|
|
58
|
+
const componentId = usePageBuilderPuck((s) => s.selectedItem?.props.id);
|
|
59
|
+
const componentIdRef = useRef(componentId);
|
|
60
|
+
componentIdRef.current = componentId;
|
|
61
|
+
const scope = useComponentScope(componentId);
|
|
62
|
+
const fallback = field.options?.[0]?.value ?? '';
|
|
63
|
+
const tier = settingsScopeToTier(scope);
|
|
64
|
+
const inherited = scope !== 'base' && !hasResponsiveOverride(value, tier);
|
|
65
|
+
const valueRef = useRef(value);
|
|
66
|
+
valueRef.current = value;
|
|
67
|
+
const onChangeRef = useRef(onChange);
|
|
68
|
+
onChangeRef.current = onChange;
|
|
69
|
+
const [local, setLocal] = useScopedLocalValue(name, value, scope, fallback);
|
|
70
|
+
const commit = useCallback((next) => {
|
|
71
|
+
setLocal(next);
|
|
72
|
+
const activeScope = getStoredScope(componentIdRef.current);
|
|
73
|
+
const activeFallback = responsiveBaseSeed(valueRef.current, fallback);
|
|
74
|
+
onChangeRef.current(writeScopedValue(valueRef.current, activeScope, next, activeFallback));
|
|
75
|
+
}, [fallback, setLocal]);
|
|
76
|
+
const control = (_jsxs("div", { className: "space-y-1", children: [_jsx(ScopedFieldHint, { value: value, scope: scope, fallback: fallback }), _jsx(ScopedResetLink, { value: value, scope: scope, fallback: fallback, onChange: onChange, ...(readOnly === true ? { readOnly: true } : {}) }), _jsx("select", { id: id ?? `pb-${name}`, className: inputClassName, style: { width: '100%', boxSizing: 'border-box' }, value: String(local), disabled: readOnly, onChange: (e) => {
|
|
77
|
+
const option = field.options?.find((o) => String(o.value) === e.target.value);
|
|
78
|
+
commit(option?.value ?? e.target.value);
|
|
79
|
+
}, children: (field.options ?? []).map((option) => (_jsx("option", { value: String(option.value), children: option.label }, String(option.value)))) }), inherited ? (_jsx("p", { className: "text-xs opacity-60", children: "Inherited value shown \u2014 change to override for this scope." })) : null] }));
|
|
80
|
+
if (!labelComponent)
|
|
81
|
+
return control;
|
|
82
|
+
const Label = labelComponent;
|
|
83
|
+
return (_jsx(Label, { label: label || name, icon: labelIcon, ...(readOnly === true ? { readOnly: true } : {}), children: control }));
|
|
84
|
+
});
|
|
85
|
+
export function renderResponsiveNumberField(props) {
|
|
86
|
+
if (!isResponsiveField(props.field)) {
|
|
87
|
+
return _jsx(_Fragment, { children: props.children });
|
|
88
|
+
}
|
|
89
|
+
return _jsx(ResponsiveNumberControl, { ...props, field: props.field });
|
|
90
|
+
}
|
|
91
|
+
export function renderResponsiveSelectField(props) {
|
|
92
|
+
if (!isResponsiveField(props.field)) {
|
|
93
|
+
return _jsx(_Fragment, { children: props.children });
|
|
94
|
+
}
|
|
95
|
+
return _jsx(ResponsiveSelectControl, { ...props, field: props.field });
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=responsive-field-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responsive-field-types.js","sourceRoot":"","sources":["../../src/fields/responsive-field-types.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import { type ResponsiveProp, type SettingsScope } from '../types/responsive.js';
|
|
3
|
+
export declare function responsiveBaseSeed<T>(value: T | ResponsiveProp<T> | undefined, fallback: T): T;
|
|
4
|
+
export declare function readScopedValue<T>(value: T | ResponsiveProp<T> | undefined, scope: SettingsScope, fallback: T): T;
|
|
5
|
+
export declare function writeScopedValue<T>(value: T | ResponsiveProp<T> | undefined, scope: SettingsScope, next: T, fallback: T): T | ResponsiveProp<T>;
|
|
6
|
+
export declare function clearScopedOverride<T>(value: T | ResponsiveProp<T> | undefined, scope: SettingsScope, fallback: T): T | ResponsiveProp<T>;
|
|
7
|
+
export declare function ScopedFieldHint<T>({ value, scope, fallback, }: {
|
|
8
|
+
value: T | ResponsiveProp<T> | undefined;
|
|
9
|
+
scope: SettingsScope;
|
|
10
|
+
fallback: T;
|
|
11
|
+
}): ReactElement | null;
|
|
12
|
+
export declare function ScopedResetLink({ value, scope, fallback, onChange, readOnly, }: {
|
|
13
|
+
value: unknown;
|
|
14
|
+
scope: SettingsScope;
|
|
15
|
+
fallback: unknown;
|
|
16
|
+
onChange: (value: unknown) => void;
|
|
17
|
+
readOnly?: boolean;
|
|
18
|
+
}): ReactElement | null;
|
|
19
|
+
//# sourceMappingURL=scoped-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-field.d.ts","sourceRoot":"","sources":["../../src/fields/scoped-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAahC,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAI9F;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,EACxC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,CAAC,GACV,CAAC,CAGH;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,EACxC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,GACV,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAYvB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,EACxC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,CAAC,GACV,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CASvB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,EACjC,KAAK,EACL,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC;CACb,GAAG,YAAY,GAAG,IAAI,CAWtB;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,YAAY,GAAG,IAAI,CActB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { hasResponsiveOverride, isResponsiveProp, normalizeResponsive, resolveResponsive, settingsScopeToTier, } from '../types/responsive.js';
|
|
3
|
+
function scopeKey(scope) {
|
|
4
|
+
if (scope === 'tablet')
|
|
5
|
+
return 'tablet';
|
|
6
|
+
if (scope === 'desktop')
|
|
7
|
+
return 'desktop';
|
|
8
|
+
return 'base';
|
|
9
|
+
}
|
|
10
|
+
function inheritedFromLabel(scope) {
|
|
11
|
+
if (scope === 'tablet')
|
|
12
|
+
return 'Base';
|
|
13
|
+
return 'Base / Tablet';
|
|
14
|
+
}
|
|
15
|
+
export function responsiveBaseSeed(value, fallback) {
|
|
16
|
+
if (isResponsiveProp(value))
|
|
17
|
+
return value.base;
|
|
18
|
+
if (value !== undefined)
|
|
19
|
+
return value;
|
|
20
|
+
return fallback;
|
|
21
|
+
}
|
|
22
|
+
export function readScopedValue(value, scope, fallback) {
|
|
23
|
+
const tier = settingsScopeToTier(scope);
|
|
24
|
+
return resolveResponsive(value, tier, responsiveBaseSeed(value, fallback));
|
|
25
|
+
}
|
|
26
|
+
export function writeScopedValue(value, scope, next, fallback) {
|
|
27
|
+
const key = scopeKey(scope);
|
|
28
|
+
if (key === 'base') {
|
|
29
|
+
if (isResponsiveProp(value)) {
|
|
30
|
+
return { ...value, base: next };
|
|
31
|
+
}
|
|
32
|
+
return next;
|
|
33
|
+
}
|
|
34
|
+
const base = responsiveBaseSeed(value, fallback);
|
|
35
|
+
const responsive = isResponsiveProp(value) ? { ...value } : { base };
|
|
36
|
+
return { ...responsive, [key]: next };
|
|
37
|
+
}
|
|
38
|
+
export function clearScopedOverride(value, scope, fallback) {
|
|
39
|
+
if (scope === 'base')
|
|
40
|
+
return normalizeResponsive(value, fallback);
|
|
41
|
+
const responsive = normalizeResponsive(value, fallback);
|
|
42
|
+
if (scope === 'tablet') {
|
|
43
|
+
const { tablet: _removed, ...rest } = responsive;
|
|
44
|
+
return rest;
|
|
45
|
+
}
|
|
46
|
+
const { desktop: _removed, ...rest } = responsive;
|
|
47
|
+
return rest;
|
|
48
|
+
}
|
|
49
|
+
export function ScopedFieldHint({ value, scope, fallback, }) {
|
|
50
|
+
if (scope === 'base')
|
|
51
|
+
return null;
|
|
52
|
+
const tier = settingsScopeToTier(scope);
|
|
53
|
+
const responsive = normalizeResponsive(value, responsiveBaseSeed(value, fallback));
|
|
54
|
+
if (hasResponsiveOverride(responsive, tier))
|
|
55
|
+
return null;
|
|
56
|
+
const inherited = resolveResponsive(responsive, tier, responsiveBaseSeed(value, fallback));
|
|
57
|
+
return (_jsxs("p", { className: "mb-1 text-xs opacity-70", children: ["Applies: ", _jsx("span", { className: "opacity-60", children: String(inherited) }), " (from ", inheritedFromLabel(scope), ")"] }));
|
|
58
|
+
}
|
|
59
|
+
export function ScopedResetLink({ value, scope, fallback, onChange, readOnly, }) {
|
|
60
|
+
if (scope === 'base')
|
|
61
|
+
return null;
|
|
62
|
+
const tier = settingsScopeToTier(scope);
|
|
63
|
+
if (!hasResponsiveOverride(value, tier))
|
|
64
|
+
return null;
|
|
65
|
+
return (_jsx("button", { type: "button", className: "mb-1 text-xs opacity-70 underline", disabled: readOnly, onClick: () => onChange(clearScopedOverride(value, scope, fallback)), children: "Reset to inherited" }));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=scoped-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoped-field.js","sourceRoot":"","sources":["../../src/fields/scoped-field.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
import type { Field } from '@measured/puck';
|
|
3
|
+
import { type SpacingValue } from '../types/box-styles.js';
|
|
4
|
+
import { type ResponsiveProp } from '../types/responsive.js';
|
|
5
|
+
declare function SpacingEditor({ value, onChange, readOnly, }: {
|
|
6
|
+
value: SpacingValue;
|
|
7
|
+
onChange: (next: SpacingValue) => void;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
}): ReactElement;
|
|
10
|
+
export declare function createSpacingField(options: {
|
|
11
|
+
label: string;
|
|
12
|
+
}): Field<SpacingValue | ResponsiveProp<SpacingValue> | undefined, Record<string, unknown>>;
|
|
13
|
+
export { SpacingEditor };
|
|
14
|
+
//# sourceMappingURL=spacing-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing-field.d.ts","sourceRoot":"","sources":["../../src/fields/spacing-field.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkD,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAsE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAejI,iBAAS,aAAa,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,YAAY,CAiFf;AA+DD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,KAAK,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAe1F;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { memo, useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { DEFAULT_SPACING, normalizeSpacing, } from '../types/box-styles.js';
|
|
5
|
+
import { PB_RESPONSIVE_METADATA, hasResponsiveOverride, settingsScopeToTier } from '../types/responsive.js';
|
|
6
|
+
import { ScopedFieldHint, ScopedResetLink, readScopedValue, responsiveBaseSeed, writeScopedValue, } from './scoped-field.js';
|
|
7
|
+
import { getStoredScope } from '../editor/settings-scope-store.js';
|
|
8
|
+
import { useComponentScope } from '../editor/use-component-scope.js';
|
|
9
|
+
import { usePageBuilderPuck } from '../editor/use-page-builder-puck.js';
|
|
10
|
+
import { PuckFieldLabel } from './puck-field-label.js';
|
|
11
|
+
const inputClassName = '_Input-input_bsxfo_26';
|
|
12
|
+
function SpacingEditor({ value, onChange, readOnly, }) {
|
|
13
|
+
const spacing = normalizeSpacing(value);
|
|
14
|
+
const mode = spacing.mode;
|
|
15
|
+
const setUniform = (n) => {
|
|
16
|
+
onChange({ mode: 'uniform', value: Math.max(0, n) });
|
|
17
|
+
};
|
|
18
|
+
const setSide = (key, n) => {
|
|
19
|
+
const base = spacing.mode === 'sides'
|
|
20
|
+
? spacing
|
|
21
|
+
: { mode: 'sides', top: spacing.value, right: spacing.value, bottom: spacing.value, left: spacing.value };
|
|
22
|
+
onChange({ ...base, [key]: Math.max(0, n) });
|
|
23
|
+
};
|
|
24
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex gap-2 text-sm", children: [_jsxs("label", { className: "flex items-center gap-1", children: [_jsx("input", { type: "radio", checked: mode === 'uniform', disabled: readOnly, onChange: () => onChange({ mode: 'uniform', value: spacing.mode === 'uniform' ? spacing.value : 0 }) }), "All sides"] }), _jsxs("label", { className: "flex items-center gap-1", children: [_jsx("input", { type: "radio", checked: mode === 'sides', disabled: readOnly, onChange: () => {
|
|
25
|
+
const v = spacing.mode === 'uniform' ? spacing.value : 0;
|
|
26
|
+
onChange({ mode: 'sides', top: v, right: v, bottom: v, left: v });
|
|
27
|
+
} }), "Each side"] })] }), mode === 'uniform' ? (_jsx("input", { type: "number", className: inputClassName, style: { width: '100%', boxSizing: 'border-box' }, min: 0, max: 200, step: 4, readOnly: readOnly, value: spacing.value, onChange: (e) => {
|
|
28
|
+
const parsed = Number(e.target.value);
|
|
29
|
+
if (!Number.isNaN(parsed))
|
|
30
|
+
setUniform(parsed);
|
|
31
|
+
} })) : (_jsx("div", { className: "grid grid-cols-2 gap-2", children: ['top', 'right', 'bottom', 'left'].map((side) => (_jsxs("label", { className: "space-y-1 text-xs capitalize", children: [side, _jsx("input", { type: "number", className: inputClassName, style: { width: '100%', boxSizing: 'border-box' }, min: 0, max: 200, step: 4, readOnly: readOnly, value: spacing[side], onChange: (e) => {
|
|
32
|
+
const parsed = Number(e.target.value);
|
|
33
|
+
if (!Number.isNaN(parsed))
|
|
34
|
+
setSide(side, parsed);
|
|
35
|
+
} })] }, side))) }))] }));
|
|
36
|
+
}
|
|
37
|
+
const ResponsiveSpacingControl = memo(function ResponsiveSpacingControl({ value, onChange, readOnly, }) {
|
|
38
|
+
const componentId = usePageBuilderPuck((s) => s.selectedItem?.props.id);
|
|
39
|
+
const componentIdRef = useRef(componentId);
|
|
40
|
+
componentIdRef.current = componentId;
|
|
41
|
+
const scope = useComponentScope(componentId);
|
|
42
|
+
const fallback = responsiveBaseSeed(value, DEFAULT_SPACING);
|
|
43
|
+
const tier = settingsScopeToTier(scope);
|
|
44
|
+
const inherited = scope !== 'base' && !hasResponsiveOverride(value, tier);
|
|
45
|
+
const valueRef = useRef(value);
|
|
46
|
+
valueRef.current = value;
|
|
47
|
+
const onChangeRef = useRef(onChange);
|
|
48
|
+
onChangeRef.current = onChange;
|
|
49
|
+
const scoped = readScopedValue(value, scope, fallback);
|
|
50
|
+
const [local, setLocal] = useState(normalizeSpacing(scoped));
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
setLocal(normalizeSpacing(readScopedValue(value, scope, fallback)));
|
|
53
|
+
}, [value, scope, fallback]);
|
|
54
|
+
const commit = useCallback((next) => {
|
|
55
|
+
setLocal(next);
|
|
56
|
+
const activeScope = getStoredScope(componentIdRef.current);
|
|
57
|
+
const activeFallback = responsiveBaseSeed(valueRef.current, DEFAULT_SPACING);
|
|
58
|
+
onChangeRef.current(writeScopedValue(valueRef.current, activeScope, next, activeFallback));
|
|
59
|
+
}, [setLocal]);
|
|
60
|
+
return (_jsxs("div", { className: "space-y-1", children: [_jsx(ScopedFieldHint, { value: value, scope: scope, fallback: fallback }), _jsx(ScopedResetLink, { value: value, scope: scope, fallback: fallback, onChange: onChange, ...(readOnly === true ? { readOnly: true } : {}) }), _jsx(SpacingEditor, { value: local, onChange: commit, ...(readOnly === true ? { readOnly: true } : {}) }), inherited ? (_jsx("p", { className: "text-xs opacity-60", children: "Inherited value shown \u2014 change to override for this scope." })) : null] }));
|
|
61
|
+
});
|
|
62
|
+
export function createSpacingField(options) {
|
|
63
|
+
return {
|
|
64
|
+
type: 'custom',
|
|
65
|
+
label: options.label,
|
|
66
|
+
metadata: PB_RESPONSIVE_METADATA,
|
|
67
|
+
render: ({ value, onChange, readOnly, field }) => (_jsx(PuckFieldLabel, { label: field.label ?? options.label, ...(readOnly === true ? { readOnly: true } : {}), children: _jsx(ResponsiveSpacingControl, { value: value ?? DEFAULT_SPACING, onChange: (next) => onChange(next), ...(readOnly === true ? { readOnly: true } : {}) }) })),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export { SpacingEditor };
|
|
71
|
+
//# sourceMappingURL=spacing-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing-field.js","sourceRoot":"","sources":["../../src/fields/spacing-field.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAqB,MAAM,OAAO,CAAC;AAE1F,OAAO,EACL,eAAe,EACf,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AACjI,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAE/C,SAAS,aAAa,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,QAAQ,GAKT;IACC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,UAAU,GAAG,CAAC,CAAS,EAAQ,EAAE;QACrC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,GAAwC,EAAE,CAAS,EAAQ,EAAE;QAC5E,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,KAAK,OAAO;YACtB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACvH,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,eAAK,SAAS,EAAC,oBAAoB,aACjC,iBAAO,SAAS,EAAC,yBAAyB,aACxC,gBACE,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,IAAI,KAAK,SAAS,EAC3B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAC1G,iBAEI,EACR,iBAAO,SAAS,EAAC,yBAAyB,aACxC,gBACE,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,IAAI,KAAK,OAAO,EACzB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAS,EAAE;oCACnB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oCACzD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gCACpE,CAAC,GACD,iBAEI,IACJ,EACL,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CACpB,gBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,EACjD,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE;oBACpB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;wBAAE,UAAU,CAAC,MAAM,CAAC,CAAC;gBAChD,CAAC,GACD,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,wBAAwB,YACnC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC3D,iBAAkB,SAAS,EAAC,8BAA8B,aACvD,IAAI,EACL,gBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,EACjD,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAQ,EAAE;gCACpB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;oCAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;4BACnD,CAAC,GACD,KAfQ,IAAI,CAgBR,CACT,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,SAAS,wBAAwB,CAAC,EACtE,KAAK,EACL,QAAQ,EACR,QAAQ,GAKT;IACC,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,EAAwB,CAAC,CAAC;IAC9F,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;IACrC,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAiB,CAAC;IAC5E,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,KAAK,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAE/B,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,gBAAgB,CAAC,MAAsB,CAAC,CAAC,CAAC;IAE3F,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAiB,CAAC,CAAC,CAAC;IACtF,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7B,MAAM,MAAM,GAAG,WAAW,CACxB,CAAC,IAAkB,EAAE,EAAE;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAiB,CAAC;QAC7F,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7F,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,eAAe,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,EACnE,KAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,KACd,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACjD,EACF,KAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,KACZ,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACjD,EACD,SAAS,CAAC,CAAC,CAAC,CACX,YAAG,SAAS,EAAC,oBAAoB,gFAA+D,CACjG,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,OAElC;IACC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,sBAAsB;QAChC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAgB,EAAE,CAAC,CAC9D,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YACpG,KAAC,wBAAwB,IACvB,KAAK,EAAE,KAAK,IAAI,eAAe,EAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAmD,CAAC,KAC7E,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACjD,GACa,CAClB;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { DEFAULT_BREAKPOINTS, PAGE_BUILDER_CONTEXTS, PB_RESPONSIVE_METADATA, PB_DATA_METADATA, PB_ITEMS_METADATA, SETTINGS_SCOPE_LABELS, hasResponsiveOverride, hideOnDataAttrs, isDataField, isItemsField, isHiddenOnTier, isResponsiveField, isResponsiveProp, normalizeResponsive, resolveResponsive, settingsScopeToTier, tierFromViewportWidth, type BreakpointTier, type HideOn, type PageBuilderBreakpoints, type PageBuilderContext, type ResponsiveProp, type SettingsScope, } from './types/responsive.js';
|
|
2
|
+
export type { HideOnProps } from './types/hide-on.js';
|
|
3
|
+
export type { PageBuilderEditorProps } from './types/editor-chrome.js';
|
|
4
|
+
export { EDITOR_NAME_FIELD_KEY, GENERAL_SECTION_FIELD_KEY, RESPONSIVE_SECTION_FIELD_KEY, RESPONSIVE_SCOPE_FIELD_KEY, } from './types/editor-chrome.js';
|
|
5
|
+
export { buildPaletteCategories, type BuildPaletteOptions, type ServedPaletteBlock, type ServedPaletteSection, } from './palette.js';
|
|
6
|
+
export { contextAdmits, definePageBuilderComponent, filterConfigByContext, getComponentContexts, getDisallowedComponentNames, getResponsiveFields, type ComponentContextMeta, type PageBuilderComponentDefinition, } from './define-component.js';
|
|
7
|
+
export { RESPONSIVE_HIDE_ON_CLASS, breakpointCssVars, buildResponsiveNumberVars, buildResponsiveCSSValueVars, resolveResponsiveNumber, resolveRowAlignClassForTier, resolveTextAlignClassForTier, resolveTextAlignForTier, responsiveRowAlignClass, responsiveTextAlignClass, textAlignDataAttrs, } from './render/responsive-styles.js';
|
|
8
|
+
export { DEFAULT_BORDER, DEFAULT_SPACING, CONTENT_WIDTH_MAX, ROW_CONTENT_MAX_WIDTH, CORNER_RADIUS_PX, SHADOW_CSS, borderSidesToCss, borderStyleForTier, borderToCss, buildResponsiveBorderVars, buildResponsiveColumnCountVars, buildResponsiveSpanVars, buildResponsiveSpacingVars, clampColumnSpan, contentPositionToJustify, gridTemplateColumnsFromCount, normalizeBorder, normalizeSpacing, resolveBorder, resolveColumnCount, resolveColumnSpan, resolveContentPosition, resolveSpacing, resolveVerticalAlign, spacingStyleForTier, spacingToCss, verticalAlignToCss, type BorderSide, type BorderStyle, type BorderValue, type ContentPosition, type ContentWidth, type CornerRadius, type RowContentMaxWidth, type RowSectionLayout, type Shadow, type SpacingValue, type VerticalAlign, } from './types/box-styles.js';
|
|
9
|
+
export { createSpacingField } from './fields/spacing-field.js';
|
|
10
|
+
export { createBorderField } from './fields/border-field.js';
|
|
11
|
+
export { createColorField } from './fields/color-field.js';
|
|
12
|
+
export { createBackgroundField } from './fields/background-field.js';
|
|
13
|
+
export { NativeColorInput } from './fields/native-color-input.js';
|
|
14
|
+
export { normalizeBackground, backgroundToStyle, type BackgroundKind, type BackgroundProp, type BackgroundValue, type MediaSourceKind, } from './types/background.js';
|
|
15
|
+
export { withHideOn } from './visibility/with-hide-on.js';
|
|
16
|
+
export { formatBlockName, isNamespaced, ownerOf, parseBlockName, type ParsedBlockName, } from './block-name.js';
|
|
17
|
+
export { countBlockNames, mapBlockNames, renameBlockNames, type BlockNameVisitor, type BlockNameWalkResult, } from './block-tree.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export { DEFAULT_BREAKPOINTS, PAGE_BUILDER_CONTEXTS, PB_RESPONSIVE_METADATA, PB_DATA_METADATA, PB_ITEMS_METADATA, SETTINGS_SCOPE_LABELS, hasResponsiveOverride, hideOnDataAttrs, isDataField, isItemsField, isHiddenOnTier, isResponsiveField, isResponsiveProp, normalizeResponsive, resolveResponsive, settingsScopeToTier, tierFromViewportWidth, } from './types/responsive.js';
|
|
2
|
+
export { EDITOR_NAME_FIELD_KEY, GENERAL_SECTION_FIELD_KEY, RESPONSIVE_SECTION_FIELD_KEY, RESPONSIVE_SCOPE_FIELD_KEY, } from './types/editor-chrome.js';
|
|
3
|
+
export { buildPaletteCategories, } from './palette.js';
|
|
4
|
+
export { contextAdmits, definePageBuilderComponent, filterConfigByContext, getComponentContexts, getDisallowedComponentNames, getResponsiveFields, } from './define-component.js';
|
|
5
|
+
export { RESPONSIVE_HIDE_ON_CLASS, breakpointCssVars, buildResponsiveNumberVars, buildResponsiveCSSValueVars, resolveResponsiveNumber, resolveRowAlignClassForTier, resolveTextAlignClassForTier, resolveTextAlignForTier, responsiveRowAlignClass, responsiveTextAlignClass, textAlignDataAttrs, } from './render/responsive-styles.js';
|
|
6
|
+
export { DEFAULT_BORDER, DEFAULT_SPACING, CONTENT_WIDTH_MAX, ROW_CONTENT_MAX_WIDTH, CORNER_RADIUS_PX, SHADOW_CSS, borderSidesToCss, borderStyleForTier, borderToCss, buildResponsiveBorderVars, buildResponsiveColumnCountVars, buildResponsiveSpanVars, buildResponsiveSpacingVars, clampColumnSpan, contentPositionToJustify, gridTemplateColumnsFromCount, normalizeBorder, normalizeSpacing, resolveBorder, resolveColumnCount, resolveColumnSpan, resolveContentPosition, resolveSpacing, resolveVerticalAlign, spacingStyleForTier, spacingToCss, verticalAlignToCss, } from './types/box-styles.js';
|
|
7
|
+
export { createSpacingField } from './fields/spacing-field.js';
|
|
8
|
+
export { createBorderField } from './fields/border-field.js';
|
|
9
|
+
export { createColorField } from './fields/color-field.js';
|
|
10
|
+
export { createBackgroundField } from './fields/background-field.js';
|
|
11
|
+
export { NativeColorInput } from './fields/native-color-input.js';
|
|
12
|
+
export { normalizeBackground, backgroundToStyle, } from './types/background.js';
|
|
13
|
+
export { withHideOn } from './visibility/with-hide-on.js';
|
|
14
|
+
// Feature 096 — the one implementation of the block-name readers. Also
|
|
15
|
+
// reachable as `@endora-commerce/page-builder-core/block-name` through this
|
|
16
|
+
// package's wildcard subpath, which is what a migration should import: it
|
|
17
|
+
// carries no React.
|
|
18
|
+
export { formatBlockName, isNamespaced, ownerOf, parseBlockName, } from './block-name.js';
|
|
19
|
+
// The structural walk over a stored Puck document — feature 096, T403/T602.
|
|
20
|
+
//
|
|
21
|
+
// It lived under the migration directory until Phase 6, which is where its
|
|
22
|
+
// first two readers were: the five rename migrations and the operator's
|
|
23
|
+
// pre-flight report. It is on the ordinary barrel because its third reader is a
|
|
24
|
+
// runtime one — the admin editor has to know which of a stored document's names
|
|
25
|
+
// no installed module can render, so that each of them degrades to the
|
|
26
|
+
// data-preserving placeholder FR-019 requires. **What the migration subpath
|
|
27
|
+
// quarantines is the frozen rename map, not this**: the difference between a
|
|
28
|
+
// frozen historical constant and the permanent alias map the owner rejected on
|
|
29
|
+
// 2026-09-02 is whether a resolver can reach the *map*, and
|
|
30
|
+
// `backend/test/unit/cms/frozen-map-not-on-a-runtime-path.test.ts` is what holds
|
|
31
|
+
// that line — which is also why this comment spells that subpath in prose
|
|
32
|
+
// rather than as a specifier: the assertion is a text one over this file, and
|
|
33
|
+
// it is right to be. A second, private walk written inside the admin would be
|
|
34
|
+
// exactly the copy `block-name.ts`' header exists to refuse.
|
|
35
|
+
export { countBlockNames, mapBlockNames, renameBlockNames, } from './block-tree.js';
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,GAOtB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,sBAAsB,GAIvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,GAGpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,EACvB,0BAA0B,EAC1B,eAAe,EACf,wBAAwB,EACxB,4BAA4B,EAC5B,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,GAYnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAKlB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,uEAAuE;AACvE,4EAA4E;AAC5E,0EAA0E;AAC1E,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,OAAO,EACP,cAAc,GAEf,MAAM,iBAAiB,CAAC;AAEzB,4EAA4E;AAC5E,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,gFAAgF;AAChF,gFAAgF;AAChF,uEAAuE;AACvE,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,4DAA4D;AAC5D,iFAAiF;AACjF,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,6DAA6D;AAC7D,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The 74 pre-096 bare block names, each mapped to the namespaced name the
|
|
3
|
+
* declaring module now owns. Grouped by owner, in each manifest's own
|
|
4
|
+
* declaration order.
|
|
5
|
+
*/
|
|
6
|
+
export declare const FROZEN_BLOCK_RENAMES: Readonly<Record<string, string>>;
|
|
7
|
+
/**
|
|
8
|
+
* The inverse of {@link FROZEN_BLOCK_RENAMES}, used by every `down()`.
|
|
9
|
+
*
|
|
10
|
+
* Derived rather than written, so the two cannot come to disagree; the
|
|
11
|
+
* bijection assertion in the companion test is what makes the derivation safe.
|
|
12
|
+
*/
|
|
13
|
+
export declare const FROZEN_BLOCK_RENAMES_INVERSE: Readonly<Record<string, string>>;
|
|
14
|
+
//# sourceMappingURL=frozen-block-renames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frozen-block-renames.d.ts","sourceRoot":"","sources":["../../src/migration/frozen-block-renames.ts"],"names":[],"mappings":"AAkCA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqFhE,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEzE,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// The frozen block-rename map — feature 096, T402.
|
|
2
|
+
//
|
|
3
|
+
// **Frozen. Closed. Read by the five rename migrations and by the operator's
|
|
4
|
+
// pre-flight report, and by nothing else** (`contracts/block-name-migration.md`
|
|
5
|
+
// §3.3, §6; `contracts/block-name-check.md` §9).
|
|
6
|
+
//
|
|
7
|
+
// It is a *historical constant*, not an alias table. The owner rejected a
|
|
8
|
+
// permanent alias map on 2026-09-02: names are namespaced once, in the data,
|
|
9
|
+
// and the application then knows one vocabulary. The difference between the two
|
|
10
|
+
// designs is only real while this file cannot be read from a runtime path, which
|
|
11
|
+
// is what `backend/test/unit/cms/frozen-map-not-on-a-runtime-path.test.ts`
|
|
12
|
+
// asserts — without it the first resolver that reaches for the map turns this
|
|
13
|
+
// design into the thing that was rejected, silently.
|
|
14
|
+
//
|
|
15
|
+
// **Editing an entry retroactively changes what five applied migrations meant.**
|
|
16
|
+
// A database migrated under an old entry keeps the name that entry produced; a
|
|
17
|
+
// database migrated after the edit gets the new one, and nothing reconciles the
|
|
18
|
+
// two. The digest in `frozen-block-renames.test.ts` is what makes that edit a
|
|
19
|
+
// failing test rather than a silent divergence.
|
|
20
|
+
//
|
|
21
|
+
// **Structural properties, each load-bearing rather than tidy**
|
|
22
|
+
// (`data-model.md` §6):
|
|
23
|
+
//
|
|
24
|
+
// - Every **key** is bare — no `.` anywhere in the domain.
|
|
25
|
+
// - Every **value** is namespaced — every name in the codomain carries one.
|
|
26
|
+
// - Domain and codomain are therefore **disjoint**, which is what makes the
|
|
27
|
+
// rename idempotent *by construction*: a second run finds no key and rewrites
|
|
28
|
+
// nothing. FR-013 needs no dot test in the SQL and none is written there.
|
|
29
|
+
// - It is a **bijection** — 74 distinct keys onto 74 distinct values — which is
|
|
30
|
+
// what makes `down()` exact over the frozen set.
|
|
31
|
+
//
|
|
32
|
+
// A block born after this feature is namespaced from birth and has **no entry
|
|
33
|
+
// here**. The map does not grow (FR-016).
|
|
34
|
+
/**
|
|
35
|
+
* The 74 pre-096 bare block names, each mapped to the namespaced name the
|
|
36
|
+
* declaring module now owns. Grouped by owner, in each manifest's own
|
|
37
|
+
* declaration order.
|
|
38
|
+
*/
|
|
39
|
+
export const FROZEN_BLOCK_RENAMES = Object.freeze({
|
|
40
|
+
// catalog — 8
|
|
41
|
+
ProductCard: 'catalog.ProductCard',
|
|
42
|
+
ProductGrid: 'catalog.ProductGrid',
|
|
43
|
+
ProductSlider: 'catalog.ProductSlider',
|
|
44
|
+
CategoryList: 'catalog.CategoryList',
|
|
45
|
+
CategoryGrid: 'catalog.CategoryGrid',
|
|
46
|
+
EmailProductCard: 'catalog.EmailProductCard',
|
|
47
|
+
EmailProductGrid: 'catalog.EmailProductGrid',
|
|
48
|
+
EmailCategoryGrid: 'catalog.EmailCategoryGrid',
|
|
49
|
+
// cms — 30
|
|
50
|
+
Row: 'cms.Row',
|
|
51
|
+
Spacer: 'cms.Spacer',
|
|
52
|
+
Heading: 'cms.Heading',
|
|
53
|
+
Text: 'cms.Text',
|
|
54
|
+
RichContent: 'cms.RichContent',
|
|
55
|
+
Button: 'cms.Button',
|
|
56
|
+
Image: 'cms.Image',
|
|
57
|
+
Icons: 'cms.Icons',
|
|
58
|
+
Social: 'cms.Social',
|
|
59
|
+
FeatureList: 'cms.FeatureList',
|
|
60
|
+
Hero: 'cms.Hero',
|
|
61
|
+
LogoStrip: 'cms.LogoStrip',
|
|
62
|
+
Testimonial: 'cms.Testimonial',
|
|
63
|
+
Stats: 'cms.Stats',
|
|
64
|
+
AnnouncementBar: 'cms.AnnouncementBar',
|
|
65
|
+
SimpleTable: 'cms.SimpleTable',
|
|
66
|
+
Video: 'cms.Video',
|
|
67
|
+
Map: 'cms.Map',
|
|
68
|
+
ContentSlider: 'cms.ContentSlider',
|
|
69
|
+
ImageSlider: 'cms.ImageSlider',
|
|
70
|
+
Tabs: 'cms.Tabs',
|
|
71
|
+
Accordion: 'cms.Accordion',
|
|
72
|
+
Column: 'cms.Column',
|
|
73
|
+
Slide: 'cms.Slide',
|
|
74
|
+
NewsletterSignup: 'cms.NewsletterSignup',
|
|
75
|
+
ContactFormEmbed: 'cms.ContactFormEmbed',
|
|
76
|
+
RawHtml: 'cms.RawHtml',
|
|
77
|
+
RawJs: 'cms.RawJs',
|
|
78
|
+
InsertBlock: 'cms.InsertBlock',
|
|
79
|
+
InsertTemplate: 'cms.InsertTemplate',
|
|
80
|
+
// invoices — 10
|
|
81
|
+
InvoiceHeader: 'invoices.InvoiceHeader',
|
|
82
|
+
InvoiceParties: 'invoices.InvoiceParties',
|
|
83
|
+
InvoiceLineItems: 'invoices.InvoiceLineItems',
|
|
84
|
+
InvoiceVatSummary: 'invoices.InvoiceVatSummary',
|
|
85
|
+
InvoiceTotals: 'invoices.InvoiceTotals',
|
|
86
|
+
InvoiceNotes: 'invoices.InvoiceNotes',
|
|
87
|
+
InvoiceSpacer: 'invoices.InvoiceSpacer',
|
|
88
|
+
InvoiceDivider: 'invoices.InvoiceDivider',
|
|
89
|
+
InvoiceLogo: 'invoices.InvoiceLogo',
|
|
90
|
+
InvoiceFooter: 'invoices.InvoiceFooter',
|
|
91
|
+
// ksef — 1
|
|
92
|
+
// The one entry whose local segment moved. The block was stored as
|
|
93
|
+
// `InvoiceKsef` and is declared as `ksef.InvoiceSection` — the owner ruling
|
|
94
|
+
// of 2026-09-02 gave it to `ksef`, and `ksef.InvoiceKsef` would have stuttered
|
|
95
|
+
// the owner into the local name (`data-model.md` §7.3).
|
|
96
|
+
InvoiceKsef: 'ksef.InvoiceSection',
|
|
97
|
+
// orders — 8
|
|
98
|
+
EmailOrderId: 'orders.EmailOrderId',
|
|
99
|
+
EmailOrderSummary: 'orders.EmailOrderSummary',
|
|
100
|
+
EmailOrderTotals: 'orders.EmailOrderTotals',
|
|
101
|
+
EmailAppliedDiscounts: 'orders.EmailAppliedDiscounts',
|
|
102
|
+
EmailDeliveryMethod: 'orders.EmailDeliveryMethod',
|
|
103
|
+
EmailPaymentMethod: 'orders.EmailPaymentMethod',
|
|
104
|
+
EmailShippingAddress: 'orders.EmailShippingAddress',
|
|
105
|
+
EmailBillingAddress: 'orders.EmailBillingAddress',
|
|
106
|
+
// transactional_emails — 17
|
|
107
|
+
EmailHeading: 'transactional_emails.EmailHeading',
|
|
108
|
+
EmailText: 'transactional_emails.EmailText',
|
|
109
|
+
EmailRichText: 'transactional_emails.EmailRichText',
|
|
110
|
+
EmailButton: 'transactional_emails.EmailButton',
|
|
111
|
+
EmailImage: 'transactional_emails.EmailImage',
|
|
112
|
+
EmailLogo: 'transactional_emails.EmailLogo',
|
|
113
|
+
EmailSocial: 'transactional_emails.EmailSocial',
|
|
114
|
+
EmailCallout: 'transactional_emails.EmailCallout',
|
|
115
|
+
EmailFooterLegal: 'transactional_emails.EmailFooterLegal',
|
|
116
|
+
EmailSection: 'transactional_emails.EmailSection',
|
|
117
|
+
EmailRow: 'transactional_emails.EmailRow',
|
|
118
|
+
EmailTable: 'transactional_emails.EmailTable',
|
|
119
|
+
EmailDivider: 'transactional_emails.EmailDivider',
|
|
120
|
+
EmailSpacer: 'transactional_emails.EmailSpacer',
|
|
121
|
+
EmailInsertBlock: 'transactional_emails.EmailInsertBlock',
|
|
122
|
+
EmailInsertTemplate: 'transactional_emails.EmailInsertTemplate',
|
|
123
|
+
EmailColumn: 'transactional_emails.EmailColumn',
|
|
124
|
+
});
|
|
125
|
+
/**
|
|
126
|
+
* The inverse of {@link FROZEN_BLOCK_RENAMES}, used by every `down()`.
|
|
127
|
+
*
|
|
128
|
+
* Derived rather than written, so the two cannot come to disagree; the
|
|
129
|
+
* bijection assertion in the companion test is what makes the derivation safe.
|
|
130
|
+
*/
|
|
131
|
+
export const FROZEN_BLOCK_RENAMES_INVERSE = Object.freeze(Object.fromEntries(Object.entries(FROZEN_BLOCK_RENAMES).map(([bare, namespaced]) => [namespaced, bare])));
|
|
132
|
+
//# sourceMappingURL=frozen-block-renames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frozen-block-renames.js","sourceRoot":"","sources":["../../src/migration/frozen-block-renames.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { FROZEN_BLOCK_RENAMES, FROZEN_BLOCK_RENAMES_INVERSE, } from './frozen-block-renames.js';
|
|
2
|
+
export { applyRenameFunctionSql, createRenameFunctionSql, dropRenameFunctionSql, } from './rename-block-names-sql.js';
|
|
3
|
+
export { countBlockNames, mapBlockNames, renameBlockNames, type BlockNameVisitor, type BlockNameWalkResult, } from '../block-tree.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AASrC,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// `@endora-commerce/page-builder-core/migration` — feature 096, T402/T403.
|
|
2
|
+
//
|
|
3
|
+
// **This subpath is not a runtime path.** It is imported by the five rename
|
|
4
|
+
// migrations and by `cms`' `block-names` report command, and by nothing else;
|
|
5
|
+
// `backend/test/unit/cms/frozen-map-not-on-a-runtime-path.test.ts` is what holds
|
|
6
|
+
// that true. The owner rejected a permanent alias map on 2026-09-02, and the
|
|
7
|
+
// difference between a frozen historical constant and an alias map is exactly
|
|
8
|
+
// whether a resolver can reach it.
|
|
9
|
+
//
|
|
10
|
+
// It is a subpath of its own — rather than the barrel, which the whole admin
|
|
11
|
+
// imports — so that the assertion has something to name.
|
|
12
|
+
export { FROZEN_BLOCK_RENAMES, FROZEN_BLOCK_RENAMES_INVERSE, } from './frozen-block-renames.js';
|
|
13
|
+
export { applyRenameFunctionSql, createRenameFunctionSql, dropRenameFunctionSql, } from './rename-block-names-sql.js';
|
|
14
|
+
// The structural walk itself is **not** part of this subpath's quarantine and
|
|
15
|
+
// lives one directory up, on the package's ordinary barrel (`../block-tree.js`).
|
|
16
|
+
// The thing that must not be reachable at runtime is the frozen rename *map*;
|
|
17
|
+
// the walk is a generic "offer me every node `type` in this document", and the
|
|
18
|
+
// admin's degradation merge needs exactly that to decide which stored names
|
|
19
|
+
// have no renderer (FR-019). Re-exported here so the five migrations and the
|
|
20
|
+
// report keep importing one specifier.
|
|
21
|
+
export { countBlockNames, mapBlockNames, renameBlockNames, } from '../block-tree.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,6EAA6E;AAC7E,yDAAyD;AAEzD,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC,8EAA8E;AAC9E,iFAAiF;AACjF,8EAA8E;AAC9E,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,uCAAuC;AACvC,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,GAGjB,MAAM,kBAAkB,CAAC"}
|