@ohhwells/bridge 0.1.66-next.192 → 0.1.67-next.194
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/dist/index.cjs +276 -277
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +275 -276
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -7551,13 +7551,17 @@ function MediaOverlay({
|
|
|
7551
7551
|
hover,
|
|
7552
7552
|
isUploading,
|
|
7553
7553
|
fadingOut = false,
|
|
7554
|
+
selected = false,
|
|
7555
|
+
hovered = false,
|
|
7554
7556
|
onFadeOutComplete,
|
|
7555
7557
|
onReplace,
|
|
7558
|
+
onSelect,
|
|
7556
7559
|
onVideoSettingsChange
|
|
7557
7560
|
}) {
|
|
7558
7561
|
const { rect } = hover;
|
|
7559
7562
|
const skeletonRef = React7.useRef(null);
|
|
7560
7563
|
const isVideo = hover.elementType === "video";
|
|
7564
|
+
const showChrome = !selected || hovered;
|
|
7561
7565
|
const autoplay = hover.videoAutoplay ?? true;
|
|
7562
7566
|
const muted = hover.videoMuted ?? true;
|
|
7563
7567
|
const box = {
|
|
@@ -7592,7 +7596,7 @@ function MediaOverlay({
|
|
|
7592
7596
|
}
|
|
7593
7597
|
);
|
|
7594
7598
|
}
|
|
7595
|
-
const settingsBar = isVideo && !hover.isDragOver ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
7599
|
+
const settingsBar = isVideo && !hover.isDragOver && showChrome ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
7596
7600
|
"div",
|
|
7597
7601
|
{
|
|
7598
7602
|
"data-ohw-bridge": "",
|
|
@@ -7662,11 +7666,13 @@ function MediaOverlay({
|
|
|
7662
7666
|
// in-document, pointer-events does it natively. The button below opts back in, so
|
|
7663
7667
|
// Replace still works.
|
|
7664
7668
|
pointerEvents: hover.hasTextOverlap ? "none" : "auto",
|
|
7665
|
-
|
|
7666
|
-
|
|
7669
|
+
// Selected: a firm component ring with no wash, so the image reads as chosen rather
|
|
7670
|
+
// than hovered. Hover keeps the existing tinted preview.
|
|
7671
|
+
boxShadow: selected ? "inset 0 0 0 2px var(--color-primary)" : "inset 0 0 0 1.5px var(--color-primary)",
|
|
7672
|
+
background: selected ? "transparent" : "color-mix(in srgb, var(--color-primary) 20%, transparent)"
|
|
7667
7673
|
},
|
|
7668
|
-
onClick: () => onReplace(hover.key),
|
|
7669
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
7674
|
+
onClick: () => onSelect && !selected ? onSelect(hover.key) : onReplace(hover.key),
|
|
7675
|
+
children: showChrome && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
7670
7676
|
Button,
|
|
7671
7677
|
{
|
|
7672
7678
|
"data-ohw-media-overlay": "",
|
|
@@ -12601,127 +12607,16 @@ function FloatingPanel({
|
|
|
12601
12607
|
);
|
|
12602
12608
|
}
|
|
12603
12609
|
|
|
12604
|
-
// src/ui/logo-size-panel.tsx
|
|
12605
|
-
var import_lucide_react15 = require("lucide-react");
|
|
12606
|
-
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
12607
|
-
function SizeSlider({
|
|
12608
|
-
value,
|
|
12609
|
-
onChange
|
|
12610
|
-
}) {
|
|
12611
|
-
const pct = (value - LOGO_SIZE_MIN) / (LOGO_SIZE_MAX - LOGO_SIZE_MIN) * 100;
|
|
12612
|
-
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex w-full flex-col gap-3", children: [
|
|
12613
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex w-full items-center gap-2 text-sm font-medium leading-5", children: [
|
|
12614
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "min-w-0 flex-1 text-foreground", children: "Size" }),
|
|
12615
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: "shrink-0 whitespace-nowrap text-muted-foreground", children: [
|
|
12616
|
-
value,
|
|
12617
|
-
" px"
|
|
12618
|
-
] })
|
|
12619
|
-
] }),
|
|
12620
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "relative h-2 w-full rounded-full bg-primary-50", children: [
|
|
12621
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12622
|
-
"div",
|
|
12623
|
-
{
|
|
12624
|
-
className: "absolute inset-y-0 left-0 rounded-full bg-primary",
|
|
12625
|
-
style: { width: `${pct}%` }
|
|
12626
|
-
}
|
|
12627
|
-
),
|
|
12628
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12629
|
-
"input",
|
|
12630
|
-
{
|
|
12631
|
-
type: "range",
|
|
12632
|
-
min: LOGO_SIZE_MIN,
|
|
12633
|
-
max: LOGO_SIZE_MAX,
|
|
12634
|
-
step: 1,
|
|
12635
|
-
value,
|
|
12636
|
-
"aria-label": "Logo size",
|
|
12637
|
-
className: cn(
|
|
12638
|
-
"absolute inset-0 h-full w-full cursor-pointer appearance-none bg-transparent",
|
|
12639
|
-
"[&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:size-5",
|
|
12640
|
-
"[&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2",
|
|
12641
|
-
"[&::-webkit-slider-thumb]:border-primary [&::-webkit-slider-thumb]:bg-background",
|
|
12642
|
-
"[&::-moz-range-thumb]:size-5 [&::-moz-range-thumb]:rounded-full",
|
|
12643
|
-
"[&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-primary",
|
|
12644
|
-
"[&::-moz-range-thumb]:bg-background"
|
|
12645
|
-
),
|
|
12646
|
-
onChange: (e) => onChange(Number(e.target.value))
|
|
12647
|
-
}
|
|
12648
|
-
)
|
|
12649
|
-
] })
|
|
12650
|
-
] });
|
|
12651
|
-
}
|
|
12652
|
-
function LogoSizePanel({
|
|
12653
|
-
viewport,
|
|
12654
|
-
sizePx,
|
|
12655
|
-
mobileFollowing = true,
|
|
12656
|
-
onSizeChange,
|
|
12657
|
-
onCustomizeMobile,
|
|
12658
|
-
onResetMobile,
|
|
12659
|
-
onUpdateEverywhere,
|
|
12660
|
-
className
|
|
12661
|
-
}) {
|
|
12662
|
-
const showFollowing = viewport === "mobile" && mobileFollowing;
|
|
12663
|
-
const showMobileSlider = viewport === "mobile" && !mobileFollowing;
|
|
12664
|
-
const showDesktopSlider = viewport === "desktop";
|
|
12665
|
-
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("flex w-full flex-col gap-4", className), children: [
|
|
12666
|
-
showFollowing ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex w-full flex-col gap-2", children: [
|
|
12667
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-start gap-1", children: [
|
|
12668
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react15.Link, { size: 16, className: "mt-0.5 shrink-0 text-foreground", "aria-hidden": true }),
|
|
12669
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-sm font-semibold leading-5 text-foreground", children: "Following desktop size" })
|
|
12670
|
-
] }),
|
|
12671
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-sm leading-5 text-muted-foreground", children: "Mobile uses the desktop size until you customize it. Change the desktop size and it follows automatically." }),
|
|
12672
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12673
|
-
Button,
|
|
12674
|
-
{
|
|
12675
|
-
type: "button",
|
|
12676
|
-
variant: "outline",
|
|
12677
|
-
size: "sm",
|
|
12678
|
-
className: "h-9 w-full min-w-0 cursor-pointer",
|
|
12679
|
-
onClick: onCustomizeMobile,
|
|
12680
|
-
children: "Customize for mobile"
|
|
12681
|
-
}
|
|
12682
|
-
)
|
|
12683
|
-
] }) : null,
|
|
12684
|
-
showDesktopSlider || showMobileSlider ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SizeSlider, { value: sizePx, onChange: onSizeChange }) : null,
|
|
12685
|
-
showMobileSlider ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12686
|
-
Button,
|
|
12687
|
-
{
|
|
12688
|
-
type: "button",
|
|
12689
|
-
variant: "outline",
|
|
12690
|
-
size: "sm",
|
|
12691
|
-
className: "h-9 w-full min-w-0 cursor-pointer",
|
|
12692
|
-
onClick: onResetMobile,
|
|
12693
|
-
children: "Reset to desktop size"
|
|
12694
|
-
}
|
|
12695
|
-
) : null,
|
|
12696
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "h-px w-full bg-border", role: "separator" }),
|
|
12697
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
12698
|
-
Button,
|
|
12699
|
-
{
|
|
12700
|
-
type: "button",
|
|
12701
|
-
variant: "outline",
|
|
12702
|
-
size: "sm",
|
|
12703
|
-
className: "h-9 w-full min-w-0 cursor-pointer gap-1",
|
|
12704
|
-
onClick: onUpdateEverywhere,
|
|
12705
|
-
children: [
|
|
12706
|
-
"Update logo everywhere",
|
|
12707
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react15.ArrowUpRight, { size: 16, "aria-hidden": true })
|
|
12708
|
-
]
|
|
12709
|
-
}
|
|
12710
|
-
),
|
|
12711
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "text-sm leading-5 text-muted-foreground", children: "Matches the right version to your background." })
|
|
12712
|
-
] });
|
|
12713
|
-
}
|
|
12714
|
-
|
|
12715
12610
|
// src/ui/socials-display-panel.tsx
|
|
12716
|
-
var
|
|
12611
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
12717
12612
|
function DisplaySwitch({
|
|
12718
12613
|
label,
|
|
12719
12614
|
checked,
|
|
12720
12615
|
disabled,
|
|
12721
12616
|
onChange
|
|
12722
12617
|
}) {
|
|
12723
|
-
return /* @__PURE__ */ (0,
|
|
12724
|
-
/* @__PURE__ */ (0,
|
|
12618
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex w-full items-center gap-2", children: [
|
|
12619
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12725
12620
|
"span",
|
|
12726
12621
|
{
|
|
12727
12622
|
className: cn(
|
|
@@ -12731,7 +12626,7 @@ function DisplaySwitch({
|
|
|
12731
12626
|
children: label
|
|
12732
12627
|
}
|
|
12733
12628
|
),
|
|
12734
|
-
/* @__PURE__ */ (0,
|
|
12629
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12735
12630
|
"button",
|
|
12736
12631
|
{
|
|
12737
12632
|
type: "button",
|
|
@@ -12745,7 +12640,7 @@ function DisplaySwitch({
|
|
|
12745
12640
|
checked ? "bg-primary" : "bg-primary-50",
|
|
12746
12641
|
disabled ? "cursor-default opacity-50" : "cursor-pointer"
|
|
12747
12642
|
),
|
|
12748
|
-
children: /* @__PURE__ */ (0,
|
|
12643
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12749
12644
|
"span",
|
|
12750
12645
|
{
|
|
12751
12646
|
className: cn(
|
|
@@ -12759,8 +12654,8 @@ function DisplaySwitch({
|
|
|
12759
12654
|
] });
|
|
12760
12655
|
}
|
|
12761
12656
|
function SocialsDisplayPanel({ display, onChange, className }) {
|
|
12762
|
-
return /* @__PURE__ */ (0,
|
|
12763
|
-
/* @__PURE__ */ (0,
|
|
12657
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: cn("flex w-full flex-col gap-3", className), children: [
|
|
12658
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12764
12659
|
DisplaySwitch,
|
|
12765
12660
|
{
|
|
12766
12661
|
label: "Text",
|
|
@@ -12769,7 +12664,7 @@ function SocialsDisplayPanel({ display, onChange, className }) {
|
|
|
12769
12664
|
onChange: (text) => onChange({ ...display, text })
|
|
12770
12665
|
}
|
|
12771
12666
|
),
|
|
12772
|
-
/* @__PURE__ */ (0,
|
|
12667
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
12773
12668
|
DisplaySwitch,
|
|
12774
12669
|
{
|
|
12775
12670
|
label: "Icon",
|
|
@@ -13656,8 +13551,8 @@ function useSectionDrag({
|
|
|
13656
13551
|
}
|
|
13657
13552
|
|
|
13658
13553
|
// src/ui/footer-container-chrome.tsx
|
|
13659
|
-
var
|
|
13660
|
-
var
|
|
13554
|
+
var import_lucide_react15 = require("lucide-react");
|
|
13555
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
13661
13556
|
function FooterContainerChrome({
|
|
13662
13557
|
rect,
|
|
13663
13558
|
onAdd,
|
|
@@ -13665,7 +13560,7 @@ function FooterContainerChrome({
|
|
|
13665
13560
|
}) {
|
|
13666
13561
|
const chromeGap = 6;
|
|
13667
13562
|
const buttonMargin = 7;
|
|
13668
|
-
return /* @__PURE__ */ (0,
|
|
13563
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
13669
13564
|
"div",
|
|
13670
13565
|
{
|
|
13671
13566
|
"data-ohw-footer-container-chrome": "",
|
|
@@ -13677,8 +13572,8 @@ function FooterContainerChrome({
|
|
|
13677
13572
|
width: rect.width + chromeGap * 2,
|
|
13678
13573
|
height: rect.height + chromeGap * 2
|
|
13679
13574
|
},
|
|
13680
|
-
children: /* @__PURE__ */ (0,
|
|
13681
|
-
/* @__PURE__ */ (0,
|
|
13575
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Tooltip, { children: [
|
|
13576
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
13682
13577
|
"button",
|
|
13683
13578
|
{
|
|
13684
13579
|
type: "button",
|
|
@@ -13697,10 +13592,10 @@ function FooterContainerChrome({
|
|
|
13697
13592
|
if (addDisabled) return;
|
|
13698
13593
|
onAdd();
|
|
13699
13594
|
},
|
|
13700
|
-
children: /* @__PURE__ */ (0,
|
|
13595
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react15.Plus, { className: "size-4 shrink-0 text-foreground", "aria-hidden": true })
|
|
13701
13596
|
}
|
|
13702
13597
|
) }),
|
|
13703
|
-
/* @__PURE__ */ (0,
|
|
13598
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TooltipContent, { side: "bottom", sideOffset: 9, children: addDisabled ? "Maximum columns reached" : "Add item" })
|
|
13704
13599
|
] })
|
|
13705
13600
|
}
|
|
13706
13601
|
) });
|
|
@@ -14162,14 +14057,14 @@ function deleteSelectedNavFooterItem(deps) {
|
|
|
14162
14057
|
}
|
|
14163
14058
|
|
|
14164
14059
|
// src/ui/navbar-container-chrome.tsx
|
|
14165
|
-
var
|
|
14166
|
-
var
|
|
14060
|
+
var import_lucide_react16 = require("lucide-react");
|
|
14061
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
14167
14062
|
function NavbarContainerChrome({
|
|
14168
14063
|
rect,
|
|
14169
14064
|
onAdd
|
|
14170
14065
|
}) {
|
|
14171
14066
|
const chromeGap = 6;
|
|
14172
|
-
return /* @__PURE__ */ (0,
|
|
14067
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
14173
14068
|
"div",
|
|
14174
14069
|
{
|
|
14175
14070
|
"data-ohw-navbar-container-chrome": "",
|
|
@@ -14181,7 +14076,7 @@ function NavbarContainerChrome({
|
|
|
14181
14076
|
width: rect.width + chromeGap * 2,
|
|
14182
14077
|
height: rect.height + chromeGap * 2
|
|
14183
14078
|
},
|
|
14184
|
-
children: /* @__PURE__ */ (0,
|
|
14079
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
14185
14080
|
"button",
|
|
14186
14081
|
{
|
|
14187
14082
|
type: "button",
|
|
@@ -14198,7 +14093,7 @@ function NavbarContainerChrome({
|
|
|
14198
14093
|
e.stopPropagation();
|
|
14199
14094
|
onAdd();
|
|
14200
14095
|
},
|
|
14201
|
-
children: /* @__PURE__ */ (0,
|
|
14096
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react16.Plus, { className: "size-4 shrink-0 text-foreground", "aria-hidden": true })
|
|
14202
14097
|
}
|
|
14203
14098
|
)
|
|
14204
14099
|
}
|
|
@@ -14207,7 +14102,7 @@ function NavbarContainerChrome({
|
|
|
14207
14102
|
|
|
14208
14103
|
// src/ui/drop-indicator.tsx
|
|
14209
14104
|
var React10 = __toESM(require("react"), 1);
|
|
14210
|
-
var
|
|
14105
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
14211
14106
|
var dropIndicatorVariants = cva(
|
|
14212
14107
|
"ov-gap-line pointer-events-none shrink-0 transition-opacity duration-150",
|
|
14213
14108
|
{
|
|
@@ -14231,7 +14126,7 @@ var dropIndicatorVariants = cva(
|
|
|
14231
14126
|
);
|
|
14232
14127
|
var DropIndicator = React10.forwardRef(
|
|
14233
14128
|
({ className, direction, state, ...props }, ref) => {
|
|
14234
|
-
return /* @__PURE__ */ (0,
|
|
14129
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
14235
14130
|
"div",
|
|
14236
14131
|
{
|
|
14237
14132
|
ref,
|
|
@@ -14248,7 +14143,7 @@ var DropIndicator = React10.forwardRef(
|
|
|
14248
14143
|
DropIndicator.displayName = "DropIndicator";
|
|
14249
14144
|
|
|
14250
14145
|
// src/ui/badge.tsx
|
|
14251
|
-
var
|
|
14146
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
14252
14147
|
var badgeVariants = cva(
|
|
14253
14148
|
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
14254
14149
|
{
|
|
@@ -14266,12 +14161,12 @@ var badgeVariants = cva(
|
|
|
14266
14161
|
}
|
|
14267
14162
|
);
|
|
14268
14163
|
function Badge({ className, variant, ...props }) {
|
|
14269
|
-
return /* @__PURE__ */ (0,
|
|
14164
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
14270
14165
|
}
|
|
14271
14166
|
|
|
14272
14167
|
// src/OhhwellsBridge.tsx
|
|
14273
|
-
var
|
|
14274
|
-
var
|
|
14168
|
+
var import_lucide_react17 = require("lucide-react");
|
|
14169
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
14275
14170
|
var PRIMARY3 = "#0885FE";
|
|
14276
14171
|
var IMAGE_FADE_MS = 300;
|
|
14277
14172
|
function runOpacityFade(el, onDone) {
|
|
@@ -14440,7 +14335,7 @@ function mountSchedulingWidget(anchorId, notifyOnConnect = false, scheduleId, be
|
|
|
14440
14335
|
const root = (0, import_client2.createRoot)(container);
|
|
14441
14336
|
(0, import_react_dom3.flushSync)(() => {
|
|
14442
14337
|
root.render(
|
|
14443
|
-
/* @__PURE__ */ (0,
|
|
14338
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
14444
14339
|
SchedulingWidget,
|
|
14445
14340
|
{
|
|
14446
14341
|
notifyOnConnect,
|
|
@@ -15121,7 +15016,7 @@ function EditGlowChrome({
|
|
|
15121
15016
|
hideHandle = false
|
|
15122
15017
|
}) {
|
|
15123
15018
|
const GAP = SELECTION_CHROME_GAP2;
|
|
15124
|
-
return /* @__PURE__ */ (0,
|
|
15019
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
15125
15020
|
"div",
|
|
15126
15021
|
{
|
|
15127
15022
|
ref: elRef,
|
|
@@ -15136,7 +15031,7 @@ function EditGlowChrome({
|
|
|
15136
15031
|
zIndex: 2147483646
|
|
15137
15032
|
},
|
|
15138
15033
|
children: [
|
|
15139
|
-
/* @__PURE__ */ (0,
|
|
15034
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15140
15035
|
"div",
|
|
15141
15036
|
{
|
|
15142
15037
|
style: {
|
|
@@ -15149,7 +15044,7 @@ function EditGlowChrome({
|
|
|
15149
15044
|
}
|
|
15150
15045
|
}
|
|
15151
15046
|
),
|
|
15152
|
-
reorderHrefKey && !hideHandle && /* @__PURE__ */ (0,
|
|
15047
|
+
reorderHrefKey && !hideHandle && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15153
15048
|
"div",
|
|
15154
15049
|
{
|
|
15155
15050
|
"data-ohw-drag-handle-container": "",
|
|
@@ -15161,7 +15056,7 @@ function EditGlowChrome({
|
|
|
15161
15056
|
transform: "translate(calc(-100% - 7px), -50%)",
|
|
15162
15057
|
pointerEvents: dragDisabled ? "none" : "auto"
|
|
15163
15058
|
},
|
|
15164
|
-
children: /* @__PURE__ */ (0,
|
|
15059
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15165
15060
|
DragHandle,
|
|
15166
15061
|
{
|
|
15167
15062
|
"aria-label": `Reorder ${reorderHrefKey}`,
|
|
@@ -15371,7 +15266,7 @@ function FloatingToolbar({
|
|
|
15371
15266
|
return () => ro.disconnect();
|
|
15372
15267
|
}, [showEditLink, activeCommands]);
|
|
15373
15268
|
const { top, left, transform } = calcToolbarPos(rect, parentScroll, measuredW);
|
|
15374
|
-
return /* @__PURE__ */ (0,
|
|
15269
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15375
15270
|
"div",
|
|
15376
15271
|
{
|
|
15377
15272
|
ref: setRefs,
|
|
@@ -15383,12 +15278,12 @@ function FloatingToolbar({
|
|
|
15383
15278
|
zIndex: 2147483647,
|
|
15384
15279
|
pointerEvents: "auto"
|
|
15385
15280
|
},
|
|
15386
|
-
children: /* @__PURE__ */ (0,
|
|
15387
|
-
TOOLBAR_GROUPS.map((btns, gi) => /* @__PURE__ */ (0,
|
|
15388
|
-
gi > 0 && /* @__PURE__ */ (0,
|
|
15281
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(CustomToolbar, { children: [
|
|
15282
|
+
TOOLBAR_GROUPS.map((btns, gi) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_react17.default.Fragment, { children: [
|
|
15283
|
+
gi > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CustomToolbarDivider, {}),
|
|
15389
15284
|
btns.map((btn) => {
|
|
15390
15285
|
const isActive = activeCommands.has(btn.cmd);
|
|
15391
|
-
return /* @__PURE__ */ (0,
|
|
15286
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15392
15287
|
CustomToolbarButton,
|
|
15393
15288
|
{
|
|
15394
15289
|
title: btn.title,
|
|
@@ -15397,7 +15292,7 @@ function FloatingToolbar({
|
|
|
15397
15292
|
e.preventDefault();
|
|
15398
15293
|
onCommand(btn.cmd);
|
|
15399
15294
|
},
|
|
15400
|
-
children: /* @__PURE__ */ (0,
|
|
15295
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15401
15296
|
"svg",
|
|
15402
15297
|
{
|
|
15403
15298
|
width: "16",
|
|
@@ -15418,7 +15313,7 @@ function FloatingToolbar({
|
|
|
15418
15313
|
);
|
|
15419
15314
|
})
|
|
15420
15315
|
] }, gi)),
|
|
15421
|
-
showEditLink ? /* @__PURE__ */ (0,
|
|
15316
|
+
showEditLink ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15422
15317
|
CustomToolbarButton,
|
|
15423
15318
|
{
|
|
15424
15319
|
type: "button",
|
|
@@ -15432,7 +15327,7 @@ function FloatingToolbar({
|
|
|
15432
15327
|
e.preventDefault();
|
|
15433
15328
|
e.stopPropagation();
|
|
15434
15329
|
},
|
|
15435
|
-
children: /* @__PURE__ */ (0,
|
|
15330
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react17.Link, { className: "size-4 shrink-0", "aria-hidden": true })
|
|
15436
15331
|
}
|
|
15437
15332
|
) : null
|
|
15438
15333
|
] })
|
|
@@ -15449,7 +15344,7 @@ function StateToggle({
|
|
|
15449
15344
|
states,
|
|
15450
15345
|
onStateChange
|
|
15451
15346
|
}) {
|
|
15452
|
-
return /* @__PURE__ */ (0,
|
|
15347
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15453
15348
|
ToggleGroup,
|
|
15454
15349
|
{
|
|
15455
15350
|
"data-ohw-state-toggle": "",
|
|
@@ -15463,7 +15358,7 @@ function StateToggle({
|
|
|
15463
15358
|
left: rect.right - 8,
|
|
15464
15359
|
transform: "translateX(-100%)"
|
|
15465
15360
|
},
|
|
15466
|
-
children: states.map((state) => /* @__PURE__ */ (0,
|
|
15361
|
+
children: states.map((state) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ToggleGroupItem, { value: state, size: "sm", children: state }, state))
|
|
15467
15362
|
}
|
|
15468
15363
|
);
|
|
15469
15364
|
}
|
|
@@ -15479,9 +15374,9 @@ var OHW_LOADER_STYLE = {
|
|
|
15479
15374
|
justifyContent: "center"
|
|
15480
15375
|
};
|
|
15481
15376
|
function OhwLoaderSpinner() {
|
|
15482
|
-
return /* @__PURE__ */ (0,
|
|
15483
|
-
/* @__PURE__ */ (0,
|
|
15484
|
-
/* @__PURE__ */ (0,
|
|
15377
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("svg", { width: "28", height: "28", viewBox: "0 0 28 28", fill: "none", "aria-hidden": true, children: [
|
|
15378
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("circle", { cx: "14", cy: "14", r: "11", stroke: "#E7E5E4", strokeWidth: "3" }),
|
|
15379
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15485
15380
|
"circle",
|
|
15486
15381
|
{
|
|
15487
15382
|
cx: "14",
|
|
@@ -15491,7 +15386,7 @@ function OhwLoaderSpinner() {
|
|
|
15491
15386
|
strokeWidth: "3",
|
|
15492
15387
|
strokeDasharray: "17 52",
|
|
15493
15388
|
strokeLinecap: "round",
|
|
15494
|
-
children: /* @__PURE__ */ (0,
|
|
15389
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
15495
15390
|
"animateTransform",
|
|
15496
15391
|
{
|
|
15497
15392
|
attributeName: "transform",
|
|
@@ -15587,6 +15482,70 @@ function OhhwellsBridge() {
|
|
|
15587
15482
|
const hoveredImageHasTextOverlapRef = (0, import_react17.useRef)(false);
|
|
15588
15483
|
const dragOverElRef = (0, import_react17.useRef)(null);
|
|
15589
15484
|
const [mediaHover, setMediaHover] = (0, import_react17.useState)(null);
|
|
15485
|
+
const [selectedMedia, setSelectedMedia] = (0, import_react17.useState)(null);
|
|
15486
|
+
const selectedMediaElRef = (0, import_react17.useRef)(null);
|
|
15487
|
+
const clearMediaSelection = (0, import_react17.useCallback)(() => {
|
|
15488
|
+
const prev = selectedMediaElRef.current;
|
|
15489
|
+
selectedMediaElRef.current = null;
|
|
15490
|
+
setSelectedMedia(null);
|
|
15491
|
+
const sectionEl = prev?.closest("[data-ohw-section]") ?? null;
|
|
15492
|
+
if (sectionEl) {
|
|
15493
|
+
postToParentRef.current({
|
|
15494
|
+
type: "ow:section-selected",
|
|
15495
|
+
sectionId: sectionEl.dataset.ohwSection ?? null,
|
|
15496
|
+
sectionLabel: sectionEl.dataset.ohwSectionLabel ?? titleCaseSectionId(sectionEl.dataset.ohwSection ?? ""),
|
|
15497
|
+
key: null
|
|
15498
|
+
});
|
|
15499
|
+
}
|
|
15500
|
+
}, []);
|
|
15501
|
+
const clearMediaSelectionRef = (0, import_react17.useRef)(clearMediaSelection);
|
|
15502
|
+
clearMediaSelectionRef.current = clearMediaSelection;
|
|
15503
|
+
const selectMediaElement = (0, import_react17.useCallback)((el) => {
|
|
15504
|
+
const r2 = el.getBoundingClientRect();
|
|
15505
|
+
const video = el.dataset.ohwEditable === "video" ? el.querySelector("video") : null;
|
|
15506
|
+
selectedMediaElRef.current = el;
|
|
15507
|
+
setSelectedMedia({
|
|
15508
|
+
key: el.dataset.ohwKey ?? "",
|
|
15509
|
+
rect: { top: r2.top, left: r2.left, width: r2.width, height: r2.height },
|
|
15510
|
+
elementType: el.dataset.ohwEditable ?? "image",
|
|
15511
|
+
hasTextOverlap: false,
|
|
15512
|
+
isDragOver: false,
|
|
15513
|
+
...video ? { videoAutoplay: video.autoplay, videoMuted: video.muted } : {}
|
|
15514
|
+
});
|
|
15515
|
+
const sectionEl = el.closest("[data-ohw-section]");
|
|
15516
|
+
aiSectionApiRef.current?.selectFromElement(el, { report: false });
|
|
15517
|
+
postToParentRef.current({
|
|
15518
|
+
type: "ow:section-selected",
|
|
15519
|
+
sectionId: sectionEl?.dataset.ohwSection ?? null,
|
|
15520
|
+
sectionLabel: sectionEl ? sectionEl.dataset.ohwSectionLabel ?? titleCaseSectionId(sectionEl.dataset.ohwSection ?? "") : null,
|
|
15521
|
+
key: el.dataset.ohwKey ?? null,
|
|
15522
|
+
// Display name for the pill — the raw key prettifies into fragments ("Img"); the
|
|
15523
|
+
// bridge knows what the node IS, so it names it.
|
|
15524
|
+
keyLabel: el.dataset.ohwEditable === "video" ? "Video" : "Image"
|
|
15525
|
+
});
|
|
15526
|
+
}, []);
|
|
15527
|
+
const selectMediaElementRef = (0, import_react17.useRef)(selectMediaElement);
|
|
15528
|
+
selectMediaElementRef.current = selectMediaElement;
|
|
15529
|
+
(0, import_react17.useEffect)(() => {
|
|
15530
|
+
if (!selectedMedia) return;
|
|
15531
|
+
const update = () => {
|
|
15532
|
+
const el = selectedMediaElRef.current;
|
|
15533
|
+
if (!el || !el.isConnected) {
|
|
15534
|
+
clearMediaSelection();
|
|
15535
|
+
return;
|
|
15536
|
+
}
|
|
15537
|
+
const r2 = el.getBoundingClientRect();
|
|
15538
|
+
setSelectedMedia(
|
|
15539
|
+
(prev) => prev ? { ...prev, rect: { top: r2.top, left: r2.left, width: r2.width, height: r2.height } } : prev
|
|
15540
|
+
);
|
|
15541
|
+
};
|
|
15542
|
+
window.addEventListener("scroll", update, true);
|
|
15543
|
+
window.addEventListener("resize", update);
|
|
15544
|
+
return () => {
|
|
15545
|
+
window.removeEventListener("scroll", update, true);
|
|
15546
|
+
window.removeEventListener("resize", update);
|
|
15547
|
+
};
|
|
15548
|
+
}, [selectedMedia !== null]);
|
|
15590
15549
|
const [carouselHover, setCarouselHover] = (0, import_react17.useState)(null);
|
|
15591
15550
|
const [uploadingRects, setUploadingRects] = (0, import_react17.useState)({});
|
|
15592
15551
|
const hoveredGapRef = (0, import_react17.useRef)(null);
|
|
@@ -16983,6 +16942,25 @@ function OhhwellsBridge() {
|
|
|
16983
16942
|
setLogoSizeDraft(null);
|
|
16984
16943
|
deselectRef.current();
|
|
16985
16944
|
}, []);
|
|
16945
|
+
(0, import_react17.useEffect)(() => {
|
|
16946
|
+
const session = floatingPanel && floatingPanel.kind === "logo-size" ? floatingPanel : null;
|
|
16947
|
+
if (!session || !logoSizeDraft) {
|
|
16948
|
+
postToParentRef.current({ type: "ow:logo-size-panel", open: false });
|
|
16949
|
+
return;
|
|
16950
|
+
}
|
|
16951
|
+
postToParentRef.current({
|
|
16952
|
+
type: "ow:logo-size-panel",
|
|
16953
|
+
open: true,
|
|
16954
|
+
title: session.title,
|
|
16955
|
+
context: session.context ?? "",
|
|
16956
|
+
placement: session.placement,
|
|
16957
|
+
viewport: editorViewport,
|
|
16958
|
+
mobileFollowing: logoSizeDraft.mobileFollowing,
|
|
16959
|
+
sizePx: editorViewport === "mobile" && !logoSizeDraft.mobileFollowing ? logoSizeDraft.mobilePx : logoSizeDraft.desktopPx,
|
|
16960
|
+
min: LOGO_SIZE_MIN,
|
|
16961
|
+
max: LOGO_SIZE_MAX
|
|
16962
|
+
});
|
|
16963
|
+
}, [floatingPanel, logoSizeDraft, editorViewport]);
|
|
16986
16964
|
const persistLogoSizeDraft = (0, import_react17.useCallback)(
|
|
16987
16965
|
(placement, draft) => {
|
|
16988
16966
|
const desktopKey = LOGO_SIZE_DESKTOP_KEYS[placement];
|
|
@@ -17719,6 +17697,9 @@ function OhhwellsBridge() {
|
|
|
17719
17697
|
)) {
|
|
17720
17698
|
return;
|
|
17721
17699
|
}
|
|
17700
|
+
if (selectedMediaElRef.current && !selectedMediaElRef.current.contains(target) && !target.closest("[data-ohw-media-overlay], [data-ohw-edit-chrome], [data-ohw-item-interaction]")) {
|
|
17701
|
+
clearMediaSelectionRef.current();
|
|
17702
|
+
}
|
|
17722
17703
|
{
|
|
17723
17704
|
const formEl = getFormElement(target);
|
|
17724
17705
|
const onSuccessText = target.closest(`[${SUCCESS_TEXT_ATTR}]`);
|
|
@@ -17866,8 +17847,11 @@ function OhhwellsBridge() {
|
|
|
17866
17847
|
if (isMediaEditable(editable) && !buttonOnMedia) {
|
|
17867
17848
|
e.preventDefault();
|
|
17868
17849
|
e.stopPropagation();
|
|
17869
|
-
|
|
17870
|
-
|
|
17850
|
+
if (selectedMediaElRef.current === editable) {
|
|
17851
|
+
postToParentRef.current({ type: "ow:image-pick", key: editable.dataset.ohwKey ?? "", elementType: editable.dataset.ohwEditable ?? "image" });
|
|
17852
|
+
} else {
|
|
17853
|
+
selectMediaElementRef.current(editable);
|
|
17854
|
+
}
|
|
17871
17855
|
return;
|
|
17872
17856
|
}
|
|
17873
17857
|
const hrefLookupTarget = buttonOnMedia ? clickedButton : editable;
|
|
@@ -19363,6 +19347,10 @@ function OhhwellsBridge() {
|
|
|
19363
19347
|
const handleKeyDown = (e) => {
|
|
19364
19348
|
if (e.key === "Escape" && document.querySelector("[data-ohw-section-picker]")) return;
|
|
19365
19349
|
if (e.key === "Escape" && document.querySelector("[data-ohw-more-menu]")) return;
|
|
19350
|
+
if (e.key === "Escape" && selectedMediaElRef.current) {
|
|
19351
|
+
clearMediaSelectionRef.current();
|
|
19352
|
+
return;
|
|
19353
|
+
}
|
|
19366
19354
|
if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "a" && activeElRef.current) {
|
|
19367
19355
|
e.preventDefault();
|
|
19368
19356
|
selectAllTextInEditable(activeElRef.current);
|
|
@@ -20147,7 +20135,7 @@ function OhhwellsBridge() {
|
|
|
20147
20135
|
postToParent2({
|
|
20148
20136
|
type: "ow:ready",
|
|
20149
20137
|
version: "1",
|
|
20150
|
-
bridgeVersion: "0.1.
|
|
20138
|
+
bridgeVersion: "0.1.67",
|
|
20151
20139
|
path: pathname,
|
|
20152
20140
|
nodes: collectEditableNodes(editContentRef.current),
|
|
20153
20141
|
sections
|
|
@@ -20201,6 +20189,44 @@ function OhhwellsBridge() {
|
|
|
20201
20189
|
if (el) setToolbarRect(getEditMeasureEl(el).getBoundingClientRect());
|
|
20202
20190
|
refreshActiveCommandsRef.current();
|
|
20203
20191
|
}, []);
|
|
20192
|
+
(0, import_react17.useEffect)(() => {
|
|
20193
|
+
const session = floatingPanel && floatingPanel.kind === "logo-size" ? floatingPanel : null;
|
|
20194
|
+
if (!session || !logoSizeDraft) return;
|
|
20195
|
+
const onPanelAction = (e) => {
|
|
20196
|
+
const type = e.data?.type;
|
|
20197
|
+
if (type === "ow:logo-size-close") {
|
|
20198
|
+
closeFloatingPanelAndDeselect();
|
|
20199
|
+
return;
|
|
20200
|
+
}
|
|
20201
|
+
if (type === "ow:logo-size-update-everywhere") {
|
|
20202
|
+
postToParentRef.current({ type: "ow:open-logo-settings", ...readLogoIdentityFromDom() });
|
|
20203
|
+
return;
|
|
20204
|
+
}
|
|
20205
|
+
if (type === "ow:logo-size-customize-mobile" || type === "ow:logo-size-reset-mobile") {
|
|
20206
|
+
const following = type === "ow:logo-size-reset-mobile";
|
|
20207
|
+
const next2 = {
|
|
20208
|
+
...logoSizeDraft,
|
|
20209
|
+
mobileFollowing: following,
|
|
20210
|
+
mobilePx: logoSizeDraft.desktopPx
|
|
20211
|
+
};
|
|
20212
|
+
setLogoSizeDraft(next2);
|
|
20213
|
+
persistLogoSizeDraft(session.placement, next2);
|
|
20214
|
+
return;
|
|
20215
|
+
}
|
|
20216
|
+
if (type !== "ow:logo-size-set") return;
|
|
20217
|
+
const px = Number(e.data.px);
|
|
20218
|
+
if (!Number.isFinite(px)) return;
|
|
20219
|
+
const next = editorViewport === "mobile" ? { ...logoSizeDraft, mobilePx: px, mobileFollowing: false } : {
|
|
20220
|
+
...logoSizeDraft,
|
|
20221
|
+
desktopPx: px,
|
|
20222
|
+
mobilePx: logoSizeDraft.mobileFollowing ? px : logoSizeDraft.mobilePx
|
|
20223
|
+
};
|
|
20224
|
+
setLogoSizeDraft(next);
|
|
20225
|
+
persistLogoSizeDraft(session.placement, next);
|
|
20226
|
+
};
|
|
20227
|
+
window.addEventListener("message", onPanelAction);
|
|
20228
|
+
return () => window.removeEventListener("message", onPanelAction);
|
|
20229
|
+
}, [floatingPanel, logoSizeDraft, editorViewport, persistLogoSizeDraft, closeFloatingPanelAndDeselect]);
|
|
20204
20230
|
const handleStateChange = (0, import_react17.useCallback)((state) => {
|
|
20205
20231
|
if (!activeStateElRef.current) return;
|
|
20206
20232
|
const el = activeStateElRef.current;
|
|
@@ -20499,11 +20525,22 @@ function OhhwellsBridge() {
|
|
|
20499
20525
|
const showEditLink = toolbarShowEditLink;
|
|
20500
20526
|
const currentSections = sectionsByPath[pathname] ?? [];
|
|
20501
20527
|
linkPopoverOpenRef.current = linkPopover !== null;
|
|
20528
|
+
const handleMediaSelect = (0, import_react17.useCallback)((key) => {
|
|
20529
|
+
const el = hoveredImageRef.current?.dataset.ohwKey === key ? hoveredImageRef.current : Array.from(document.querySelectorAll(MEDIA_SELECTOR)).find(
|
|
20530
|
+
(m) => (m.dataset.ohwKey ?? "") === key
|
|
20531
|
+
) ?? null;
|
|
20532
|
+
if (!el) return;
|
|
20533
|
+
selectMediaElementRef.current(el);
|
|
20534
|
+
}, []);
|
|
20502
20535
|
const handleMediaReplace = (0, import_react17.useCallback)(
|
|
20503
20536
|
(key) => {
|
|
20504
|
-
postToParent2({
|
|
20537
|
+
postToParent2({
|
|
20538
|
+
type: "ow:image-pick",
|
|
20539
|
+
key,
|
|
20540
|
+
elementType: mediaHover?.elementType ?? selectedMedia?.elementType ?? "image"
|
|
20541
|
+
});
|
|
20505
20542
|
},
|
|
20506
|
-
[postToParent2, mediaHover?.elementType]
|
|
20543
|
+
[postToParent2, mediaHover?.elementType, selectedMedia?.elementType]
|
|
20507
20544
|
);
|
|
20508
20545
|
const handleEditCarousel = (0, import_react17.useCallback)(
|
|
20509
20546
|
(key) => {
|
|
@@ -20541,19 +20578,19 @@ function OhhwellsBridge() {
|
|
|
20541
20578
|
},
|
|
20542
20579
|
[postToParent2]
|
|
20543
20580
|
);
|
|
20544
|
-
return /* @__PURE__ */ (0,
|
|
20545
|
-
/* @__PURE__ */ (0,
|
|
20546
|
-
/* @__PURE__ */ (0,
|
|
20581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
|
|
20582
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { id: "ohw-loader", suppressHydrationWarning: true, style: { ...OHW_LOADER_STYLE, display: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(OhwLoaderSpinner, {}) }),
|
|
20583
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("script", { suppressHydrationWarning: true, dangerouslySetInnerHTML: { __html: OHW_LOADER_PREHYDRATE_SCRIPT } }),
|
|
20547
20584
|
bridgeRoot ? (0, import_react_dom4.createPortal)(
|
|
20548
|
-
/* @__PURE__ */ (0,
|
|
20549
|
-
/* @__PURE__ */ (0,
|
|
20550
|
-
isEditMode && /* @__PURE__ */ (0,
|
|
20551
|
-
isSectionDragging && sectionDropSlots.map((slot, i) => /* @__PURE__ */ (0,
|
|
20585
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
|
|
20586
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { ref: attachVisibleViewport, "data-ohw-visible-viewport": "", "aria-hidden": true }),
|
|
20587
|
+
isEditMode && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(AiSectionOverlay, { postToParent: postToParent2, apiRef: aiSectionApiRef }),
|
|
20588
|
+
isSectionDragging && sectionDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20552
20589
|
"div",
|
|
20553
20590
|
{
|
|
20554
20591
|
className: "pointer-events-none fixed z-2147483646",
|
|
20555
20592
|
style: { left: slot.left, top: slot.y, width: slot.width, height: 3, transform: "translateY(-50%)" },
|
|
20556
|
-
children: /* @__PURE__ */ (0,
|
|
20593
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20557
20594
|
DropIndicator,
|
|
20558
20595
|
{
|
|
20559
20596
|
direction: "horizontal",
|
|
@@ -20564,7 +20601,7 @@ function OhhwellsBridge() {
|
|
|
20564
20601
|
},
|
|
20565
20602
|
`section-drop-${slot.insertIndex}-${i}`
|
|
20566
20603
|
)),
|
|
20567
|
-
Object.entries(uploadingRects).map(([key, { rect, fadingOut }]) => /* @__PURE__ */ (0,
|
|
20604
|
+
Object.entries(uploadingRects).map(([key, { rect, fadingOut }]) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20568
20605
|
MediaOverlay,
|
|
20569
20606
|
{
|
|
20570
20607
|
hover: { key, rect, elementType: "image", isDragOver: false, hasTextOverlap: false },
|
|
@@ -20575,20 +20612,33 @@ function OhhwellsBridge() {
|
|
|
20575
20612
|
},
|
|
20576
20613
|
`uploading-${key}`
|
|
20577
20614
|
)),
|
|
20578
|
-
mediaHover && !(mediaHover.key in uploadingRects) && /* @__PURE__ */ (0,
|
|
20615
|
+
mediaHover && !(mediaHover.key in uploadingRects) && mediaHover.key !== selectedMedia?.key && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20579
20616
|
MediaOverlay,
|
|
20580
20617
|
{
|
|
20581
20618
|
hover: mediaHover,
|
|
20582
20619
|
isUploading: false,
|
|
20583
20620
|
onReplace: handleMediaReplace,
|
|
20621
|
+
onSelect: handleMediaSelect,
|
|
20622
|
+
onVideoSettingsChange: handleVideoSettingsChange
|
|
20623
|
+
}
|
|
20624
|
+
),
|
|
20625
|
+
selectedMedia && !(selectedMedia.key in uploadingRects) && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20626
|
+
MediaOverlay,
|
|
20627
|
+
{
|
|
20628
|
+
hover: selectedMedia,
|
|
20629
|
+
selected: true,
|
|
20630
|
+
hovered: mediaHover?.key === selectedMedia.key,
|
|
20631
|
+
isUploading: false,
|
|
20632
|
+
onReplace: handleMediaReplace,
|
|
20633
|
+
onSelect: handleMediaSelect,
|
|
20584
20634
|
onVideoSettingsChange: handleVideoSettingsChange
|
|
20585
20635
|
}
|
|
20586
20636
|
),
|
|
20587
|
-
carouselHover && !linkPopover && !isItemDragging && /* @__PURE__ */ (0,
|
|
20588
|
-
siblingHintRect && !linkPopover && !isItemDragging && siblingHintRects.length === 0 && /* @__PURE__ */ (0,
|
|
20589
|
-
siblingHintRects.length > 0 && !linkPopover && !isItemDragging && siblingHintRects.map((rect, i) => /* @__PURE__ */ (0,
|
|
20590
|
-
isItemDragging && draggedItemRect && selectedElRef.current !== footerDragRef.current?.draggedEl && selectedElRef.current !== navDragRef.current?.draggedEl && /* @__PURE__ */ (0,
|
|
20591
|
-
isItemDragging && footerDropSlots.map((slot, i) => /* @__PURE__ */ (0,
|
|
20637
|
+
carouselHover && !linkPopover && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CarouselOverlay, { hover: carouselHover, onEdit: handleEditCarousel }),
|
|
20638
|
+
siblingHintRect && !linkPopover && !isItemDragging && siblingHintRects.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: siblingHintRect, state: "sibling-hint" }),
|
|
20639
|
+
siblingHintRects.length > 0 && !linkPopover && !isItemDragging && siblingHintRects.map((rect, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect, state: "sibling-hint" }, `sibling-hint-${i}`)),
|
|
20640
|
+
isItemDragging && draggedItemRect && selectedElRef.current !== footerDragRef.current?.draggedEl && selectedElRef.current !== navDragRef.current?.draggedEl && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: draggedItemRect, state: "dragging" }),
|
|
20641
|
+
isItemDragging && footerDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20592
20642
|
"div",
|
|
20593
20643
|
{
|
|
20594
20644
|
className: "pointer-events-none fixed z-2147483646",
|
|
@@ -20598,7 +20648,7 @@ function OhhwellsBridge() {
|
|
|
20598
20648
|
width: slot.width,
|
|
20599
20649
|
height: slot.height
|
|
20600
20650
|
},
|
|
20601
|
-
children: /* @__PURE__ */ (0,
|
|
20651
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20602
20652
|
DropIndicator,
|
|
20603
20653
|
{
|
|
20604
20654
|
direction: slot.direction,
|
|
@@ -20609,7 +20659,7 @@ function OhhwellsBridge() {
|
|
|
20609
20659
|
},
|
|
20610
20660
|
`footer-drop-${slot.direction}-${slot.columnIndex}-${slot.insertIndex}-${i}`
|
|
20611
20661
|
)),
|
|
20612
|
-
isItemDragging && navDropSlots.map((slot, i) => /* @__PURE__ */ (0,
|
|
20662
|
+
isItemDragging && navDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20613
20663
|
"div",
|
|
20614
20664
|
{
|
|
20615
20665
|
className: "pointer-events-none fixed z-2147483646",
|
|
@@ -20619,7 +20669,7 @@ function OhhwellsBridge() {
|
|
|
20619
20669
|
width: slot.width,
|
|
20620
20670
|
height: slot.height
|
|
20621
20671
|
},
|
|
20622
|
-
children: /* @__PURE__ */ (0,
|
|
20672
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20623
20673
|
DropIndicator,
|
|
20624
20674
|
{
|
|
20625
20675
|
direction: slot.direction,
|
|
@@ -20630,10 +20680,10 @@ function OhhwellsBridge() {
|
|
|
20630
20680
|
},
|
|
20631
20681
|
`nav-drop-${slot.direction}-${slot.parentId ?? "root"}-${slot.insertIndex}-${i}`
|
|
20632
20682
|
)),
|
|
20633
|
-
hoveredNavContainerRect && (toolbarVariant !== "select-frame" || isFooterFrameSelection) && !linkPopover && !isItemDragging && /* @__PURE__ */ (0,
|
|
20634
|
-
hoveredItemRect && !linkPopover && !hoveredNavContainerRect && !isItemDragging && hoveredItemElRef.current !== selectedElRef.current && /* @__PURE__ */ (0,
|
|
20635
|
-
hoveredTextRect && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ (0,
|
|
20636
|
-
formPickRect && !isItemDragging && /* @__PURE__ */ (0,
|
|
20683
|
+
hoveredNavContainerRect && (toolbarVariant !== "select-frame" || isFooterFrameSelection) && !linkPopover && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: hoveredNavContainerRect, state: "hover" }),
|
|
20684
|
+
hoveredItemRect && !linkPopover && !hoveredNavContainerRect && !isItemDragging && hoveredItemElRef.current !== selectedElRef.current && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: hoveredItemRect, state: "hover" }),
|
|
20685
|
+
hoveredTextRect && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(ItemInteractionLayer, { rect: hoveredTextRect, state: "hover" }),
|
|
20686
|
+
formPickRect && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20637
20687
|
ItemInteractionLayer,
|
|
20638
20688
|
{
|
|
20639
20689
|
rect: formPickRect,
|
|
@@ -20641,13 +20691,13 @@ function OhhwellsBridge() {
|
|
|
20641
20691
|
itemDragSurface: false,
|
|
20642
20692
|
toolbarAlign: "left",
|
|
20643
20693
|
chromeGap: 24,
|
|
20644
|
-
toolbar: fieldPickRect ? void 0 : /* @__PURE__ */ (0,
|
|
20694
|
+
toolbar: fieldPickRect ? void 0 : /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
20645
20695
|
"div",
|
|
20646
20696
|
{
|
|
20647
20697
|
"data-ohw-form-toolbar": "",
|
|
20648
20698
|
className: "pointer-events-auto flex items-center gap-0.5 whitespace-nowrap rounded-lg border border-border bg-background p-1 shadow-md",
|
|
20649
20699
|
children: [
|
|
20650
|
-
/* @__PURE__ */ (0,
|
|
20700
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20651
20701
|
"button",
|
|
20652
20702
|
{
|
|
20653
20703
|
type: "button",
|
|
@@ -20655,11 +20705,11 @@ function OhhwellsBridge() {
|
|
|
20655
20705
|
className: "flex h-7 w-7 items-center justify-center rounded-md text-foreground transition-colors hover:bg-muted/80",
|
|
20656
20706
|
onClick: () => setFieldTypePickerOpen((open) => !open),
|
|
20657
20707
|
"data-ohw-add-field": "",
|
|
20658
|
-
children: /* @__PURE__ */ (0,
|
|
20708
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react17.Plus, { size: 15, "aria-hidden": true })
|
|
20659
20709
|
}
|
|
20660
20710
|
),
|
|
20661
|
-
/* @__PURE__ */ (0,
|
|
20662
|
-
/* @__PURE__ */ (0,
|
|
20711
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "mx-0.5 h-5 w-px bg-border" }),
|
|
20712
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
20663
20713
|
"button",
|
|
20664
20714
|
{
|
|
20665
20715
|
type: "button",
|
|
@@ -20674,11 +20724,11 @@ function OhhwellsBridge() {
|
|
|
20674
20724
|
});
|
|
20675
20725
|
},
|
|
20676
20726
|
children: [
|
|
20677
|
-
/* @__PURE__ */ (0,
|
|
20727
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react17.Settings, { size: 14, "aria-hidden": true }),
|
|
20678
20728
|
"Form settings",
|
|
20679
20729
|
formPickCount ? (
|
|
20680
20730
|
// Counter pill, per the design — not a text suffix.
|
|
20681
|
-
/* @__PURE__ */ (0,
|
|
20731
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20682
20732
|
"span",
|
|
20683
20733
|
{
|
|
20684
20734
|
"data-ohw-form-count": "",
|
|
@@ -20690,8 +20740,8 @@ function OhhwellsBridge() {
|
|
|
20690
20740
|
]
|
|
20691
20741
|
}
|
|
20692
20742
|
),
|
|
20693
|
-
/* @__PURE__ */ (0,
|
|
20694
|
-
/* @__PURE__ */ (0,
|
|
20743
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "mx-0.5 h-5 w-px bg-border" }),
|
|
20744
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex items-center rounded-md bg-muted/70 p-0.5", children: ["default", "success"].map((state) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20695
20745
|
"button",
|
|
20696
20746
|
{
|
|
20697
20747
|
type: "button",
|
|
@@ -20721,7 +20771,7 @@ function OhhwellsBridge() {
|
|
|
20721
20771
|
)
|
|
20722
20772
|
}
|
|
20723
20773
|
),
|
|
20724
|
-
formHoverRect && !isItemDragging && /* @__PURE__ */ (0,
|
|
20774
|
+
formHoverRect && !isItemDragging && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20725
20775
|
ItemInteractionLayer,
|
|
20726
20776
|
{
|
|
20727
20777
|
rect: formHoverRect,
|
|
@@ -20729,7 +20779,7 @@ function OhhwellsBridge() {
|
|
|
20729
20779
|
chromeGap: formHoverElRef.current && getFieldWrapper(formHoverElRef.current) ? 8 : 24
|
|
20730
20780
|
}
|
|
20731
20781
|
),
|
|
20732
|
-
fieldPickRect && fieldPickState && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ (0,
|
|
20782
|
+
fieldPickRect && fieldPickState && !isItemDragging && toolbarVariant !== "rich-text" && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20733
20783
|
ItemInteractionLayer,
|
|
20734
20784
|
{
|
|
20735
20785
|
rect: fieldPickRect,
|
|
@@ -20741,7 +20791,7 @@ function OhhwellsBridge() {
|
|
|
20741
20791
|
dragHandleLabel: "Reorder field",
|
|
20742
20792
|
onDragHandleDragStart: handleFieldDragStart,
|
|
20743
20793
|
onDragHandleDragEnd: handleFieldDragEnd,
|
|
20744
|
-
toolbar: /* @__PURE__ */ (0,
|
|
20794
|
+
toolbar: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20745
20795
|
FormFieldToolbar,
|
|
20746
20796
|
{
|
|
20747
20797
|
type: fieldPickState.type,
|
|
@@ -20754,12 +20804,12 @@ function OhhwellsBridge() {
|
|
|
20754
20804
|
)
|
|
20755
20805
|
}
|
|
20756
20806
|
),
|
|
20757
|
-
fieldDragging ? fieldDropSlots.map((slot, i) => /* @__PURE__ */ (0,
|
|
20807
|
+
fieldDragging ? fieldDropSlots.map((slot, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20758
20808
|
"div",
|
|
20759
20809
|
{
|
|
20760
20810
|
className: "pointer-events-none fixed z-[2147483644]",
|
|
20761
20811
|
style: { top: slot.top, left: slot.left, width: slot.width },
|
|
20762
|
-
children: /* @__PURE__ */ (0,
|
|
20812
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20763
20813
|
DropIndicator,
|
|
20764
20814
|
{
|
|
20765
20815
|
direction: "horizontal",
|
|
@@ -20770,16 +20820,16 @@ function OhhwellsBridge() {
|
|
|
20770
20820
|
},
|
|
20771
20821
|
`field-drop-${i}`
|
|
20772
20822
|
)) : null,
|
|
20773
|
-
fieldTypePickerOpen && formPickRect && /* @__PURE__ */ (0,
|
|
20823
|
+
fieldTypePickerOpen && formPickRect && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20774
20824
|
"div",
|
|
20775
20825
|
{
|
|
20776
20826
|
className: "pointer-events-none fixed z-[2147483645]",
|
|
20777
20827
|
style: { top: formPickRect.top + 16, left: formPickRect.left + 24 },
|
|
20778
|
-
children: /* @__PURE__ */ (0,
|
|
20828
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FieldTypePicker, { onPick: handleAddField })
|
|
20779
20829
|
}
|
|
20780
20830
|
),
|
|
20781
|
-
toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isNavbarLinksContainer2(selectedElRef.current) && /* @__PURE__ */ (0,
|
|
20782
|
-
toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isFooterLinksContainer(selectedElRef.current) && /* @__PURE__ */ (0,
|
|
20831
|
+
toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isNavbarLinksContainer2(selectedElRef.current) && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(NavbarContainerChrome, { rect: toolbarRect, onAdd: handleAddTopLevelNavItem }),
|
|
20832
|
+
toolbarVariant === "select-frame" && toolbarRect && !linkPopover && !isItemDragging && !isFooterFrameSelection && selectedElRef.current && isFooterLinksContainer(selectedElRef.current) && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20783
20833
|
FooterContainerChrome,
|
|
20784
20834
|
{
|
|
20785
20835
|
rect: toolbarRect,
|
|
@@ -20787,7 +20837,7 @@ function OhhwellsBridge() {
|
|
|
20787
20837
|
addDisabled: !canAddFooterColumn()
|
|
20788
20838
|
}
|
|
20789
20839
|
),
|
|
20790
|
-
toolbarRect && !linkPopover && (toolbarVariant === "link-action" || toolbarVariant === "select-frame" || toolbarVariant === "logo") && /* @__PURE__ */ (0,
|
|
20840
|
+
toolbarRect && !linkPopover && (toolbarVariant === "link-action" || toolbarVariant === "select-frame" || toolbarVariant === "logo") && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20791
20841
|
ItemInteractionLayer,
|
|
20792
20842
|
{
|
|
20793
20843
|
rect: isItemDragging && draggedItemRect && (footerDragRef.current?.wasSelected || navDragRef.current?.wasSelected) ? draggedItemRect : toolbarRect,
|
|
@@ -20802,7 +20852,7 @@ function OhhwellsBridge() {
|
|
|
20802
20852
|
onItemPointerDown: toolbarVariant === "logo" ? void 0 : handleItemChromePointerDown,
|
|
20803
20853
|
onItemClick: toolbarVariant === "logo" ? void 0 : handleItemChromeClick,
|
|
20804
20854
|
itemDragSurface: toolbarVariant !== "logo" && !isFooterFrameSelection,
|
|
20805
|
-
toolbar: toolbarVariant === "link-action" && !isItemDragging || toolbarVariant === "select-frame" && (isFooterFrameSelection || selectedIsSocialsRow) && !isItemDragging ? /* @__PURE__ */ (0,
|
|
20855
|
+
toolbar: toolbarVariant === "link-action" && !isItemDragging || toolbarVariant === "select-frame" && (isFooterFrameSelection || selectedIsSocialsRow) && !isItemDragging ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20806
20856
|
ItemActionToolbar,
|
|
20807
20857
|
{
|
|
20808
20858
|
onEditLink: openLinkPopoverForSelected,
|
|
@@ -20838,8 +20888,8 @@ function OhhwellsBridge() {
|
|
|
20838
20888
|
) : void 0
|
|
20839
20889
|
}
|
|
20840
20890
|
),
|
|
20841
|
-
toolbarRect && toolbarVariant === "rich-text" && !linkPopover && /* @__PURE__ */ (0,
|
|
20842
|
-
/* @__PURE__ */ (0,
|
|
20891
|
+
toolbarRect && toolbarVariant === "rich-text" && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
|
|
20892
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20843
20893
|
EditGlowChrome,
|
|
20844
20894
|
{
|
|
20845
20895
|
rect: toolbarRect,
|
|
@@ -20849,7 +20899,7 @@ function OhhwellsBridge() {
|
|
|
20849
20899
|
hideHandle: isItemDragging
|
|
20850
20900
|
}
|
|
20851
20901
|
),
|
|
20852
|
-
/* @__PURE__ */ (0,
|
|
20902
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20853
20903
|
FloatingToolbar,
|
|
20854
20904
|
{
|
|
20855
20905
|
rect: toolbarRect,
|
|
@@ -20862,7 +20912,7 @@ function OhhwellsBridge() {
|
|
|
20862
20912
|
}
|
|
20863
20913
|
)
|
|
20864
20914
|
] }),
|
|
20865
|
-
maxBadge && /* @__PURE__ */ (0,
|
|
20915
|
+
maxBadge && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
20866
20916
|
"div",
|
|
20867
20917
|
{
|
|
20868
20918
|
"data-ohw-max-badge": "",
|
|
@@ -20888,7 +20938,7 @@ function OhhwellsBridge() {
|
|
|
20888
20938
|
]
|
|
20889
20939
|
}
|
|
20890
20940
|
),
|
|
20891
|
-
toggleState && !linkPopover && /* @__PURE__ */ (0,
|
|
20941
|
+
toggleState && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20892
20942
|
StateToggle,
|
|
20893
20943
|
{
|
|
20894
20944
|
rect: toggleState.rect,
|
|
@@ -20897,15 +20947,15 @@ function OhhwellsBridge() {
|
|
|
20897
20947
|
onStateChange: handleStateChange
|
|
20898
20948
|
}
|
|
20899
20949
|
),
|
|
20900
|
-
sectionGap && !linkPopover && /* @__PURE__ */ (0,
|
|
20950
|
+
sectionGap && !linkPopover && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
20901
20951
|
"div",
|
|
20902
20952
|
{
|
|
20903
20953
|
"data-ohw-section-insert-line": "",
|
|
20904
20954
|
className: "fixed left-0 w-full z-2147483646 flex items-center pointer-events-none",
|
|
20905
20955
|
style: { top: sectionGap.y, transform: "translateY(-50%)" },
|
|
20906
20956
|
children: [
|
|
20907
|
-
/* @__PURE__ */ (0,
|
|
20908
|
-
/* @__PURE__ */ (0,
|
|
20957
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex-1 bg-primary", style: { height: 3 } }),
|
|
20958
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20909
20959
|
Badge,
|
|
20910
20960
|
{
|
|
20911
20961
|
className: "px-8 py-1 bg-primary hover:bg-primary text-primary-foreground text-xs font-medium shrink-0 rounded-full cursor-pointer pointer-events-auto",
|
|
@@ -20922,11 +20972,11 @@ function OhhwellsBridge() {
|
|
|
20922
20972
|
children: "Add Section"
|
|
20923
20973
|
}
|
|
20924
20974
|
),
|
|
20925
|
-
/* @__PURE__ */ (0,
|
|
20975
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex-1 bg-primary", style: { height: 3 } })
|
|
20926
20976
|
]
|
|
20927
20977
|
}
|
|
20928
20978
|
),
|
|
20929
|
-
linkPopover && dialogPortalContainer ? /* @__PURE__ */ (0,
|
|
20979
|
+
linkPopover && dialogPortalContainer ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20930
20980
|
LinkPopover,
|
|
20931
20981
|
{
|
|
20932
20982
|
panelRef: linkPopoverPanelRef,
|
|
@@ -20943,7 +20993,7 @@ function OhhwellsBridge() {
|
|
|
20943
20993
|
},
|
|
20944
20994
|
linkPopover.key
|
|
20945
20995
|
) : null,
|
|
20946
|
-
floatingPanel && floatingPanel.kind === "socials-display" ? /* @__PURE__ */ (0,
|
|
20996
|
+
floatingPanel && floatingPanel.kind === "socials-display" ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20947
20997
|
FloatingPanel,
|
|
20948
20998
|
{
|
|
20949
20999
|
open: true,
|
|
@@ -20953,7 +21003,7 @@ function OhhwellsBridge() {
|
|
|
20953
21003
|
onPositionChange: setFloatingPanelPos,
|
|
20954
21004
|
parentScroll: parentScrollSnap ?? parentScrollRef.current,
|
|
20955
21005
|
onClose: closeFloatingPanelOnly,
|
|
20956
|
-
children: /* @__PURE__ */ (0,
|
|
21006
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
20957
21007
|
SocialsDisplayPanel,
|
|
20958
21008
|
{
|
|
20959
21009
|
display: socialsDisplayFor(floatingPanel.row, editContentRef.current),
|
|
@@ -20964,57 +21014,6 @@ function OhhwellsBridge() {
|
|
|
20964
21014
|
}
|
|
20965
21015
|
)
|
|
20966
21016
|
}
|
|
20967
|
-
) : null,
|
|
20968
|
-
floatingPanel && floatingPanel.kind === "logo-size" && logoSizeDraft ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
20969
|
-
FloatingPanel,
|
|
20970
|
-
{
|
|
20971
|
-
open: true,
|
|
20972
|
-
title: floatingPanel.title,
|
|
20973
|
-
context: floatingPanel.context,
|
|
20974
|
-
position: floatingPanelPos,
|
|
20975
|
-
onPositionChange: setFloatingPanelPos,
|
|
20976
|
-
parentScroll: parentScrollSnap ?? parentScrollRef.current,
|
|
20977
|
-
onClose: closeFloatingPanelAndDeselect,
|
|
20978
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
20979
|
-
LogoSizePanel,
|
|
20980
|
-
{
|
|
20981
|
-
viewport: editorViewport,
|
|
20982
|
-
sizePx: editorViewport === "mobile" && !logoSizeDraft.mobileFollowing ? logoSizeDraft.mobilePx : logoSizeDraft.desktopPx,
|
|
20983
|
-
mobileFollowing: logoSizeDraft.mobileFollowing,
|
|
20984
|
-
onSizeChange: (px) => {
|
|
20985
|
-
const next = editorViewport === "mobile" ? { ...logoSizeDraft, mobilePx: px, mobileFollowing: false } : {
|
|
20986
|
-
...logoSizeDraft,
|
|
20987
|
-
desktopPx: px,
|
|
20988
|
-
mobilePx: logoSizeDraft.mobileFollowing ? px : logoSizeDraft.mobilePx
|
|
20989
|
-
};
|
|
20990
|
-
setLogoSizeDraft(next);
|
|
20991
|
-
persistLogoSizeDraft(floatingPanel.placement, next);
|
|
20992
|
-
},
|
|
20993
|
-
onCustomizeMobile: () => {
|
|
20994
|
-
const next = {
|
|
20995
|
-
...logoSizeDraft,
|
|
20996
|
-
mobileFollowing: false,
|
|
20997
|
-
mobilePx: logoSizeDraft.desktopPx
|
|
20998
|
-
};
|
|
20999
|
-
setLogoSizeDraft(next);
|
|
21000
|
-
persistLogoSizeDraft(floatingPanel.placement, next);
|
|
21001
|
-
},
|
|
21002
|
-
onResetMobile: () => {
|
|
21003
|
-
const next = {
|
|
21004
|
-
...logoSizeDraft,
|
|
21005
|
-
mobileFollowing: true,
|
|
21006
|
-
mobilePx: logoSizeDraft.desktopPx
|
|
21007
|
-
};
|
|
21008
|
-
setLogoSizeDraft(next);
|
|
21009
|
-
persistLogoSizeDraft(floatingPanel.placement, next);
|
|
21010
|
-
},
|
|
21011
|
-
onUpdateEverywhere: () => {
|
|
21012
|
-
const identity = readLogoIdentityFromDom();
|
|
21013
|
-
postToParent2({ type: "ow:open-logo-settings", ...identity });
|
|
21014
|
-
}
|
|
21015
|
-
}
|
|
21016
|
-
)
|
|
21017
|
-
}
|
|
21018
21017
|
) : null
|
|
21019
21018
|
] }),
|
|
21020
21019
|
bridgeRoot
|
|
@@ -21024,10 +21023,10 @@ function OhhwellsBridge() {
|
|
|
21024
21023
|
|
|
21025
21024
|
// src/ui/EmptySection.tsx
|
|
21026
21025
|
var import_link = __toESM(require("next/link"), 1);
|
|
21027
|
-
var
|
|
21026
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
21028
21027
|
function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey }) {
|
|
21029
|
-
return /* @__PURE__ */ (0,
|
|
21030
|
-
/* @__PURE__ */ (0,
|
|
21028
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
|
|
21029
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
21031
21030
|
"p",
|
|
21032
21031
|
{
|
|
21033
21032
|
style: {
|
|
@@ -21039,10 +21038,10 @@ function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey
|
|
|
21039
21038
|
color: "var(--brand-accent)",
|
|
21040
21039
|
marginBottom: "1.5rem"
|
|
21041
21040
|
},
|
|
21042
|
-
children: /* @__PURE__ */ (0,
|
|
21041
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_link.default, { href: homeHref, style: { color: "inherit" }, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { ...eyebrowKey ? { "data-ohw-editable": "text", "data-ohw-key": eyebrowKey } : {}, children: "Home" }) })
|
|
21043
21042
|
}
|
|
21044
21043
|
),
|
|
21045
|
-
/* @__PURE__ */ (0,
|
|
21044
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
21046
21045
|
"h1",
|
|
21047
21046
|
{
|
|
21048
21047
|
style: {
|
|
@@ -21057,7 +21056,7 @@ function EmptySection({ title, homeHref = "/", eyebrowKey, titleKey, subtitleKey
|
|
|
21057
21056
|
children: title
|
|
21058
21057
|
}
|
|
21059
21058
|
),
|
|
21060
|
-
/* @__PURE__ */ (0,
|
|
21059
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
21061
21060
|
"p",
|
|
21062
21061
|
{
|
|
21063
21062
|
style: {
|