@wix/himalaya-cli 0.1474.0 → 0.1475.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/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/schema.d.ts
CHANGED
|
@@ -1402,8 +1402,13 @@ export interface TooltipProps {
|
|
|
1402
1402
|
text?: string;
|
|
1403
1403
|
/** Present → rich tooltip. */
|
|
1404
1404
|
title?: string;
|
|
1405
|
+
/** The side of the anchor the bubble floats on; `auto` / absent → `top`. Flips to the opposite
|
|
1406
|
+
* side when there is no room, as every renderer does. */
|
|
1405
1407
|
edge?: "top" | "bottom" | "leading" | "trailing" | "auto";
|
|
1408
|
+
/** What opens the (otherwise hidden) bubble. `auto` / absent → a long-press on touch, hover and
|
|
1409
|
+
* keyboard focus on the web. */
|
|
1406
1410
|
trigger?: "tap" | "long_press" | "auto";
|
|
1411
|
+
/** Fired once each time an open tooltip closes (outside tap, Escape, timeout). */
|
|
1407
1412
|
onDismiss?: Action;
|
|
1408
1413
|
}
|
|
1409
1414
|
export interface PopoverProps {
|
package/dist/cli.mjs
CHANGED
|
@@ -42065,6 +42065,58 @@ var init_overlayModality = __esm({
|
|
|
42065
42065
|
}
|
|
42066
42066
|
});
|
|
42067
42067
|
|
|
42068
|
+
// ../../core/web-renderer/src/overlayPlacement.ts
|
|
42069
|
+
function resolveOverlayEdge(kind, edge) {
|
|
42070
|
+
return OVERLAY_EDGES.includes(edge) ? edge : OVERLAY_DEFAULT_EDGE[kind];
|
|
42071
|
+
}
|
|
42072
|
+
function resolveTooltipTrigger(trigger, surface) {
|
|
42073
|
+
return trigger === "tap" || trigger === "long_press" ? trigger : TOOLTIP_AUTO_TRIGGER[surface];
|
|
42074
|
+
}
|
|
42075
|
+
function tooltipTimesOut(trigger) {
|
|
42076
|
+
return trigger !== "hover";
|
|
42077
|
+
}
|
|
42078
|
+
function placeOverlay(edge, bubble, anchor, viewport, rtl = false, gap = TOOLTIP_GAP) {
|
|
42079
|
+
const height = bubble.bottom - bubble.top;
|
|
42080
|
+
const width = bubble.right - bubble.left;
|
|
42081
|
+
if (height <= 0 && width <= 0) return edge;
|
|
42082
|
+
const left = (e2) => e2 === "leading" !== rtl;
|
|
42083
|
+
switch (edge) {
|
|
42084
|
+
case "top":
|
|
42085
|
+
return anchor.top - gap - height < viewport.top && anchor.bottom + gap + height <= viewport.bottom ? "bottom" : "top";
|
|
42086
|
+
case "bottom":
|
|
42087
|
+
return anchor.bottom + gap + height > viewport.bottom && anchor.top - gap - height >= viewport.top ? "top" : "bottom";
|
|
42088
|
+
default: {
|
|
42089
|
+
const onLeft = left(edge);
|
|
42090
|
+
const clipped = onLeft ? anchor.left - gap - width < viewport.left : anchor.right + gap + width > viewport.right;
|
|
42091
|
+
const fitsOpposite = onLeft ? anchor.right + gap + width <= viewport.right : anchor.left - gap - width >= viewport.left;
|
|
42092
|
+
return clipped && fitsOpposite ? OVERLAY_FLIP[edge] : edge;
|
|
42093
|
+
}
|
|
42094
|
+
}
|
|
42095
|
+
}
|
|
42096
|
+
var OVERLAY_EDGES, OVERLAY_DEFAULT_EDGE, OVERLAY_FLIP, TOOLTIP_AUTO_TRIGGER, TOOLTIP_LONG_PRESS_MS, TOOLTIP_DISMISS_AFTER_MS, TOOLTIP_GAP;
|
|
42097
|
+
var init_overlayPlacement = __esm({
|
|
42098
|
+
"../../core/web-renderer/src/overlayPlacement.ts"() {
|
|
42099
|
+
OVERLAY_EDGES = Object.freeze(["top", "bottom", "leading", "trailing"]);
|
|
42100
|
+
OVERLAY_DEFAULT_EDGE = Object.freeze({
|
|
42101
|
+
Tooltip: "top",
|
|
42102
|
+
Popover: "bottom"
|
|
42103
|
+
});
|
|
42104
|
+
OVERLAY_FLIP = Object.freeze({
|
|
42105
|
+
top: "bottom",
|
|
42106
|
+
bottom: "top",
|
|
42107
|
+
leading: "trailing",
|
|
42108
|
+
trailing: "leading"
|
|
42109
|
+
});
|
|
42110
|
+
TOOLTIP_AUTO_TRIGGER = Object.freeze({
|
|
42111
|
+
touch: "long_press",
|
|
42112
|
+
pointer: "hover"
|
|
42113
|
+
});
|
|
42114
|
+
TOOLTIP_LONG_PRESS_MS = 500;
|
|
42115
|
+
TOOLTIP_DISMISS_AFTER_MS = 4e3;
|
|
42116
|
+
TOOLTIP_GAP = 8;
|
|
42117
|
+
}
|
|
42118
|
+
});
|
|
42119
|
+
|
|
42068
42120
|
// ../../core/web-renderer/src/drawer.ts
|
|
42069
42121
|
function drawerAutoDismissMs(raw) {
|
|
42070
42122
|
return typeof raw === "number" && Number.isFinite(raw) && raw > 0 ? raw : null;
|
|
@@ -125361,6 +125413,123 @@ function updateBottomDrawerHostStack(host) {
|
|
|
125361
125413
|
const EventCtor = host.ownerDocument.defaultView?.Event;
|
|
125362
125414
|
if (changed && EventCtor) host.dispatchEvent(new EventCtor(BOTTOM_DRAWER_HOST_STACK_EVENT));
|
|
125363
125415
|
}
|
|
125416
|
+
function hasTabStop(root) {
|
|
125417
|
+
return Array.from(root.querySelectorAll(NATIVELY_TABBABLE)).some((el2) => el2.tabIndex >= 0 && !el2.disabled);
|
|
125418
|
+
}
|
|
125419
|
+
function overlayEdgeStyle(edge, gap) {
|
|
125420
|
+
switch (edge) {
|
|
125421
|
+
case "top":
|
|
125422
|
+
return { bottom: "100%", insetInlineStart: 0, marginBottom: gap };
|
|
125423
|
+
case "bottom":
|
|
125424
|
+
return { top: "100%", insetInlineStart: 0, marginTop: gap };
|
|
125425
|
+
case "leading":
|
|
125426
|
+
return { insetInlineEnd: "100%", top: "50%", transform: "translateY(-50%)", marginInlineEnd: gap };
|
|
125427
|
+
case "trailing":
|
|
125428
|
+
return { insetInlineStart: "100%", top: "50%", transform: "translateY(-50%)", marginInlineStart: gap };
|
|
125429
|
+
}
|
|
125430
|
+
}
|
|
125431
|
+
function useFlippedEdge(edge, open, bubbleRef, anchorRef, gap = TOOLTIP_GAP) {
|
|
125432
|
+
const initial = { edge, x: 0, y: 0, maxWidth: Infinity };
|
|
125433
|
+
const [placed, setPlaced] = React10.useState(initial);
|
|
125434
|
+
useIsomorphicLayoutEffect(() => {
|
|
125435
|
+
if (!open) {
|
|
125436
|
+
setPlaced((previous) => previous.edge === edge && previous.x === 0 && previous.y === 0 && previous.maxWidth === Infinity ? previous : initial);
|
|
125437
|
+
return;
|
|
125438
|
+
}
|
|
125439
|
+
const bubble = bubbleRef.current;
|
|
125440
|
+
const anchor = anchorRef.current;
|
|
125441
|
+
const view = bubble?.ownerDocument.defaultView;
|
|
125442
|
+
if (!bubble || !anchor || !view) return;
|
|
125443
|
+
const clipping = [];
|
|
125444
|
+
for (let element = anchor.parentElement; element; element = element.parentElement) {
|
|
125445
|
+
const style = view.getComputedStyle(element);
|
|
125446
|
+
const x2 = /^(hidden|clip|auto|scroll)$/.test(style.overflowX || style.overflow);
|
|
125447
|
+
const y2 = /^(hidden|clip|auto|scroll)$/.test(style.overflowY || style.overflow);
|
|
125448
|
+
if (x2 || y2) clipping.push({ element, x: x2, y: y2 });
|
|
125449
|
+
}
|
|
125450
|
+
const measure2 = () => {
|
|
125451
|
+
const b2 = bubble.getBoundingClientRect();
|
|
125452
|
+
const a2 = anchor.getBoundingClientRect();
|
|
125453
|
+
const bounds = { left: 0, top: 0, right: view.innerWidth, bottom: view.innerHeight };
|
|
125454
|
+
for (const clip3 of clipping) {
|
|
125455
|
+
const rect = clip3.element.getBoundingClientRect();
|
|
125456
|
+
const sx2 = clip3.element.offsetWidth > 0 ? rect.width / clip3.element.offsetWidth : 1;
|
|
125457
|
+
const sy2 = clip3.element.offsetHeight > 0 ? rect.height / clip3.element.offsetHeight : 1;
|
|
125458
|
+
const left = rect.left + clip3.element.clientLeft * sx2;
|
|
125459
|
+
const top = rect.top + clip3.element.clientTop * sy2;
|
|
125460
|
+
if (clip3.x) {
|
|
125461
|
+
bounds.left = Math.max(bounds.left, left);
|
|
125462
|
+
bounds.right = Math.min(bounds.right, left + clip3.element.clientWidth * sx2);
|
|
125463
|
+
}
|
|
125464
|
+
if (clip3.y) {
|
|
125465
|
+
bounds.top = Math.max(bounds.top, top);
|
|
125466
|
+
bounds.bottom = Math.min(bounds.bottom, top + clip3.element.clientHeight * sy2);
|
|
125467
|
+
}
|
|
125468
|
+
}
|
|
125469
|
+
const sx = bubble.offsetWidth > 0 && b2.width > 0 ? b2.width / bubble.offsetWidth : 1;
|
|
125470
|
+
const sy = bubble.offsetHeight > 0 && b2.height > 0 ? b2.height / bubble.offsetHeight : 1;
|
|
125471
|
+
const rtl = view.getComputedStyle(anchor).direction === "rtl";
|
|
125472
|
+
const resolved2 = placeOverlay(edge, b2, a2, bounds, rtl, gap * (edge === "top" || edge === "bottom" ? sy : sx));
|
|
125473
|
+
const clamp3 = (value, lower, upper) => Math.max(lower, Math.min(value, Math.max(lower, upper)));
|
|
125474
|
+
const vertical = resolved2 === "top" || resolved2 === "bottom";
|
|
125475
|
+
const onLeft = resolved2 === "leading" !== rtl;
|
|
125476
|
+
const idealX = vertical ? rtl ? a2.right - b2.width : a2.left : onLeft ? a2.left - gap * sx - b2.width : a2.right + gap * sx;
|
|
125477
|
+
const idealY = vertical ? resolved2 === "top" ? a2.top - gap * sy - b2.height : a2.bottom + gap * sy : (a2.top + a2.bottom - b2.height) / 2;
|
|
125478
|
+
const x2 = (clamp3(idealX, bounds.left, bounds.right - b2.width) - idealX) / sx;
|
|
125479
|
+
const y2 = (clamp3(idealY, bounds.top, bounds.bottom - b2.height) - idealY) / sy;
|
|
125480
|
+
const style = view.getComputedStyle(bubble);
|
|
125481
|
+
const px = (value) => Number.parseFloat(value) || 0;
|
|
125482
|
+
const inset = style.boxSizing === "border-box" ? 0 : px(style.paddingLeft) + px(style.paddingRight) + px(style.borderLeftWidth) + px(style.borderRightWidth);
|
|
125483
|
+
const maxWidth = Math.max(0, (bounds.right - bounds.left) / sx - inset);
|
|
125484
|
+
setPlaced((previous) => previous.edge === resolved2 && Math.abs(previous.x - x2) < 0.1 && Math.abs(previous.y - y2) < 0.1 && Math.abs(previous.maxWidth - maxWidth) < 0.1 ? previous : { edge: resolved2, x: x2, y: y2, maxWidth });
|
|
125485
|
+
};
|
|
125486
|
+
measure2();
|
|
125487
|
+
view.addEventListener("resize", measure2);
|
|
125488
|
+
view.addEventListener("orientationchange", measure2);
|
|
125489
|
+
view.addEventListener("scroll", measure2, true);
|
|
125490
|
+
const RO = view.ResizeObserver;
|
|
125491
|
+
const ro2 = RO ? new RO(measure2) : null;
|
|
125492
|
+
ro2?.observe(anchor);
|
|
125493
|
+
ro2?.observe(bubble);
|
|
125494
|
+
for (const clip3 of clipping) ro2?.observe(clip3.element);
|
|
125495
|
+
return () => {
|
|
125496
|
+
view.removeEventListener("resize", measure2);
|
|
125497
|
+
view.removeEventListener("orientationchange", measure2);
|
|
125498
|
+
view.removeEventListener("scroll", measure2, true);
|
|
125499
|
+
ro2?.disconnect();
|
|
125500
|
+
};
|
|
125501
|
+
}, [open, edge, gap]);
|
|
125502
|
+
return open ? placed : initial;
|
|
125503
|
+
}
|
|
125504
|
+
function overlayAnchorFrame(wrap) {
|
|
125505
|
+
if (wrap.overflow !== "hidden") return { host: wrap, anchor: {} };
|
|
125506
|
+
const host = { ...wrap };
|
|
125507
|
+
const anchor = {};
|
|
125508
|
+
for (const key3 of Object.keys(wrap)) {
|
|
125509
|
+
if (/^(padding|border|background)/.test(key3) || ["overflow", "boxSizing", "boxShadow", "width", "height", "minWidth", "maxWidth", "minHeight", "maxHeight"].includes(key3)) {
|
|
125510
|
+
anchor[key3] = wrap[key3];
|
|
125511
|
+
delete host[key3];
|
|
125512
|
+
}
|
|
125513
|
+
}
|
|
125514
|
+
if (wrap.width === "100%") host.width = "100%";
|
|
125515
|
+
if (wrap.height === "100%") host.height = "100%";
|
|
125516
|
+
return { host, anchor };
|
|
125517
|
+
}
|
|
125518
|
+
function OverlayAnchorClip({ wrap, style, children }) {
|
|
125519
|
+
return wrap.overflow === "hidden" ? /* @__PURE__ */ jsx11("span", { style: { display: "inline-flex", ...style, ...overlayAnchorFrame(wrap).anchor }, children }) : /* @__PURE__ */ jsx11(Fragment4, { children });
|
|
125520
|
+
}
|
|
125521
|
+
function inlineEdgeFlex(edge) {
|
|
125522
|
+
switch (edge) {
|
|
125523
|
+
case "top":
|
|
125524
|
+
return { edge, flexDirection: "column-reverse", alignItems: "flex-start" };
|
|
125525
|
+
case "bottom":
|
|
125526
|
+
return { edge, flexDirection: "column", alignItems: "flex-start" };
|
|
125527
|
+
case "leading":
|
|
125528
|
+
return { edge, flexDirection: "row-reverse", alignItems: "center" };
|
|
125529
|
+
case "trailing":
|
|
125530
|
+
return { edge, flexDirection: "row", alignItems: "center" };
|
|
125531
|
+
}
|
|
125532
|
+
}
|
|
125364
125533
|
function chartNumbers(raw) {
|
|
125365
125534
|
if (!Array.isArray(raw)) return [];
|
|
125366
125535
|
return raw.map((v2) => v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2.value : v2).map(Number).filter((n2) => Number.isFinite(n2));
|
|
@@ -126703,16 +126872,8 @@ function renderInner(node, ctx) {
|
|
|
126703
126872
|
// RFC 0068 (#3802) — non-modal confirmation drawer with a renderer-owned auto-dismiss.
|
|
126704
126873
|
case "Menu":
|
|
126705
126874
|
return /* @__PURE__ */ jsx11(MenuNode, { props, ctx, wrap });
|
|
126706
|
-
case "Tooltip":
|
|
126707
|
-
|
|
126708
|
-
return /* @__PURE__ */ jsxs8("div", { style: { display: "inline-flex", flexDirection: "column", alignItems: "flex-start", gap: 6, ...wrap }, children: [
|
|
126709
|
-
/* @__PURE__ */ jsxs8("div", { role: "tooltip", style: { maxWidth: 240, width: "fit-content", background: C2("textPrimary", "#13171e"), color: C2("textOnAccent", "#fff"), borderRadius: 8, padding: rich ? "10px 12px" : "6px 10px", fontFamily: bodyFont(ctx), fontSize: pxToRem(13), lineHeight: 1.35 }, children: [
|
|
126710
|
-
rich && /* @__PURE__ */ jsx11("div", { style: { fontWeight: 700, marginBottom: 3 }, children: txt(props.title, ctx) }),
|
|
126711
|
-
txt(props.text, ctx)
|
|
126712
|
-
] }),
|
|
126713
|
-
props.anchor ? renderNode(props.anchor, ctx) : null
|
|
126714
|
-
] });
|
|
126715
|
-
}
|
|
126875
|
+
case "Tooltip":
|
|
126876
|
+
return /* @__PURE__ */ jsx11(TooltipNode, { props, ctx, wrap });
|
|
126716
126877
|
case "Popover":
|
|
126717
126878
|
return /* @__PURE__ */ jsx11(PopoverNode, { props, ctx, wrap });
|
|
126718
126879
|
// ───────────── chips & selection (RFC 0030) ─────────────
|
|
@@ -127001,7 +127162,7 @@ function reportUnknownComponent(ctx, pkg, type) {
|
|
|
127001
127162
|
function unknownComponentShowsDeveloperLabel(ctx) {
|
|
127002
127163
|
return ctx.debugUnknownComponents ?? ctx.previewSurface != null;
|
|
127003
127164
|
}
|
|
127004
|
-
var loadPdfFetch, useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, valueSwapKeyframesInjected, NUMERIC_TEXT, shimmerKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, AMBIENT_HOST_STYLE, AmbientMotionBox, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveRowAction2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, ReactiveDirectScalars, HiddenGate, ExitPresence, StatefulSectionNode, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MENU_LONG_PRESS_MS, MenuNode, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfDocumentCanvas, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, NODE_EXTRAS_TARGET, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, NESTED_CONTROL_SELECTOR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, REVEAL_RELEASE_MS, REVEAL_FADE_MS, REVEAL_BUFFER, revealProgress, countWords, RevealText, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, EMPTY_STATE_SPACING, EmptyStateNode, ButtonNode, OtpInputNode, ProgressBarNode, ACTIVITY_DEFAULT_NAME, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, BOTTOM_DRAWER_HOST_STACK_EVENT, ModalBottomSheetNode, BottomDrawerNode, PRESENTED_OVERLAY_ATTR, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, ShapeNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, PagingNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CAROUSEL_SETTLE_MS, scrollCarouselTo, CarouselNode, BannerNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, reportedUnknownComponents, UnknownComponentNode, WebRenderer;
|
|
127165
|
+
var loadPdfFetch, useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, valueSwapKeyframesInjected, NUMERIC_TEXT, shimmerKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, AMBIENT_HOST_STYLE, AmbientMotionBox, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveRowAction2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, ReactiveDirectScalars, HiddenGate, ExitPresence, StatefulSectionNode, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MENU_LONG_PRESS_MS, MenuNode, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfDocumentCanvas, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, NODE_EXTRAS_TARGET, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES, NODE_A11Y_ATTRS, INTERACTIVE_ROLES, ALWAYS_INTERACTIVE_COMPONENT_TYPES, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, NESTED_CONTROL_SELECTOR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, REVEAL_RELEASE_MS, REVEAL_FADE_MS, REVEAL_BUFFER, revealProgress, countWords, RevealText, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, EMPTY_STATE_SPACING, EmptyStateNode, ButtonNode, OtpInputNode, ProgressBarNode, ACTIVITY_DEFAULT_NAME, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, BOTTOM_DRAWER_HOST_STACK_EVENT, ModalBottomSheetNode, BottomDrawerNode, PRESENTED_OVERLAY_ATTR, TooltipNode, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, ShapeNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, PagingNode, WheelPickerNode, ColorPickerNode, FilterChipsNode, TILE_PX, MAX_MERCATOR_LAT, DEFAULT_TILE_MAX_ZOOM, CIRCLE_SEGMENTS, METRES_PER_DEG_LAT, MARKER_HIT_RADIUS, SHAPE_HIT_RADIUS, MapNode, CAROUSEL_SETTLE_MS, scrollCarouselTo, CarouselNode, BannerNode, CollapsingHeaderNode, UnsupportedOnSurface, CALENDAR_DATE_ONLY_RE, CAL_DEFAULT_MAX_DOTS, CAL_AGENDA_INITIAL_DAYS, CAL_AGENDA_PAGE_DAYS, CAL_DEFAULT_SNAP_MINUTES, CAL_UNASSIGNED_LANE_ID, MonthCalendarNode, TimeGridNode, AgendaNode, ARIA_ROLE, initialFocusScheduled, PRESENTED_SCOPE, focusRoots, A11yHintDescription, reportedUnknownComponents, UnknownComponentNode, WebRenderer;
|
|
127005
127166
|
var init_renderNode = __esm({
|
|
127006
127167
|
"../../core/web-renderer/src/renderNode.tsx"() {
|
|
127007
127168
|
"use strict";
|
|
@@ -127035,6 +127196,7 @@ var init_renderNode = __esm({
|
|
|
127035
127196
|
init_controls();
|
|
127036
127197
|
init_modalStack();
|
|
127037
127198
|
init_overlayModality();
|
|
127199
|
+
init_overlayPlacement();
|
|
127038
127200
|
init_sheet();
|
|
127039
127201
|
init_drawer();
|
|
127040
127202
|
init_listGestures();
|
|
@@ -129939,7 +130101,7 @@ var init_renderNode = __esm({
|
|
|
129939
130101
|
const onKey = (e2) => {
|
|
129940
130102
|
const d2 = dialogRef.current;
|
|
129941
130103
|
if (e2.key !== "Escape" || !d2 || !isWithinTopModal(d2)) return;
|
|
129942
|
-
if (d2.querySelector(`[role="menu"], [${PRESENTED_OVERLAY_ATTR}]`) != null) return;
|
|
130104
|
+
if (d2.querySelector(`[role="menu"], [role="tooltip"], [${PRESENTED_OVERLAY_ATTR}]`) != null) return;
|
|
129943
130105
|
e2.stopPropagation();
|
|
129944
130106
|
dismiss();
|
|
129945
130107
|
};
|
|
@@ -130364,21 +130526,159 @@ var init_renderNode = __esm({
|
|
|
130364
130526
|
return /* @__PURE__ */ jsx11("span", { ref: anchorRef, "data-bottom-drawer-anchor": "", style: { display: "contents" }, ...{ [NODE_EXTRAS_TARGET]: "bottom-drawer-panel" }, children: portaled ? createPortal(panel, host) : panel });
|
|
130365
130527
|
});
|
|
130366
130528
|
PRESENTED_OVERLAY_ATTR = "data-hm-presented-overlay";
|
|
130529
|
+
TooltipNode = withExtras("TooltipNode", ({ props, ctx, wrap }) => {
|
|
130530
|
+
const C2 = ctx.color;
|
|
130531
|
+
const title = useBoundString(props.title, ctx);
|
|
130532
|
+
const text9 = useBoundString(props.text, ctx);
|
|
130533
|
+
const rich = title !== "";
|
|
130534
|
+
const trigger = resolveTooltipTrigger(props.trigger, "pointer");
|
|
130535
|
+
const edge = resolveOverlayEdge("Tooltip", props.edge);
|
|
130536
|
+
const [open, setOpen] = React10.useState(false);
|
|
130537
|
+
const anchorRef = React10.useRef(null);
|
|
130538
|
+
const bubbleRef = React10.useRef(null);
|
|
130539
|
+
const pressTimer = React10.useRef(null);
|
|
130540
|
+
const placement = useFlippedEdge(edge, open, bubbleRef, anchorRef);
|
|
130541
|
+
const placed = placement.edge;
|
|
130542
|
+
const latest = React10.useRef({ ctx, onDismiss: props.onDismiss, open });
|
|
130543
|
+
latest.current = { ctx, onDismiss: props.onDismiss, open };
|
|
130544
|
+
const holding = React10.useRef({ hover: false, focus: false });
|
|
130545
|
+
const [needsTabStop, setNeedsTabStop] = React10.useState(false);
|
|
130546
|
+
useIsomorphicLayoutEffect(() => {
|
|
130547
|
+
const el2 = anchorRef.current;
|
|
130548
|
+
const want = trigger === "hover" && el2 != null && !hasTabStop(el2);
|
|
130549
|
+
if (want !== needsTabStop) setNeedsTabStop(want);
|
|
130550
|
+
});
|
|
130551
|
+
const show = React10.useCallback(() => setOpen(true), []);
|
|
130552
|
+
const dismiss = React10.useCallback(() => {
|
|
130553
|
+
holding.current = { hover: false, focus: false };
|
|
130554
|
+
const { ctx: now, onDismiss, open: wasOpen } = latest.current;
|
|
130555
|
+
if (!wasOpen) return;
|
|
130556
|
+
latest.current.open = false;
|
|
130557
|
+
setOpen(false);
|
|
130558
|
+
if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
|
|
130559
|
+
}, []);
|
|
130560
|
+
React10.useEffect(() => {
|
|
130561
|
+
if (!open) return;
|
|
130562
|
+
const doc = bubbleRef.current?.ownerDocument;
|
|
130563
|
+
if (!doc) return;
|
|
130564
|
+
const onDown = (e2) => {
|
|
130565
|
+
const target = e2.target;
|
|
130566
|
+
if (anchorRef.current?.contains(target) || bubbleRef.current?.contains(target)) return;
|
|
130567
|
+
dismiss();
|
|
130568
|
+
};
|
|
130569
|
+
const onKey = (e2) => {
|
|
130570
|
+
if (e2.key !== "Escape" || !bubbleRef.current || !isWithinTopModal(bubbleRef.current)) return;
|
|
130571
|
+
e2.stopImmediatePropagation();
|
|
130572
|
+
dismiss();
|
|
130573
|
+
};
|
|
130574
|
+
const kinds = ["pointerdown", "touchstart", "mousedown"];
|
|
130575
|
+
for (const k2 of kinds) doc.addEventListener(k2, onDown, true);
|
|
130576
|
+
doc.addEventListener("keydown", onKey, true);
|
|
130577
|
+
const timer = tooltipTimesOut(trigger) ? setTimeout(dismiss, TOOLTIP_DISMISS_AFTER_MS) : null;
|
|
130578
|
+
return () => {
|
|
130579
|
+
for (const k2 of kinds) doc.removeEventListener(k2, onDown, true);
|
|
130580
|
+
doc.removeEventListener("keydown", onKey, true);
|
|
130581
|
+
if (timer) clearTimeout(timer);
|
|
130582
|
+
};
|
|
130583
|
+
}, [open, trigger, dismiss]);
|
|
130584
|
+
React10.useEffect(() => () => {
|
|
130585
|
+
if (pressTimer.current) clearTimeout(pressTimer.current);
|
|
130586
|
+
}, []);
|
|
130587
|
+
const cancelPress = () => {
|
|
130588
|
+
if (pressTimer.current) {
|
|
130589
|
+
clearTimeout(pressTimer.current);
|
|
130590
|
+
pressTimer.current = null;
|
|
130591
|
+
}
|
|
130592
|
+
};
|
|
130593
|
+
const release2 = (what) => {
|
|
130594
|
+
holding.current[what] = false;
|
|
130595
|
+
if (!holding.current.hover && !holding.current.focus) dismiss();
|
|
130596
|
+
};
|
|
130597
|
+
const handlers = trigger === "hover" ? {
|
|
130598
|
+
onMouseEnter: () => {
|
|
130599
|
+
holding.current.hover = true;
|
|
130600
|
+
show();
|
|
130601
|
+
},
|
|
130602
|
+
onMouseLeave: () => release2("hover"),
|
|
130603
|
+
onFocus: () => {
|
|
130604
|
+
holding.current.focus = true;
|
|
130605
|
+
show();
|
|
130606
|
+
},
|
|
130607
|
+
// Focus moving BETWEEN elements inside the anchor is not leaving it.
|
|
130608
|
+
onBlur: (e2) => {
|
|
130609
|
+
if (!anchorRef.current?.contains(e2.relatedTarget)) release2("focus");
|
|
130610
|
+
}
|
|
130611
|
+
} : trigger === "tap" ? { onClickCapture: () => latest.current.open ? dismiss() : show() } : {
|
|
130612
|
+
onPointerDown: () => {
|
|
130613
|
+
cancelPress();
|
|
130614
|
+
pressTimer.current = setTimeout(show, TOOLTIP_LONG_PRESS_MS);
|
|
130615
|
+
},
|
|
130616
|
+
onPointerUp: cancelPress,
|
|
130617
|
+
onPointerLeave: cancelPress,
|
|
130618
|
+
onPointerCancel: cancelPress,
|
|
130619
|
+
// A held press would otherwise open the browser's own context menu over the bubble.
|
|
130620
|
+
onContextMenu: (e2) => e2.preventDefault()
|
|
130621
|
+
};
|
|
130622
|
+
const hint = [title, text9].filter((s2) => s2 !== "").join(". ");
|
|
130623
|
+
const anchor = props.anchor ? renderNode(props.anchor, ctx) : null;
|
|
130624
|
+
const wrapperHintId = `hm-tip-hint${React10.useId()}`;
|
|
130625
|
+
useIsomorphicLayoutEffect(() => {
|
|
130626
|
+
const wrapper = anchorRef.current;
|
|
130627
|
+
if (!wrapper || !hint || needsTabStop) return;
|
|
130628
|
+
const root = wrapper.firstElementChild;
|
|
130629
|
+
const stops = Array.from(wrapper.querySelectorAll(NATIVELY_TABBABLE)).filter((el2) => el2 !== root && el2.tabIndex >= 0 && !el2.disabled && !el2.closest('[role="tooltip"]'));
|
|
130630
|
+
for (const el2 of stops) {
|
|
130631
|
+
const ids = (el2.getAttribute("aria-describedby") ?? "").split(/\s+/).filter(Boolean);
|
|
130632
|
+
if (!ids.includes(wrapperHintId)) el2.setAttribute("aria-describedby", [...ids, wrapperHintId].join(" "));
|
|
130633
|
+
}
|
|
130634
|
+
return () => {
|
|
130635
|
+
for (const el2 of stops) {
|
|
130636
|
+
const ids = (el2.getAttribute("aria-describedby") ?? "").split(/\s+/).filter((id) => id && id !== wrapperHintId);
|
|
130637
|
+
if (ids.length) el2.setAttribute("aria-describedby", ids.join(" "));
|
|
130638
|
+
else el2.removeAttribute("aria-describedby");
|
|
130639
|
+
}
|
|
130640
|
+
};
|
|
130641
|
+
});
|
|
130642
|
+
return /* @__PURE__ */ jsxs8("span", { ref: anchorRef, "data-hm-tooltip-trigger": trigger, tabIndex: needsTabStop ? 0 : void 0, "aria-describedby": needsTabStop && hint ? wrapperHintId : void 0, ...handlers, style: { position: "relative", display: "inline-flex", alignSelf: "flex-start", ...overlayAnchorFrame(wrap).host }, children: [
|
|
130643
|
+
/* @__PURE__ */ jsx11(OverlayAnchorClip, { wrap, children: needsTabStop ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
130644
|
+
anchor,
|
|
130645
|
+
hint && /* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
|
|
130646
|
+
] }) : hint && React10.isValidElement(anchor) ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
130647
|
+
/* @__PURE__ */ jsx11(A11yHintDescription, { hint, children: anchor }),
|
|
130648
|
+
/* @__PURE__ */ jsx11("span", { id: wrapperHintId, hidden: true, "data-hm-a11y-hint": "", children: hint })
|
|
130649
|
+
] }) : /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
130650
|
+
anchor,
|
|
130651
|
+
hint && /* @__PURE__ */ jsx11("span", { hidden: true, "data-hm-a11y-hint": "", children: hint })
|
|
130652
|
+
] }) }),
|
|
130653
|
+
open && /* @__PURE__ */ jsxs8("div", { ref: bubbleRef, role: "tooltip", "data-hm-tooltip-edge": placed, style: { position: "absolute", zIndex: 45, maxWidth: Math.min(240, placement.maxWidth), overflowWrap: placement.maxWidth < 240 ? "anywhere" : void 0, width: "max-content", background: C2("textPrimary", "#13171e"), color: C2("textOnAccent", "#fff"), borderRadius: 8, padding: rich ? "10px 12px" : "6px 10px", fontFamily: bodyFont(ctx), fontSize: pxToRem(13), lineHeight: 1.35, boxShadow: "0 4px 14px rgba(0,0,0,.18)", ...overlayEdgeStyle(placed, TOOLTIP_GAP), translate: `${placement.x}px ${placement.y}px` }, children: [
|
|
130654
|
+
rich && /* @__PURE__ */ jsx11("div", { style: { fontWeight: 700, marginBottom: 3 }, children: title }),
|
|
130655
|
+
text9
|
|
130656
|
+
] })
|
|
130657
|
+
] });
|
|
130658
|
+
});
|
|
130367
130659
|
PopoverNode = withExtras("PopoverNode", ({ props, ctx, wrap }) => {
|
|
130368
130660
|
const C2 = ctx.color;
|
|
130369
130661
|
const bound = useResolvedScalar(props.presentedPath, ctx);
|
|
130370
130662
|
const gated = props.presentedPath != null || props.presented != null;
|
|
130371
130663
|
const gate = props.presentedPath != null ? bound : props.presented;
|
|
130372
130664
|
const gateOpen = gate === true || gate === "true";
|
|
130373
|
-
const
|
|
130665
|
+
const literal = props.presentedPath == null && props.presented != null;
|
|
130666
|
+
const identity = { path: props.presentedPath, presented: props.presented, provider: ctx.provider };
|
|
130667
|
+
const [local, setLocal] = React10.useState({ ...identity, opened: false, dismissed: false });
|
|
130668
|
+
const sameGate = local.path === identity.path && local.presented === identity.presented && local.provider === identity.provider;
|
|
130669
|
+
const current = sameGate ? local : { ...identity, opened: false, dismissed: false };
|
|
130670
|
+
if (!sameGate) setLocal(current);
|
|
130374
130671
|
React10.useEffect(() => {
|
|
130375
|
-
if (!gateOpen)
|
|
130672
|
+
if (!gateOpen) setLocal((previous) => previous.dismissed ? { ...previous, dismissed: false } : previous);
|
|
130376
130673
|
}, [gateOpen]);
|
|
130377
|
-
const shown2 = !gated || gateOpen && !dismissed;
|
|
130674
|
+
const shown2 = !gated || (gateOpen || current.opened) && !current.dismissed;
|
|
130378
130675
|
const modal = gated && isOverlayModal("Popover", props.modal);
|
|
130379
130676
|
const dialogRef = React10.useRef(null);
|
|
130380
130677
|
const anchorRef = React10.useRef(null);
|
|
130678
|
+
const boxRef = React10.useRef(null);
|
|
130381
130679
|
const trapTab = useModalOverlay(dialogRef, shown2 && modal);
|
|
130680
|
+
const placement = useFlippedEdge(resolveOverlayEdge("Popover", props.edge), gated && shown2, dialogRef, boxRef, 6);
|
|
130681
|
+
const placed = placement.edge;
|
|
130382
130682
|
const latest = React10.useRef({ ctx, onDismiss: props.onDismiss });
|
|
130383
130683
|
latest.current = { ctx, onDismiss: props.onDismiss };
|
|
130384
130684
|
React10.useEffect(() => {
|
|
@@ -130389,11 +130689,11 @@ var init_renderNode = __esm({
|
|
|
130389
130689
|
const dismiss = () => {
|
|
130390
130690
|
if (done) return;
|
|
130391
130691
|
done = true;
|
|
130392
|
-
|
|
130692
|
+
setLocal({ ...identity, opened: false, dismissed: true });
|
|
130393
130693
|
const { ctx: now, onDismiss } = latest.current;
|
|
130394
130694
|
if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
|
|
130395
130695
|
};
|
|
130396
|
-
const childOverlayOpen = () => dialogRef.current?.querySelector(`[role="menu"], [${PRESENTED_OVERLAY_ATTR}]`) != null;
|
|
130696
|
+
const childOverlayOpen = () => dialogRef.current?.querySelector(`[role="menu"], [role="tooltip"], [${PRESENTED_OVERLAY_ATTR}]`) != null;
|
|
130397
130697
|
const onTop = () => dialogRef.current != null && isWithinTopModal(dialogRef.current);
|
|
130398
130698
|
const onDown = (e2) => {
|
|
130399
130699
|
const target = e2.target;
|
|
@@ -130412,11 +130712,37 @@ var init_renderNode = __esm({
|
|
|
130412
130712
|
for (const k2 of kinds) doc.removeEventListener(k2, onDown, true);
|
|
130413
130713
|
doc.removeEventListener("keydown", onKey, true);
|
|
130414
130714
|
};
|
|
130415
|
-
}, [gated, shown2]);
|
|
130416
|
-
const floating = gated ? { position: "absolute",
|
|
130417
|
-
|
|
130418
|
-
|
|
130419
|
-
|
|
130715
|
+
}, [gated, shown2, props.presentedPath, props.presented, ctx.provider]);
|
|
130716
|
+
const floating = gated ? { position: "absolute", zIndex: 40, ...overlayEdgeStyle(placed, 6), translate: `${placement.x}px ${placement.y}px` } : {};
|
|
130717
|
+
const inline = gated ? null : inlineEdgeFlex(resolveOverlayEdge("Popover", props.edge));
|
|
130718
|
+
const openFromAnchor = literal ? () => {
|
|
130719
|
+
if (shown2) return;
|
|
130720
|
+
setLocal({ ...identity, opened: true, dismissed: false });
|
|
130721
|
+
} : void 0;
|
|
130722
|
+
const [anchorIsButton, setAnchorIsButton] = React10.useState(false);
|
|
130723
|
+
const [needsSeparateOpener, setNeedsSeparateOpener] = React10.useState(false);
|
|
130724
|
+
useIsomorphicLayoutEffect(() => {
|
|
130725
|
+
const el2 = anchorRef.current;
|
|
130726
|
+
const want = literal && el2 != null && !hasTabStop(el2);
|
|
130727
|
+
if (want !== anchorIsButton) setAnchorIsButton(want);
|
|
130728
|
+
const needsOpener = literal && el2 != null && Array.from(el2.querySelectorAll(NATIVELY_TABBABLE)).some((control) => control.tabIndex >= 0 && !control.disabled && !control.matches('button,a[href],area[href],summary,input[type="button"],input[type="submit"],input[type="reset"],input[type="checkbox"],input[type="radio"],[role="button"],[role="link"]'));
|
|
130729
|
+
if (needsOpener !== needsSeparateOpener) setNeedsSeparateOpener(needsOpener);
|
|
130730
|
+
});
|
|
130731
|
+
const anchorButtonProps = anchorIsButton ? {
|
|
130732
|
+
role: "button",
|
|
130733
|
+
tabIndex: 0,
|
|
130734
|
+
onKeyDown: (e2) => {
|
|
130735
|
+
if (e2.key !== "Enter" && e2.key !== " ") return;
|
|
130736
|
+
e2.preventDefault();
|
|
130737
|
+
openFromAnchor?.();
|
|
130738
|
+
}
|
|
130739
|
+
} : {};
|
|
130740
|
+
return /* @__PURE__ */ jsxs8("div", { ref: boxRef, ...inline ? { "data-hm-popover-edge": inline.edge } : {}, style: { ...gated ? { position: "relative" } : {}, display: "inline-flex", flexDirection: inline?.flexDirection ?? "column", alignItems: inline?.alignItems ?? "flex-start", gap: 6, ...gated ? overlayAnchorFrame(wrap).host : wrap }, children: [
|
|
130741
|
+
props.anchor ? gated ? /* @__PURE__ */ jsx11("span", { ref: anchorRef, onClickCapture: needsSeparateOpener ? void 0 : openFromAnchor, ...anchorButtonProps, "data-hm-popover-anchor": "", style: { display: anchorIsButton ? "inline-flex" : "contents", ...wrap.overflow === "hidden" && wrap.width === "100%" ? { width: "100%" } : {} }, children: /* @__PURE__ */ jsxs8(OverlayAnchorClip, { wrap, style: { flexDirection: "column", alignItems: "flex-start", gap: 6 }, children: [
|
|
130742
|
+
renderNode(props.anchor, ctx),
|
|
130743
|
+
needsSeparateOpener && /* @__PURE__ */ jsx11("button", { type: "button", "aria-haspopup": "dialog", "aria-expanded": shown2, onClick: openFromAnchor, children: "Show details" })
|
|
130744
|
+
] }) }) : renderNode(props.anchor, ctx) : null,
|
|
130745
|
+
shown2 && /* @__PURE__ */ jsx11("div", { ref: dialogRef, role: "dialog", ...gated ? { [PRESENTED_OVERLAY_ATTR]: "", "data-hm-popover-edge": placed } : {}, "aria-modal": modal ? "true" : void 0, tabIndex: modal ? -1 : void 0, onKeyDown: modal ? trapTab : void 0, "aria-label": props.title != null ? asBoundText(props.title, ctx) : "Popover", style: { minWidth: Math.min(160, placement.maxWidth), maxWidth: Math.min(280, placement.maxWidth), overflowWrap: placement.maxWidth < 280 ? "anywhere" : void 0, background: C2("surfacePrimary", "#fff"), border: `1px solid ${C2("border", "#e3e3e3")}`, borderRadius: 12, boxShadow: "0 6px 20px rgba(0,0,0,.14)", padding: 12, ...floating }, children: props.content ? renderNode(props.content, ctx) : null })
|
|
130420
130746
|
] });
|
|
130421
130747
|
});
|
|
130422
130748
|
ChipsInputNode = withExtras("ChipsInputNode", ({ props, ctx, wrap }) => {
|
|
@@ -132411,7 +132737,8 @@ var init_renderNode = __esm({
|
|
|
132411
132737
|
const own5 = children.props;
|
|
132412
132738
|
const next = { ...forwarded };
|
|
132413
132739
|
if (forwarded.style) next.style = { ...own5.style ?? {}, ...forwarded.style };
|
|
132414
|
-
|
|
132740
|
+
const ids = [own5["aria-describedby"], forwarded["aria-describedby"], descId].flatMap((v2) => v2 ? String(v2).split(/\s+/) : []).filter(Boolean);
|
|
132741
|
+
next["aria-describedby"] = Array.from(new Set(ids)).join(" ");
|
|
132415
132742
|
return /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
132416
132743
|
React10.cloneElement(children, next),
|
|
132417
132744
|
/* @__PURE__ */ jsx11("span", { id: descId, hidden: true, "data-hm-a11y-hint": "", children: hint })
|
|
@@ -162821,33 +163148,33 @@ var init_preview_assets_generated = __esm({
|
|
|
162821
163148
|
"../../packages/serve/src/preview-assets.generated.ts"() {
|
|
162822
163149
|
init_preview_assets_format();
|
|
162823
163150
|
PREVIEW_ASSET_MANIFEST = [
|
|
162824
|
-
{ key: "assets/DashboardHost-
|
|
162825
|
-
{ key: "assets/DevDrawer-
|
|
162826
|
-
{ key: "assets/IdiomCompare-
|
|
162827
|
-
{ key: "assets/LightboxViewer-
|
|
162828
|
-
{ key: "assets/PhonePreviewControl-
|
|
162829
|
-
{ key: "assets/SchemeCompare
|
|
162830
|
-
{ key: "assets/index-
|
|
162831
|
-
{ key: "assets/pdf-
|
|
162832
|
-
{ key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
162833
|
-
{ key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset:
|
|
162834
|
-
{ key: "assets/pdfDocument-
|
|
162835
|
-
{ key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
162836
|
-
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset:
|
|
162837
|
-
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset:
|
|
162838
|
-
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset:
|
|
162839
|
-
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
162840
|
-
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset:
|
|
162841
|
-
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset:
|
|
162842
|
-
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
162843
|
-
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset:
|
|
162844
|
-
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
162845
|
-
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset:
|
|
162846
|
-
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset:
|
|
162847
|
-
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
162848
|
-
{ key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
162849
|
-
{ key: "index.html", contentType: "text/html; charset=utf-8", offset:
|
|
162850
|
-
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
163151
|
+
{ key: "assets/DashboardHost-D_1GffyL.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2916, sha256: "a558f9d2378de3976306fe97c6c80dc697a9dc2ca24c5c02310f355dbf14da2d" },
|
|
163152
|
+
{ key: "assets/DevDrawer-3hN9xeNi.js", contentType: "application/javascript; charset=utf-8", offset: 2924, length: 16744, sha256: "da3a6767363e38aeff12026a49622774bf70ecf0494d815b3faf24a5ebebe654" },
|
|
163153
|
+
{ key: "assets/IdiomCompare-1sFLKphj.js", contentType: "application/javascript; charset=utf-8", offset: 19668, length: 1892, sha256: "63e6cc9d65a26c9e6ac079736657b4c4533a51e3e3198ffe9def5664d32c1405" },
|
|
163154
|
+
{ key: "assets/LightboxViewer-2VZTqIKf.js", contentType: "application/javascript; charset=utf-8", offset: 21560, length: 8132, sha256: "729bdf8938435ed5c916cc0df5bc32c7e85c1a03678a4bf207974524e85ea68d" },
|
|
163155
|
+
{ key: "assets/PhonePreviewControl-BwXNiTwT.js", contentType: "application/javascript; charset=utf-8", offset: 29692, length: 37729, sha256: "3ea8d156128abd07b81dc4762c1443feac9e3a13b5ae6ad4fa38b4d850237bae" },
|
|
163156
|
+
{ key: "assets/SchemeCompare--hcImFw_.js", contentType: "application/javascript; charset=utf-8", offset: 67421, length: 1824, sha256: "44868de6ef0b814935e83a02fce0cbadb8a8c1f015b72f724024d9ee4cfcb9d5" },
|
|
163157
|
+
{ key: "assets/index-B2V8Aofi.js", contentType: "application/javascript; charset=utf-8", offset: 69245, length: 1295467, sha256: "16ed83082c4f42b32363b5befd04fbade913b9f94b818f5998f8900828b53091" },
|
|
163158
|
+
{ key: "assets/pdf-q3cQTYnW.js", contentType: "application/javascript; charset=utf-8", offset: 1364712, length: 488199, sha256: "6ace91acb86ec472b26196e1d82e4248506be9124b943419aaf3439dfc45107f" },
|
|
163159
|
+
{ key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 1852911, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
|
|
163160
|
+
{ key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 1852984, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
|
|
163161
|
+
{ key: "assets/pdfDocument-DV_3I3YU.js", contentType: "application/javascript; charset=utf-8", offset: 3170018, length: 3379, sha256: "2b20ef231b10fb39f79d3e889dd634340bc7c0f666d00efa1e8d2505296085df" },
|
|
163162
|
+
{ key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3173397, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
|
|
163163
|
+
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3175663, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
|
|
163164
|
+
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3180273, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
|
|
163165
|
+
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3668857, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
|
|
163166
|
+
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3759781, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
|
|
163167
|
+
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 3850765, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
|
|
163168
|
+
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 3941745, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
|
|
163169
|
+
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4032617, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
|
|
163170
|
+
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4123597, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
|
|
163171
|
+
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4232233, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
|
|
163172
|
+
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4341317, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
|
|
163173
|
+
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4450365, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
|
|
163174
|
+
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4558065, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
|
|
163175
|
+
{ key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4646173, length: 6748, sha256: "4a92459977d7cefa1a6a7e020c3a63509737f083b3f2773557c1a5771665811a" },
|
|
163176
|
+
{ key: "index.html", contentType: "text/html; charset=utf-8", offset: 4652921, length: 4947, sha256: "20598965f8c1a535a27ff4c5a5812f64e94ce324edb2314d40ab6347f3924622" },
|
|
163177
|
+
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4657868, length: 17786, sha256: "084107ca997628c248f1b0ba3a7494744850df39fad813546ab8bdb82a6058da" }
|
|
162851
163178
|
];
|
|
162852
163179
|
}
|
|
162853
163180
|
});
|
|
Binary file
|
|
@@ -14,8 +14,6 @@
|
|
|
14
14
|
"SelectionControl",
|
|
15
15
|
"ActivityIndicator",
|
|
16
16
|
"Menu",
|
|
17
|
-
"Tooltip",
|
|
18
|
-
"Popover",
|
|
19
17
|
"ChipsInput",
|
|
20
18
|
"OtpInput",
|
|
21
19
|
"Video",
|
|
@@ -805,21 +803,7 @@
|
|
|
805
803
|
"category": "Overlays & menus",
|
|
806
804
|
"propsType": "TooltipProps",
|
|
807
805
|
"bindings": [],
|
|
808
|
-
"
|
|
809
|
-
"props": [
|
|
810
|
-
"edge",
|
|
811
|
-
"trigger",
|
|
812
|
-
"onDismiss"
|
|
813
|
-
],
|
|
814
|
-
"platforms": [
|
|
815
|
-
"ios",
|
|
816
|
-
"android",
|
|
817
|
-
"web"
|
|
818
|
-
],
|
|
819
|
-
"severity": "category",
|
|
820
|
-
"note": "Not an overlay — renders always-expanded inline; `edge`, `trigger` and dismissal are inert."
|
|
821
|
-
},
|
|
822
|
-
"propsSource": "export interface TooltipProps {\n anchor?: Component;\n text?: string;\n /** Present → rich tooltip. */\n title?: string;\n edge?: \"top\" | \"bottom\" | \"leading\" | \"trailing\" | \"auto\";\n trigger?: \"tap\" | \"long_press\" | \"auto\";\n onDismiss?: Action;\n}"
|
|
806
|
+
"propsSource": "export interface TooltipProps {\n anchor?: Component;\n text?: string;\n /** Present → rich tooltip. */\n title?: string;\n /** The side of the anchor the bubble floats on; `auto` / absent → `top`. Flips to the opposite\n * side when there is no room, as every renderer does. */\n edge?: \"top\" | \"bottom\" | \"leading\" | \"trailing\" | \"auto\";\n /** What opens the (otherwise hidden) bubble. `auto` / absent → a long-press on touch, hover and\n * keyboard focus on the web. */\n trigger?: \"tap\" | \"long_press\" | \"auto\";\n /** Fired once each time an open tooltip closes (outside tap, Escape, timeout). */\n onDismiss?: Action;\n}"
|
|
823
807
|
},
|
|
824
808
|
{
|
|
825
809
|
"name": "Popover",
|
|
@@ -828,16 +812,6 @@
|
|
|
828
812
|
"bindings": [
|
|
829
813
|
"presentedPath"
|
|
830
814
|
],
|
|
831
|
-
"notImplemented": {
|
|
832
|
-
"props": [
|
|
833
|
-
"edge"
|
|
834
|
-
],
|
|
835
|
-
"platforms": [
|
|
836
|
-
"ios"
|
|
837
|
-
],
|
|
838
|
-
"severity": "category",
|
|
839
|
-
"note": "The bubble is drawn in flow under its anchor; `edge` placement is not implemented."
|
|
840
|
-
},
|
|
841
815
|
"propsSource": "export interface PopoverProps {\n anchor?: Component;\n content?: Component;\n edge?: \"top\" | \"bottom\" | \"leading\" | \"trailing\" | \"auto\";\n presented?: boolean;\n presentedPath?: string;\n onDismiss?: Action;\n /** The overlay traps focus and hides the rest of the tree from AT while\n * presented (iOS `accessibilityViewIsModal`, Android `isTraversalGroup`, ARIA\n * `aria-modal`). TRI-STATE: absent takes the Popover's default — MODAL,\n * from the one shared overlay default table — and an explicit `false` opts out. Applies to a\n * popover presented through `presented` / `presentedPath`; one with neither is an\n * inline callout, and never modal. */\n modal?: boolean;\n}"
|
|
842
816
|
},
|
|
843
817
|
{
|
|
@@ -119,9 +119,9 @@ See also **[Modifiers](#modifiers)** (the `modifiers` block) and **[Actions](#ac
|
|
|
119
119
|
|
|
120
120
|
These props are accepted by the schema and pass validation, but the named platform's renderer never reads them — they silently do nothing (no warning, no log). Prefer a prop NOT listed here, or drive the behaviour from a worker.
|
|
121
121
|
|
|
122
|
-
**Scope:
|
|
122
|
+
**Scope: 16 of 87 components, all of them android / web / ios-only** — every other component/platform pair reads every prop it decodes. The list splits in two, and the halves mean different things:
|
|
123
123
|
|
|
124
|
-
- **`category` (
|
|
124
|
+
- **`category` (5: `Menu`, `ChipsInput`, `OtpInput`, `MediaPlayer`, `TimeGrid`)** — the prop changes the component's *kind*. These genuinely are **not implemented**: an overlay renders always-visible inline, so the component does not do the job its name implies. Check the row's note for a working alternative.
|
|
125
125
|
- **`styling` (11: `Text`, `Icon`, `Carousel`, `Pager`, `Snackbar`, `WebView`, `Slider`, `SelectionControl`, `ActivityIndicator`, `Video`, `PdfView`)** — the component itself **works**; only the listed prop is inert. `Slider` on iOS is a working slider whose `debounceMs` does not throttle — not a broken `Slider`. Use the component; just do not depend on that one prop.
|
|
126
126
|
|
|
127
127
|
| Component | Unread props | Platform | Kind | Note |
|
|
@@ -137,8 +137,6 @@ These props are accepted by the schema and pass validation, but the named platfo
|
|
|
137
137
|
| `ActivityIndicator` | `ring` | ios, android, web | styling | The `ring` style is never selected (determinate vs indeterminate follows `value`). |
|
|
138
138
|
| `Menu` | `itemsPath` | ios | category | `itemsPath` does not bind items. |
|
|
139
139
|
| `Menu` | `style`, `itemsPath` | android, web | category | `style: "action_sheet"` renders as a dropdown. (`style: "context"` is honoured: it opens on a long-press, or right-click on web, with its `preview`.) `itemsPath` does not bind items. |
|
|
140
|
-
| `Tooltip` | `edge`, `trigger`, `onDismiss` | ios, android, web | category | Not an overlay — renders always-expanded inline; `edge`, `trigger` and dismissal are inert. |
|
|
141
|
-
| `Popover` | `edge` | ios | category | The bubble is drawn in flow under its anchor; `edge` placement is not implemented. |
|
|
142
140
|
| `ChipsInput` | `onAdd` | ios, android | category | `onAdd` never dispatches. |
|
|
143
141
|
| `OtpInput` | `onComplete`, `onChange` | ios, android, web | category | Neither `onChange` nor `onComplete` dispatches. |
|
|
144
142
|
| `Video` | `poster` | ios | styling | `poster` is not shown. |
|
|
@@ -1409,14 +1407,17 @@ export interface TooltipProps {
|
|
|
1409
1407
|
text?: string;
|
|
1410
1408
|
/** Present → rich tooltip. */
|
|
1411
1409
|
title?: string;
|
|
1410
|
+
/** The side of the anchor the bubble floats on; `auto` / absent → `top`. Flips to the opposite
|
|
1411
|
+
* side when there is no room, as every renderer does. */
|
|
1412
1412
|
edge?: "top" | "bottom" | "leading" | "trailing" | "auto";
|
|
1413
|
+
/** What opens the (otherwise hidden) bubble. `auto` / absent → a long-press on touch, hover and
|
|
1414
|
+
* keyboard focus on the web. */
|
|
1413
1415
|
trigger?: "tap" | "long_press" | "auto";
|
|
1416
|
+
/** Fired once each time an open tooltip closes (outside tap, Escape, timeout). */
|
|
1414
1417
|
onDismiss?: Action;
|
|
1415
1418
|
}
|
|
1416
1419
|
```
|
|
1417
1420
|
|
|
1418
|
-
> ⚠️ **Not implemented on ios, android, web:** `edge`, `trigger`, `onDismiss` — Not an overlay — renders always-expanded inline; `edge`, `trigger` and dismissal are inert.
|
|
1419
|
-
|
|
1420
1421
|
#### Popover
|
|
1421
1422
|
|
|
1422
1423
|
```ts
|
|
@@ -1437,8 +1438,6 @@ export interface PopoverProps {
|
|
|
1437
1438
|
}
|
|
1438
1439
|
```
|
|
1439
1440
|
|
|
1440
|
-
> ⚠️ **Not implemented on ios:** `edge` — The bubble is drawn in flow under its anchor; `edge` placement is not implemented.
|
|
1441
|
-
|
|
1442
1441
|
### Chips & selection
|
|
1443
1442
|
|
|
1444
1443
|
#### Chip
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1475.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
|
|
6
6
|
"keywords": [
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"artifactId": "himalaya-cli"
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
"falconPackageHash": "
|
|
74
|
+
"falconPackageHash": "224e56d2071ce0050cf65a861313895b2147862685f52d1f6b8abd95"
|
|
75
75
|
}
|