@wix/himalaya-cli 0.1195.0 → 0.1197.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/dev-server/src/builder.d.ts +1 -0
- package/dist/cli.mjs +232 -29
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/component-reference.json +4 -84
- package/guides/component-reference.md +5 -26
- package/package.json +2 -2
package/dist/cli.mjs
CHANGED
|
@@ -25225,7 +25225,6 @@ function shouldRevealError(args) {
|
|
|
25225
25225
|
var EMAIL_RE, URL_HOST_RE, INTEGER_RE, NUMBER_RE;
|
|
25226
25226
|
var init_validation = __esm({
|
|
25227
25227
|
"../../core/ts/src/validation.ts"() {
|
|
25228
|
-
"use strict";
|
|
25229
25228
|
EMAIL_RE = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*\.[A-Za-z]{2,}$/;
|
|
25230
25229
|
URL_HOST_RE = /^[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(:[0-9]+)?$/;
|
|
25231
25230
|
INTEGER_RE = /^[+-]?[0-9]+$/;
|
|
@@ -25885,7 +25884,6 @@ function validateWorkerSubtree(raw, slotId, policy, actionCatalog) {
|
|
|
25885
25884
|
var WORKER_SUBTREE_CEILINGS, ID_PART, ACTION_ID;
|
|
25886
25885
|
var init_worker_subtree = __esm({
|
|
25887
25886
|
"../../core/ts/src/worker-subtree.ts"() {
|
|
25888
|
-
"use strict";
|
|
25889
25887
|
init_worker_subtree_safe_types_generated();
|
|
25890
25888
|
WORKER_SUBTREE_CEILINGS = Object.freeze({
|
|
25891
25889
|
maxEncodedBytes: 65536,
|
|
@@ -32682,7 +32680,7 @@ function resolveRowAction(action, ctx) {
|
|
|
32682
32680
|
params: Object.fromEntries(Object.entries(params).map(([k, v]) => [k, typeof v === "number" || typeof v === "boolean" ? String(v) : v]))
|
|
32683
32681
|
};
|
|
32684
32682
|
}
|
|
32685
|
-
var useResolvedId, FONT, rowShareFloor, A11ySwitch, A11Y_PART, A11ySlider, A11ySelectionControl, actOf, withSelection, resolveItemDeep, A11yTabs, A11ySegmented, disclosureSeq, A11yDisclosure;
|
|
32683
|
+
var useResolvedId, FONT, rowShareFloor, A11ySwitch, A11Y_PART, A11ySlider, A11ySelectionControl, actOf, withSelection, resolveItemDeep, tabsActiveColorName, swipeTabPage, A11yTabs, A11ySegmented, disclosureSeq, A11yDisclosure;
|
|
32686
32684
|
var init_controls = __esm({
|
|
32687
32685
|
"../../core/web-renderer/src/a11y/controls.tsx"() {
|
|
32688
32686
|
"use strict";
|
|
@@ -32980,14 +32978,33 @@ var init_controls = __esm({
|
|
|
32980
32978
|
}
|
|
32981
32979
|
return value;
|
|
32982
32980
|
};
|
|
32983
|
-
|
|
32981
|
+
tabsActiveColorName = (raw, bound) => {
|
|
32982
|
+
const name = typeof raw === "string" && isBinding(raw) ? bound : raw;
|
|
32983
|
+
return typeof name === "string" && name.trim() ? name.trim() : void 0;
|
|
32984
|
+
};
|
|
32985
|
+
swipeTabPage = (pages, tabId) => {
|
|
32986
|
+
const cases = Array.isArray(pages?.cases) ? pages.cases : [];
|
|
32987
|
+
const dflt = pages?.defaultCase ?? pages?.default_case;
|
|
32988
|
+
return (cases.find((c) => c?.id === tabId) ?? cases.find((c) => c?.id === dflt))?.content;
|
|
32989
|
+
};
|
|
32990
|
+
A11yTabs = ({ props, ctx, wrap, renderChild }) => {
|
|
32984
32991
|
const C = ctx.color;
|
|
32985
32992
|
const optionsPath = props.optionsPath ?? props.options_path;
|
|
32986
32993
|
const boundTabs = useBoundValue(ctx, typeof optionsPath === "string" && isBinding(optionsPath) ? optionsPath : "");
|
|
32994
|
+
const activeColorPath = props.activeColorPath ?? props.active_color_path;
|
|
32995
|
+
const boundActive = useBoundValue(ctx, typeof activeColorPath === "string" && isBinding(activeColorPath) ? activeColorPath : "");
|
|
32996
|
+
const activeName = tabsActiveColorName(activeColorPath, boundActive);
|
|
32987
32997
|
const selectedId = useResolvedId(props.selectedId, ctx);
|
|
32988
32998
|
const tabs = Array.isArray(boundTabs) && boundTabs.length ? boundTabs : Array.isArray(props.tabs) ? props.tabs : [];
|
|
32989
|
-
const
|
|
32999
|
+
const pages = props.style === "swipe" ? props.swipePages : void 0;
|
|
33000
|
+
const [local, setLocal] = React4.useState(void 0);
|
|
33001
|
+
React4.useEffect(() => {
|
|
33002
|
+
setLocal(void 0);
|
|
33003
|
+
}, [selectedId]);
|
|
33004
|
+
const current = local != null && tabs.some((t) => t.id === local) ? local : selectedId;
|
|
33005
|
+
const selIdx = Math.max(0, tabs.findIndex((t) => t.id === (current ?? tabs[0]?.id)));
|
|
32990
33006
|
const select = (i) => {
|
|
33007
|
+
if (pages) setLocal(tabs[i]?.id);
|
|
32991
33008
|
const act = actOf(tabs[i], props.onChange ?? props.onSelect);
|
|
32992
33009
|
if (ctx.onAction && act) ctx.onAction(withSelection(act, { selectedId: String(tabs[i]?.id ?? i) }));
|
|
32993
33010
|
};
|
|
@@ -33001,7 +33018,28 @@ var init_controls = __esm({
|
|
|
33001
33018
|
e.preventDefault();
|
|
33002
33019
|
if (ni !== selIdx) select(ni);
|
|
33003
33020
|
};
|
|
33004
|
-
|
|
33021
|
+
const pagerRef = React4.useRef(null);
|
|
33022
|
+
const settle = React4.useRef(void 0);
|
|
33023
|
+
React4.useEffect(() => {
|
|
33024
|
+
const el = pagerRef.current;
|
|
33025
|
+
if (!el || !el.clientWidth) return;
|
|
33026
|
+
const x = selIdx * el.clientWidth;
|
|
33027
|
+
if (Math.abs(el.scrollLeft - x) > 1) el.scrollTo?.({ left: x, behavior: "smooth" });
|
|
33028
|
+
}, [selIdx, pages]);
|
|
33029
|
+
React4.useEffect(() => () => clearTimeout(settle.current), []);
|
|
33030
|
+
const onPagerScroll = () => {
|
|
33031
|
+
clearTimeout(settle.current);
|
|
33032
|
+
settle.current = setTimeout(() => {
|
|
33033
|
+
const el = pagerRef.current;
|
|
33034
|
+
if (!el || !el.clientWidth) return;
|
|
33035
|
+
const i = Math.round(el.scrollLeft / el.clientWidth);
|
|
33036
|
+
if (i >= 0 && i < tabs.length && i !== selIdx) select(i);
|
|
33037
|
+
}, 120);
|
|
33038
|
+
};
|
|
33039
|
+
const accent = C("accentPrimary", "#116DFF");
|
|
33040
|
+
const activeTint = activeName ? C(activeName, accent) : accent;
|
|
33041
|
+
const activeLabel = activeName ? C(activeName, accentTextColor(ctx)) : accentTextColor(ctx);
|
|
33042
|
+
const strip3 = /* @__PURE__ */ jsx5("div", { role: "tablist", onKeyDown, style: { display: "flex", gap: 18, borderBottom: `1px solid ${C("border", "#ddd")}`, width: "100%", ...pages ? {} : wrap }, children: tabs.map((t, i) => {
|
|
33005
33043
|
const on3 = i === selIdx;
|
|
33006
33044
|
return /* @__PURE__ */ jsxs2(
|
|
33007
33045
|
"button",
|
|
@@ -33011,7 +33049,7 @@ var init_controls = __esm({
|
|
|
33011
33049
|
"aria-selected": on3,
|
|
33012
33050
|
tabIndex: on3 ? 0 : -1,
|
|
33013
33051
|
onClick: () => select(i),
|
|
33014
|
-
style: { all: "unset", display: "flex", gap: 6, alignItems: "center", minWidth: 44, minHeight: 44, padding: "10px 0", fontFamily: FONT(ctx), fontWeight: 600, fontSize: pxToRem(14), cursor: "pointer", color: on3 ?
|
|
33052
|
+
style: { all: "unset", display: "flex", gap: 6, alignItems: "center", minWidth: 44, minHeight: 44, padding: "10px 0", fontFamily: FONT(ctx), fontWeight: 600, fontSize: pxToRem(14), cursor: "pointer", color: on3 ? activeLabel : C("textSecondary", "#777"), borderBottom: on3 ? `2px solid ${activeTint}` : "2px solid transparent", marginBottom: -1 },
|
|
33015
33053
|
children: [
|
|
33016
33054
|
asText2(t.label),
|
|
33017
33055
|
t.badge && /* @__PURE__ */ jsx5("span", { "aria-hidden": true, style: { fontSize: pxToRem(10), fontWeight: 700, background: C("surfaceTertiary", "#eee"), color: C("textSecondary", "#666"), padding: "1px 6px", borderRadius: 999 }, children: t.badge })
|
|
@@ -33020,6 +33058,27 @@ var init_controls = __esm({
|
|
|
33020
33058
|
t.id ?? i
|
|
33021
33059
|
);
|
|
33022
33060
|
}) });
|
|
33061
|
+
if (!pages) return strip3;
|
|
33062
|
+
return /* @__PURE__ */ jsxs2("div", { style: { display: "flex", flexDirection: "column", width: "100%", ...wrap }, children: [
|
|
33063
|
+
strip3,
|
|
33064
|
+
/* @__PURE__ */ jsx5(
|
|
33065
|
+
"div",
|
|
33066
|
+
{
|
|
33067
|
+
ref: pagerRef,
|
|
33068
|
+
"data-part": "pager",
|
|
33069
|
+
onScroll: onPagerScroll,
|
|
33070
|
+
style: { display: "flex", overflowX: "auto", scrollSnapType: "x mandatory", scrollbarWidth: "none", overscrollBehaviorX: "contain", width: "100%" },
|
|
33071
|
+
children: tabs.map((t, i) => {
|
|
33072
|
+
const content = swipeTabPage(pages, t.id);
|
|
33073
|
+
return (
|
|
33074
|
+
// An off-screen page is `inert`, not just `aria-hidden`: its controls must leave the
|
|
33075
|
+
// tab order too, or Tab focuses a hidden control (axe `aria-hidden-focus`).
|
|
33076
|
+
/* @__PURE__ */ jsx5("div", { role: "tabpanel", "aria-hidden": i !== selIdx, ...i !== selIdx ? { inert: "" } : {}, style: { flex: "0 0 100%", minWidth: 0, scrollSnapAlign: "start", scrollSnapStop: "always", boxSizing: "border-box" }, children: content ? renderChild(content) : null }, t.id ?? i)
|
|
33077
|
+
);
|
|
33078
|
+
})
|
|
33079
|
+
}
|
|
33080
|
+
)
|
|
33081
|
+
] });
|
|
33023
33082
|
};
|
|
33024
33083
|
A11ySegmented = ({ props, ctx, wrap }) => {
|
|
33025
33084
|
const C = ctx.color;
|
|
@@ -33218,6 +33277,32 @@ var init_overlayModality = __esm({
|
|
|
33218
33277
|
}
|
|
33219
33278
|
});
|
|
33220
33279
|
|
|
33280
|
+
// ../../core/web-renderer/src/sheet.ts
|
|
33281
|
+
function sheetDetents(detents) {
|
|
33282
|
+
if (!Array.isArray(detents)) return [];
|
|
33283
|
+
const kept = detents.filter((d) => typeof d === "number" && d > 0 && d <= 1);
|
|
33284
|
+
return [...new Set(kept)].sort((a, b) => a - b);
|
|
33285
|
+
}
|
|
33286
|
+
function nextDetentIndex(index, count2) {
|
|
33287
|
+
return count2 <= 1 ? 0 : (index + 1) % count2;
|
|
33288
|
+
}
|
|
33289
|
+
function detentAfterDrag(index, count2, dy) {
|
|
33290
|
+
if (count2 <= 1 || Math.abs(dy) < DETENT_DRAG_THRESHOLD) return Math.max(0, Math.min(index, count2 - 1));
|
|
33291
|
+
return Math.max(0, Math.min(count2 - 1, index + (dy < 0 ? 1 : -1)));
|
|
33292
|
+
}
|
|
33293
|
+
function sheetEdge(edge) {
|
|
33294
|
+
return edge === "leading" || edge === "trailing" ? edge : "bottom";
|
|
33295
|
+
}
|
|
33296
|
+
var DETENT_DRAG_THRESHOLD, SIDE_SHEET_MAX_WIDTH, SIDE_SHEET_FRACTION, SIDE_SHEET_WIDTH_CSS;
|
|
33297
|
+
var init_sheet = __esm({
|
|
33298
|
+
"../../core/web-renderer/src/sheet.ts"() {
|
|
33299
|
+
DETENT_DRAG_THRESHOLD = 24;
|
|
33300
|
+
SIDE_SHEET_MAX_WIDTH = 320;
|
|
33301
|
+
SIDE_SHEET_FRACTION = 0.85;
|
|
33302
|
+
SIDE_SHEET_WIDTH_CSS = `min(${SIDE_SHEET_MAX_WIDTH}px, ${SIDE_SHEET_FRACTION * 100}%)`;
|
|
33303
|
+
}
|
|
33304
|
+
});
|
|
33305
|
+
|
|
33221
33306
|
// ../../core/web-renderer/src/listGestures.tsx
|
|
33222
33307
|
import { useRef, useState as useState2 } from "react";
|
|
33223
33308
|
import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
@@ -34216,6 +34301,23 @@ function ensureMarqueeKeyframes() {
|
|
|
34216
34301
|
el.textContent = "@keyframes himalaya-marquee{from{transform:translateX(0)}to{transform:translateX(-100%)}}";
|
|
34217
34302
|
document.head.appendChild(el);
|
|
34218
34303
|
}
|
|
34304
|
+
function swipeTabsAdoption(children) {
|
|
34305
|
+
if (!Array.isArray(children)) return children;
|
|
34306
|
+
const out2 = [];
|
|
34307
|
+
for (let i = 0; i < children.length; i++) {
|
|
34308
|
+
const node = children[i];
|
|
34309
|
+
const next = children[i + 1];
|
|
34310
|
+
const n = node && typeof node === "object" ? normalize(node) : void 0;
|
|
34311
|
+
if (n?.type === "Tabs" && n.props?.style === "swipe" && next && typeof next === "object" && normalize(next).type === "FragmentSlot") {
|
|
34312
|
+
const props = { ...n.props, swipePages: normalize(next).props };
|
|
34313
|
+
out2.push(node.body ? { ...node, body: { ...node.body, props } } : { ...node, props });
|
|
34314
|
+
i++;
|
|
34315
|
+
continue;
|
|
34316
|
+
}
|
|
34317
|
+
out2.push(node);
|
|
34318
|
+
}
|
|
34319
|
+
return out2;
|
|
34320
|
+
}
|
|
34219
34321
|
function wantsRowStretch(node) {
|
|
34220
34322
|
const { type, props } = normalize(node);
|
|
34221
34323
|
if (type === "Toggle") return true;
|
|
@@ -35519,7 +35621,7 @@ function renderInner(node, ctx) {
|
|
|
35519
35621
|
switch (type) {
|
|
35520
35622
|
// ───────────── layout ─────────────
|
|
35521
35623
|
case "VStack":
|
|
35522
|
-
return /* @__PURE__ */ jsx8("div", { style: { display: "flex", flexDirection: "column", gap: gap(props.spacing), alignItems: alignItems(props.alignment), alignSelf: "stretch", ...wrap }, children: kids2(props.children, ctx) });
|
|
35624
|
+
return /* @__PURE__ */ jsx8("div", { style: { display: "flex", flexDirection: "column", gap: gap(props.spacing), alignItems: alignItems(props.alignment), alignSelf: "stretch", ...wrap }, children: kids2(swipeTabsAdoption(props.children), ctx) });
|
|
35523
35625
|
case "HStack": {
|
|
35524
35626
|
const rowFills = Array.isArray(props.children) && props.children.some((c) => {
|
|
35525
35627
|
const n = normalize(c);
|
|
@@ -36138,6 +36240,7 @@ var init_renderNode = __esm({
|
|
|
36138
36240
|
init_controls();
|
|
36139
36241
|
init_modalStack();
|
|
36140
36242
|
init_overlayModality();
|
|
36243
|
+
init_sheet();
|
|
36141
36244
|
init_listGestures();
|
|
36142
36245
|
init_worker_subtree();
|
|
36143
36246
|
init_preview_surfaces();
|
|
@@ -38180,17 +38283,117 @@ var init_renderNode = __esm({
|
|
|
38180
38283
|
const bound = useResolvedScalar(props.presentedPath, ctx);
|
|
38181
38284
|
const gated = props.presentedPath != null || props.presented != null;
|
|
38182
38285
|
const presented = props.presentedPath != null ? bound : props.presented;
|
|
38183
|
-
const
|
|
38286
|
+
const gateOpen = !gated || presented === true || presented === "true";
|
|
38287
|
+
const [dismissed, setDismissed] = React7.useState(false);
|
|
38288
|
+
React7.useEffect(() => {
|
|
38289
|
+
if (!gateOpen) setDismissed(false);
|
|
38290
|
+
}, [gateOpen]);
|
|
38291
|
+
const shown2 = gateOpen && !dismissed;
|
|
38184
38292
|
const modal = isOverlayModal("BottomSheet", props.modal);
|
|
38293
|
+
const dismissible = props.dismissible !== false;
|
|
38294
|
+
const edge = sheetEdge(props.edge);
|
|
38295
|
+
const detents = edge === "bottom" ? sheetDetents(props.detents) : [];
|
|
38296
|
+
const [detentIndex, setDetentIndex] = React7.useState(0);
|
|
38297
|
+
React7.useEffect(() => {
|
|
38298
|
+
if (!shown2) setDetentIndex(0);
|
|
38299
|
+
}, [shown2]);
|
|
38185
38300
|
const dialogRef = React7.useRef(null);
|
|
38186
38301
|
const trapTab = useModalOverlay(dialogRef, shown2 && modal);
|
|
38302
|
+
const latest = React7.useRef({ ctx, onDismiss: props.onDismiss });
|
|
38303
|
+
latest.current = { ctx, onDismiss: props.onDismiss };
|
|
38304
|
+
const closed = React7.useRef(false);
|
|
38305
|
+
React7.useEffect(() => {
|
|
38306
|
+
if (shown2) closed.current = false;
|
|
38307
|
+
}, [shown2]);
|
|
38308
|
+
const dismiss = React7.useCallback(() => {
|
|
38309
|
+
if (closed.current) return;
|
|
38310
|
+
closed.current = true;
|
|
38311
|
+
setDismissed(true);
|
|
38312
|
+
const { ctx: now, onDismiss } = latest.current;
|
|
38313
|
+
if (onDismiss != null) now.onAction?.(resolveItemDeep2(onDismiss, now));
|
|
38314
|
+
}, []);
|
|
38315
|
+
React7.useEffect(() => {
|
|
38316
|
+
if (!shown2 || !dismissible) return;
|
|
38317
|
+
const doc = dialogRef.current?.ownerDocument;
|
|
38318
|
+
if (!doc) return;
|
|
38319
|
+
const onKey = (e) => {
|
|
38320
|
+
const d = dialogRef.current;
|
|
38321
|
+
if (e.key !== "Escape" || !d || !isWithinTopModal(d)) return;
|
|
38322
|
+
if (d.querySelector(`[role="menu"], [${PRESENTED_OVERLAY_ATTR}]`) != null) return;
|
|
38323
|
+
e.stopPropagation();
|
|
38324
|
+
dismiss();
|
|
38325
|
+
};
|
|
38326
|
+
doc.addEventListener("keydown", onKey, true);
|
|
38327
|
+
return () => doc.removeEventListener("keydown", onKey, true);
|
|
38328
|
+
}, [shown2, dismissible, dismiss]);
|
|
38329
|
+
const drag = React7.useRef(null);
|
|
38187
38330
|
if (!shown2) return null;
|
|
38188
|
-
const grabber = props.showGrabber !== false;
|
|
38331
|
+
const grabber = props.showGrabber !== false && edge === "bottom";
|
|
38189
38332
|
const sheet = idiomControls(ctx.idiom).sheet;
|
|
38190
|
-
|
|
38191
|
-
|
|
38192
|
-
|
|
38193
|
-
] }
|
|
38333
|
+
const r = `${sheet.cornerRadius}px`;
|
|
38334
|
+
const side2 = edge !== "bottom";
|
|
38335
|
+
const index = Math.min(detentIndex, Math.max(detents.length - 1, 0));
|
|
38336
|
+
const sized = detents.length ? { height: `${detents[index] * 100}%`, maxHeight: `${detents[detents.length - 1] * 100}%`, display: "flex", flexDirection: "column" } : {};
|
|
38337
|
+
const shape = side2 ? {
|
|
38338
|
+
width: SIDE_SHEET_WIDTH_CSS,
|
|
38339
|
+
height: "100%",
|
|
38340
|
+
display: "flex",
|
|
38341
|
+
flexDirection: "column",
|
|
38342
|
+
// Unoffset, so it falls toward the scrim whichever physical side RTL puts the panel on —
|
|
38343
|
+
// box-shadow has no logical form, and the half cast at the screen edge is off-screen anyway.
|
|
38344
|
+
boxShadow: "0 0 24px rgba(0,0,0,.12)",
|
|
38345
|
+
// Rounded on the side that faces the screen — logical corners, so RTL flips them too.
|
|
38346
|
+
...edge === "leading" ? { borderStartEndRadius: r, borderEndEndRadius: r } : { borderStartStartRadius: r, borderEndStartRadius: r }
|
|
38347
|
+
} : { width: "100%", borderRadius: `${r} ${r} 0 0`, boxShadow: "0 -4px 24px rgba(0,0,0,.12)", ...sized };
|
|
38348
|
+
const handleBar = /* @__PURE__ */ jsx8("div", { style: { width: sheet.grabberWidth, height: sheet.grabberHeight, borderRadius: 999, background: C("surfaceTertiary", "#d8dce2") } });
|
|
38349
|
+
const handleBox = { display: "flex", justifyContent: "center", padding: "8px 0 4px", flexShrink: 0 };
|
|
38350
|
+
return /* @__PURE__ */ jsx8(
|
|
38351
|
+
"div",
|
|
38352
|
+
{
|
|
38353
|
+
"data-sheet-scrim": "",
|
|
38354
|
+
onClick: dismissible ? (e) => {
|
|
38355
|
+
if (drag.current?.moved) {
|
|
38356
|
+
drag.current = null;
|
|
38357
|
+
return;
|
|
38358
|
+
}
|
|
38359
|
+
if (e.target === e.currentTarget) dismiss();
|
|
38360
|
+
} : void 0,
|
|
38361
|
+
style: { position: "absolute", inset: 0, background: "rgba(0,0,0,.35)", zIndex: 50, display: "flex", ...side2 ? { flexDirection: "row", justifyContent: edge === "leading" ? "flex-start" : "flex-end" } : { flexDirection: "column", justifyContent: "flex-end" }, ...wrap },
|
|
38362
|
+
children: /* @__PURE__ */ jsxs5("div", { ref: dialogRef, role: "dialog", "data-sheet-edge": edge, "aria-modal": modal ? "true" : void 0, tabIndex: modal ? -1 : void 0, onKeyDown: modal ? trapTab : void 0, "aria-label": props.title != null ? sheetTitle : "Sheet", style: { background: C("surfacePrimary", "#fff"), overflow: "hidden", ...shape }, children: [
|
|
38363
|
+
grabber && (detents.length > 1 ? /* @__PURE__ */ jsx8(
|
|
38364
|
+
"button",
|
|
38365
|
+
{
|
|
38366
|
+
type: "button",
|
|
38367
|
+
"aria-label": "Resize sheet",
|
|
38368
|
+
"data-sheet-handle": "",
|
|
38369
|
+
onClick: () => {
|
|
38370
|
+
if (drag.current?.moved) {
|
|
38371
|
+
drag.current = null;
|
|
38372
|
+
return;
|
|
38373
|
+
}
|
|
38374
|
+
drag.current = null;
|
|
38375
|
+
setDetentIndex((i) => nextDetentIndex(i, detents.length));
|
|
38376
|
+
},
|
|
38377
|
+
onPointerDown: (e) => {
|
|
38378
|
+
drag.current = { y: e.clientY, moved: false };
|
|
38379
|
+
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
38380
|
+
},
|
|
38381
|
+
onPointerUp: (e) => {
|
|
38382
|
+
const d = drag.current;
|
|
38383
|
+
if (!d) return;
|
|
38384
|
+
const dy = e.clientY - d.y;
|
|
38385
|
+
if (Math.abs(dy) < DETENT_DRAG_THRESHOLD) return;
|
|
38386
|
+
d.moved = true;
|
|
38387
|
+
setDetentIndex(detentAfterDrag(index, detents.length, dy));
|
|
38388
|
+
},
|
|
38389
|
+
style: { ...handleBox, width: "100%", border: "none", background: "transparent", cursor: "ns-resize", touchAction: "none" },
|
|
38390
|
+
children: handleBar
|
|
38391
|
+
}
|
|
38392
|
+
) : /* @__PURE__ */ jsx8("div", { style: handleBox, children: handleBar })),
|
|
38393
|
+
/* @__PURE__ */ jsx8("div", { style: { padding: side2 ? "16px" : "8px 16px 16px", ...side2 || detents.length ? { flex: 1, minHeight: 0, overflowY: "auto" } : {} }, children: props.content ? renderNode(props.content, ctx) : null })
|
|
38394
|
+
] })
|
|
38395
|
+
}
|
|
38396
|
+
);
|
|
38194
38397
|
});
|
|
38195
38398
|
PRESENTED_OVERLAY_ATTR = "data-hm-presented-overlay";
|
|
38196
38399
|
PopoverNode = withExtras("PopoverNode", ({ props, ctx, wrap }) => {
|
|
@@ -61156,21 +61359,21 @@ var init_preview_assets_generated = __esm({
|
|
|
61156
61359
|
"../../packages/serve/src/preview-assets.generated.ts"() {
|
|
61157
61360
|
init_preview_assets_format();
|
|
61158
61361
|
PREVIEW_ASSET_MANIFEST = [
|
|
61159
|
-
{ key: "assets/index-
|
|
61160
|
-
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset:
|
|
61161
|
-
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset:
|
|
61162
|
-
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset:
|
|
61163
|
-
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
61164
|
-
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset:
|
|
61165
|
-
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset:
|
|
61166
|
-
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
61167
|
-
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset:
|
|
61168
|
-
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
61169
|
-
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset:
|
|
61170
|
-
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset:
|
|
61171
|
-
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
61172
|
-
{ key: "index.html", contentType: "text/html; charset=utf-8", offset:
|
|
61173
|
-
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
61362
|
+
{ key: "assets/index-Be22pfxU.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1139970, sha256: "62e8562cac4241e5d50d5174a0a0c919a8f95eef7bcab5e2864bd1b809ba1934" },
|
|
61363
|
+
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1139978, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
|
|
61364
|
+
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1144588, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
|
|
61365
|
+
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1633172, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
|
|
61366
|
+
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1724096, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
|
|
61367
|
+
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1815080, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
|
|
61368
|
+
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1906060, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
|
|
61369
|
+
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1996932, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
|
|
61370
|
+
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2087912, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
|
|
61371
|
+
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2196548, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
|
|
61372
|
+
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2305632, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
|
|
61373
|
+
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2414680, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
|
|
61374
|
+
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2522380, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
|
|
61375
|
+
{ key: "index.html", contentType: "text/html; charset=utf-8", offset: 2610488, length: 4947, sha256: "386fa61b1b421ce787158e789f1305d53d99f3bd49f49f90a18913d84b2d155a" },
|
|
61376
|
+
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2615435, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
|
|
61174
61377
|
];
|
|
61175
61378
|
}
|
|
61176
61379
|
});
|
|
Binary file
|
|
@@ -5,8 +5,6 @@
|
|
|
5
5
|
"componentCount": 84,
|
|
6
6
|
"notImplementedComponents": [
|
|
7
7
|
"Text",
|
|
8
|
-
"Picker",
|
|
9
|
-
"Tabs",
|
|
10
8
|
"Carousel",
|
|
11
9
|
"CollapsingHeader",
|
|
12
10
|
"Banner",
|
|
@@ -15,7 +13,6 @@
|
|
|
15
13
|
"Slider",
|
|
16
14
|
"SelectionControl",
|
|
17
15
|
"ActivityIndicator",
|
|
18
|
-
"BottomSheet",
|
|
19
16
|
"Menu",
|
|
20
17
|
"Tooltip",
|
|
21
18
|
"Popover",
|
|
@@ -322,7 +319,9 @@
|
|
|
322
319
|
"name": "Picker",
|
|
323
320
|
"category": "Form primitives",
|
|
324
321
|
"propsType": "PickerProps",
|
|
325
|
-
"bindings": [
|
|
322
|
+
"bindings": [
|
|
323
|
+
"optionsPath"
|
|
324
|
+
],
|
|
326
325
|
"dispatches": [
|
|
327
326
|
{
|
|
328
327
|
"callback": "onChange",
|
|
@@ -341,17 +340,6 @@
|
|
|
341
340
|
]
|
|
342
341
|
}
|
|
343
342
|
],
|
|
344
|
-
"notImplemented": {
|
|
345
|
-
"props": [
|
|
346
|
-
"optionsPath",
|
|
347
|
-
"placeholder"
|
|
348
|
-
],
|
|
349
|
-
"platforms": [
|
|
350
|
-
"ios"
|
|
351
|
-
],
|
|
352
|
-
"severity": "styling",
|
|
353
|
-
"note": "Standalone Picker: `optionsPath` does not bind (it does inside a FormField); `placeholder` is only the accessible name, never shown."
|
|
354
|
-
},
|
|
355
343
|
"propsSource": "export interface PickerProps {\n options: PickerOption[];\n selectedId?: string;\n onChange?: Action;\n placeholder?: string;\n /** \"$service:\" sentinel → worker array of {id,label}; `options` is the fallback. */\n optionsPath?: string;\n}"
|
|
356
344
|
},
|
|
357
345
|
{
|
|
@@ -475,6 +463,7 @@
|
|
|
475
463
|
"propsType": "TabsProps",
|
|
476
464
|
"bindings": [
|
|
477
465
|
"optionsPath",
|
|
466
|
+
"activeColorPath",
|
|
478
467
|
"selectedId"
|
|
479
468
|
],
|
|
480
469
|
"dispatches": [
|
|
@@ -484,39 +473,6 @@
|
|
|
484
473
|
"encoding": "string"
|
|
485
474
|
}
|
|
486
475
|
],
|
|
487
|
-
"notImplemented": [
|
|
488
|
-
{
|
|
489
|
-
"props": [
|
|
490
|
-
"style"
|
|
491
|
-
],
|
|
492
|
-
"platforms": [
|
|
493
|
-
"ios"
|
|
494
|
-
],
|
|
495
|
-
"severity": "styling",
|
|
496
|
-
"note": "`style: \"swipe\"` renders as plain top tabs."
|
|
497
|
-
},
|
|
498
|
-
{
|
|
499
|
-
"props": [
|
|
500
|
-
"activeColorPath"
|
|
501
|
-
],
|
|
502
|
-
"platforms": [
|
|
503
|
-
"android"
|
|
504
|
-
],
|
|
505
|
-
"severity": "styling",
|
|
506
|
-
"note": "`activeColorPath` does not tint the active tab."
|
|
507
|
-
},
|
|
508
|
-
{
|
|
509
|
-
"props": [
|
|
510
|
-
"activeColorPath",
|
|
511
|
-
"style"
|
|
512
|
-
],
|
|
513
|
-
"platforms": [
|
|
514
|
-
"web"
|
|
515
|
-
],
|
|
516
|
-
"severity": "styling",
|
|
517
|
-
"note": "`activeColorPath` does not tint the active tab. `style: \"swipe\"` renders as plain top tabs."
|
|
518
|
-
}
|
|
519
|
-
],
|
|
520
476
|
"propsSource": "export interface TabsProps {\n tabs: TabItem[];\n /** Literal id, or a binding-aware `$service:`/`$item.` live selection. */\n selectedId: string;\n onChange?: Action;\n style?: \"top\" | \"swipe\";\n /** `$service:` binding → a live tabs array (overrides `tabs`). */\n optionsPath?: string;\n /** `$service:` binding → a token name for the active-tab color. */\n activeColorPath?: string;\n}"
|
|
521
477
|
},
|
|
522
478
|
{
|
|
@@ -813,42 +769,6 @@
|
|
|
813
769
|
"bindings": [
|
|
814
770
|
"presentedPath"
|
|
815
771
|
],
|
|
816
|
-
"notImplemented": [
|
|
817
|
-
{
|
|
818
|
-
"props": [
|
|
819
|
-
"edge"
|
|
820
|
-
],
|
|
821
|
-
"platforms": [
|
|
822
|
-
"ios"
|
|
823
|
-
],
|
|
824
|
-
"severity": "category",
|
|
825
|
-
"note": "`edge` (side sheet) is ignored — it always opens from the bottom."
|
|
826
|
-
},
|
|
827
|
-
{
|
|
828
|
-
"props": [
|
|
829
|
-
"detents",
|
|
830
|
-
"edge"
|
|
831
|
-
],
|
|
832
|
-
"platforms": [
|
|
833
|
-
"android"
|
|
834
|
-
],
|
|
835
|
-
"severity": "category",
|
|
836
|
-
"note": "`detents` are ignored (opens full height). `edge` (side sheet) is ignored — it always opens from the bottom."
|
|
837
|
-
},
|
|
838
|
-
{
|
|
839
|
-
"props": [
|
|
840
|
-
"detents",
|
|
841
|
-
"dismissible",
|
|
842
|
-
"onDismiss",
|
|
843
|
-
"edge"
|
|
844
|
-
],
|
|
845
|
-
"platforms": [
|
|
846
|
-
"web"
|
|
847
|
-
],
|
|
848
|
-
"severity": "category",
|
|
849
|
-
"note": "`detents` are ignored (opens full height). No scrim tap / Escape to close, so `onDismiss` never fires — for a dismissible sheet here, present the content as its own screen with `presentation: \"sheet\"` on the navigating `Action`. `edge` (side sheet) is ignored — it always opens from the bottom."
|
|
850
|
-
}
|
|
851
|
-
],
|
|
852
772
|
"propsSource": "export interface BottomSheetProps {\n /** Place the sheet as a root-payload sibling (normally the final child), not\n * inside the trigger row, so its presented overlay can cover the whole screen. */\n content?: Component;\n /** Fractional heights, e.g. [0.3, 0.9]. */\n detents?: number[];\n dismissible?: boolean;\n showGrabber?: boolean;\n onDismiss?: Action;\n presented?: boolean;\n /** \"$service:\" binding → bool (overrides `presented`). */\n presentedPath?: string;\n edge?: \"bottom\" | \"leading\" | \"trailing\";\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 this component's default (**true**), an\n * explicit `false` opts it out. */\n modal?: boolean;\n}"
|
|
853
773
|
},
|
|
854
774
|
{
|
|
@@ -51,7 +51,7 @@ See also **[Modifiers](#modifiers)** (the `modifiers` block) and **[Actions](#ac
|
|
|
51
51
|
| `Form` | Form primitives | — |
|
|
52
52
|
| `FormField` | Form primitives | — |
|
|
53
53
|
| `FieldError` | Form primitives | `textPath` |
|
|
54
|
-
| `Picker` | Form primitives |
|
|
54
|
+
| `Picker` | Form primitives | `optionsPath` |
|
|
55
55
|
| `DatePicker` | Form primitives | `valuePath` |
|
|
56
56
|
| `StatefulSection` | State envelopes | — |
|
|
57
57
|
| `Skeleton` | State envelopes | — |
|
|
@@ -59,7 +59,7 @@ See also **[Modifiers](#modifiers)** (the `modifiers` block) and **[Actions](#ac
|
|
|
59
59
|
| `WorkerSubtree` | Bounded worker-authored component tree | `treeJsonPath` |
|
|
60
60
|
| `SearchField` | Search & filter | — |
|
|
61
61
|
| `FilterChips` | Search & filter | `optionsPath`, `selectedIds` |
|
|
62
|
-
| `Tabs` | Navigation primitives | `optionsPath`, `selectedId` |
|
|
62
|
+
| `Tabs` | Navigation primitives | `optionsPath`, `activeColorPath`, `selectedId` |
|
|
63
63
|
| `SegmentedControl` | Navigation primitives | `optionsPath`, `selectedId` |
|
|
64
64
|
| `Carousel` | Navigation primitives | `itemsPath` |
|
|
65
65
|
| `Pager` | Navigation primitives | — |
|
|
@@ -116,18 +116,14 @@ See also **[Modifiers](#modifiers)** (the `modifiers` block) and **[Actions](#ac
|
|
|
116
116
|
|
|
117
117
|
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.
|
|
118
118
|
|
|
119
|
-
**Scope:
|
|
119
|
+
**Scope: 20 of 84 components, all of them web / android / ios-only** — every other component/platform pair reads every prop it decodes. The list splits in two, and the halves mean different things:
|
|
120
120
|
|
|
121
|
-
- **`category` (
|
|
122
|
-
- **`styling` (
|
|
121
|
+
- **`category` (7: `Menu`, `Tooltip`, `Popover`, `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.
|
|
122
|
+
- **`styling` (13: `Text`, `Carousel`, `CollapsingHeader`, `Banner`, `Snackbar`, `WebView`, `Slider`, `SelectionControl`, `ActivityIndicator`, `Map`, `Video`, `PdfView`, `Agenda`)** — 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.
|
|
123
123
|
|
|
124
124
|
| Component | Unread props | Platform | Kind | Note |
|
|
125
125
|
|---|---|---|---|---|
|
|
126
126
|
| `Text` | `textDirection`, `animateReveal` | web | styling | `textDirection` sets no `dir`. `animateReveal` does not animate. |
|
|
127
|
-
| `Picker` | `optionsPath`, `placeholder` | ios | styling | Standalone Picker: `optionsPath` does not bind (it does inside a FormField); `placeholder` is only the accessible name, never shown. |
|
|
128
|
-
| `Tabs` | `style` | ios | styling | `style: "swipe"` renders as plain top tabs. |
|
|
129
|
-
| `Tabs` | `activeColorPath` | android | styling | `activeColorPath` does not tint the active tab. |
|
|
130
|
-
| `Tabs` | `activeColorPath`, `style` | web | styling | `activeColorPath` does not tint the active tab. `style: "swipe"` renders as plain top tabs. |
|
|
131
127
|
| `Carousel` | `autoplayIntervalMs` | android, web | styling | No autoplay. |
|
|
132
128
|
| `CollapsingHeader` | `imageAsset`, `collapsedHeight`, `parallaxFactor` | web | styling | A static hero: `imageAsset`, `collapsedHeight` and `parallaxFactor` are inert (only `imageUrl` is read). |
|
|
133
129
|
| `CollapsingHeader` | `imageAsset` | android | styling | `imageAsset` (a baked asset name) is not resolved — only `imageUrl` paints the hero. |
|
|
@@ -137,9 +133,6 @@ These props are accepted by the schema and pass validation, but the named platfo
|
|
|
137
133
|
| `Slider` | `debounceMs` | ios, web | styling | `debounceMs` does not throttle onChange. |
|
|
138
134
|
| `SelectionControl` | `groupId` | android, web | styling | Radios sharing a `groupId` are not mutually exclusive. |
|
|
139
135
|
| `ActivityIndicator` | `ring` | ios, android, web | styling | The `ring` style is never selected (determinate vs indeterminate follows `value`). |
|
|
140
|
-
| `BottomSheet` | `edge` | ios | category | `edge` (side sheet) is ignored — it always opens from the bottom. |
|
|
141
|
-
| `BottomSheet` | `detents`, `edge` | android | category | `detents` are ignored (opens full height). `edge` (side sheet) is ignored — it always opens from the bottom. |
|
|
142
|
-
| `BottomSheet` | `detents`, `dismissible`, `onDismiss`, `edge` | web | category | `detents` are ignored (opens full height). No scrim tap / Escape to close, so `onDismiss` never fires — for a dismissible sheet here, present the content as its own screen with `presentation: "sheet"` on the navigating `Action`. `edge` (side sheet) is ignored — it always opens from the bottom. |
|
|
143
136
|
| `Menu` | `itemsPath` | ios | category | `itemsPath` does not bind items. |
|
|
144
137
|
| `Menu` | `style`, `itemsPath` | android, web | category | `style` is ignored — `context`/`action_sheet` render as a dropdown. `itemsPath` does not bind items. |
|
|
145
138
|
| `Tooltip` | `edge`, `trigger`, `onDismiss` | ios, android, web | category | Not an overlay — renders always-expanded inline; `edge`, `trigger` and dismissal are inert. |
|
|
@@ -813,8 +806,6 @@ export interface PickerProps {
|
|
|
813
806
|
}
|
|
814
807
|
```
|
|
815
808
|
|
|
816
|
-
> ⚠️ **Implemented, but these props are inert on ios:** `optionsPath`, `placeholder` — Standalone Picker: `optionsPath` does not bind (it does inside a FormField); `placeholder` is only the accessible name, never shown.
|
|
817
|
-
|
|
818
809
|
**Dispatches** — see [What a control sends](#what-a-control-sends-action-payloads):
|
|
819
810
|
|
|
820
811
|
| callback | key | type |
|
|
@@ -971,12 +962,6 @@ export interface TabsProps {
|
|
|
971
962
|
}
|
|
972
963
|
```
|
|
973
964
|
|
|
974
|
-
> ⚠️ **Implemented, but these props are inert on ios:** `style` — `style: "swipe"` renders as plain top tabs.
|
|
975
|
-
|
|
976
|
-
> ⚠️ **Implemented, but these props are inert on android:** `activeColorPath` — `activeColorPath` does not tint the active tab.
|
|
977
|
-
|
|
978
|
-
> ⚠️ **Implemented, but these props are inert on web:** `activeColorPath`, `style` — `activeColorPath` does not tint the active tab. `style: "swipe"` renders as plain top tabs.
|
|
979
|
-
|
|
980
965
|
**Dispatches** — see [What a control sends](#what-a-control-sends-action-payloads):
|
|
981
966
|
|
|
982
967
|
| callback | key | type |
|
|
@@ -1321,12 +1306,6 @@ export interface BottomSheetProps {
|
|
|
1321
1306
|
}
|
|
1322
1307
|
```
|
|
1323
1308
|
|
|
1324
|
-
> ⚠️ **Not implemented on ios:** `edge` — `edge` (side sheet) is ignored — it always opens from the bottom.
|
|
1325
|
-
|
|
1326
|
-
> ⚠️ **Not implemented on android:** `detents`, `edge` — `detents` are ignored (opens full height). `edge` (side sheet) is ignored — it always opens from the bottom.
|
|
1327
|
-
|
|
1328
|
-
> ⚠️ **Not implemented on web:** `detents`, `dismissible`, `onDismiss`, `edge` — `detents` are ignored (opens full height). No scrim tap / Escape to close, so `onDismiss` never fires — for a dismissible sheet here, present the content as its own screen with `presentation: "sheet"` on the navigating `Action`. `edge` (side sheet) is ignored — it always opens from the bottom.
|
|
1329
|
-
|
|
1330
1309
|
#### Menu
|
|
1331
1310
|
|
|
1332
1311
|
```ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1197.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": [
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"artifactId": "himalaya-cli"
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
|
-
"falconPackageHash": "
|
|
70
|
+
"falconPackageHash": "3f470cbc63eb9c1ea7dd879c9c6957121770abb5dcd24125ae87b4a7"
|
|
71
71
|
}
|