@wix/himalaya-cli 0.1160.0 → 0.1161.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/cli.mjs
CHANGED
|
@@ -505,8 +505,8 @@ async function readWip(store, app) {
|
|
|
505
505
|
if (!wipSupported(store)) return "unsupported";
|
|
506
506
|
const { wip, promoted } = normalizeWipRecord(await store.getWipRecord(app));
|
|
507
507
|
if (!wip || promoted.some((p) => p.id === wip.releaseId)) return null;
|
|
508
|
-
const
|
|
509
|
-
return
|
|
508
|
+
const live3 = await store.getManifest(app);
|
|
509
|
+
return live3?.releaseId === wip.releaseId ? null : wip;
|
|
510
510
|
}
|
|
511
511
|
var storedTime;
|
|
512
512
|
var init_wip_pointer = __esm({
|
|
@@ -8255,7 +8255,10 @@ var init_a11y_contract = __esm({
|
|
|
8255
8255
|
ListItem: { role: "listitem", name: "required", state: ["selected", "disabled", "position"], decorative: false },
|
|
8256
8256
|
// ---- Navigation and progress structures ---------------------------------------------
|
|
8257
8257
|
DisclosureGroup: { role: "button", name: "required", state: ["expanded/collapsed"], decorative: false },
|
|
8258
|
-
|
|
8258
|
+
// NO state (#3433): the header collapses as the content under it scrolls, not because the user
|
|
8259
|
+
// toggled it — it is not a disclosure, and "collapsed" would describe a scroll offset as if it
|
|
8260
|
+
// were a control's setting. Every arm exposes the title as a heading and nothing more.
|
|
8261
|
+
CollapsingHeader: { role: "heading", name: "required", state: [], decorative: false },
|
|
8259
8262
|
Carousel: { role: "list", name: "required", state: ["item N of M"], decorative: false },
|
|
8260
8263
|
Pager: { role: "list", name: "required", state: ["item N of M"], decorative: false },
|
|
8261
8264
|
PageControl: { role: "adjustable", name: "required", state: ["page N of M"], decorative: false },
|
|
@@ -11897,7 +11900,7 @@ function inputJson(input) {
|
|
|
11897
11900
|
const json6 = JSON.stringify(input ?? {});
|
|
11898
11901
|
return json6 === void 0 ? "{}" : json6;
|
|
11899
11902
|
}
|
|
11900
|
-
function timerGlobals(hide,
|
|
11903
|
+
function timerGlobals(hide, live3) {
|
|
11901
11904
|
const hidden = new Set(hide ?? []);
|
|
11902
11905
|
const stubs = {
|
|
11903
11906
|
setTimeout: " globalThis.setTimeout = function () { return 0; };",
|
|
@@ -11923,7 +11926,7 @@ function timerGlobals(hide, live2) {
|
|
|
11923
11926
|
setInterval: " globalThis.setInterval = function () { return 0; };",
|
|
11924
11927
|
clearInterval: " globalThis.clearInterval = function () {};"
|
|
11925
11928
|
};
|
|
11926
|
-
const decls =
|
|
11929
|
+
const decls = live3 ? real : stubs;
|
|
11927
11930
|
return Object.entries(decls).filter(([name]) => !hidden.has(name)).map(([, src]) => src).join("\n");
|
|
11928
11931
|
}
|
|
11929
11932
|
function preludeFor(opts) {
|
|
@@ -13253,6 +13256,7 @@ function resolveIdiom(tokens2, ctx = {}) {
|
|
|
13253
13256
|
var IDIOM_CONTEXTS, UNSAFE_KEYS;
|
|
13254
13257
|
var init_idiom = __esm({
|
|
13255
13258
|
"../../core/ts/src/idiom.ts"() {
|
|
13259
|
+
"use strict";
|
|
13256
13260
|
IDIOM_CONTEXTS = {
|
|
13257
13261
|
ios: { native: ["ios"] },
|
|
13258
13262
|
android: { native: ["material"] },
|
|
@@ -18223,12 +18227,12 @@ function genNativeConfig(app, opts = {}) {
|
|
|
18223
18227
|
const embedManaged = hasMarkers(project, "yaml", LABEL_LIVE_EMBED);
|
|
18224
18228
|
if (targetManaged !== embedManaged) throw new Error(`${app}: Live Activity target and embedding markers must be installed together`);
|
|
18225
18229
|
const drainsWidgetActions = hostAppliesDeferredWidgetActions(app);
|
|
18226
|
-
const
|
|
18227
|
-
if (
|
|
18230
|
+
const live3 = targetManaged ? liveActivityPlan(project, ids.includes("live_activity"), drainsWidgetActions) : void 0;
|
|
18231
|
+
if (live3?.appGroupId) {
|
|
18228
18232
|
const key2 = "com.apple.security.application-groups";
|
|
18229
18233
|
const existing = ios.entitlements[key2];
|
|
18230
18234
|
const groups = Array.isArray(existing) ? [...existing] : existing === void 0 ? [] : [existing];
|
|
18231
|
-
if (!groups.includes(
|
|
18235
|
+
if (!groups.includes(live3.appGroupId)) groups.push(live3.appGroupId);
|
|
18232
18236
|
ios.entitlements[key2] = groups;
|
|
18233
18237
|
}
|
|
18234
18238
|
const files = [
|
|
@@ -18276,7 +18280,7 @@ function genNativeConfig(app, opts = {}) {
|
|
|
18276
18280
|
files.push(r);
|
|
18277
18281
|
}
|
|
18278
18282
|
if (targetManaged) {
|
|
18279
|
-
const plan =
|
|
18283
|
+
const plan = live3;
|
|
18280
18284
|
files.push(applyToFile(iosYml, "yaml", LABEL_LIVE_TARGET, (i) => plan.target.map((line) => i + line), check));
|
|
18281
18285
|
files.push(applyToFile(iosYml, "yaml", LABEL_LIVE_EMBED, (i) => plan.embed.map((line) => i + line), check));
|
|
18282
18286
|
const source = join29(dirname16(iosYml), LIVE_SOURCE_PATH);
|
|
@@ -31594,7 +31598,7 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
|
|
|
31594
31598
|
const C = ctx.color;
|
|
31595
31599
|
const name = typeof props.name === "string" && props.name ? props.name : void 0;
|
|
31596
31600
|
const bag = React3.useContext(FormValuesContext);
|
|
31597
|
-
const
|
|
31601
|
+
const live3 = !!ctx.onAction;
|
|
31598
31602
|
const toolsKey = JSON.stringify(props.tools ?? null);
|
|
31599
31603
|
const tools = React3.useMemo(() => effectiveTools(props.tools, props.uploadService), [toolsKey, props.uploadService]);
|
|
31600
31604
|
const seedMode = typeof props.documentJson === "string" ? "literal" : typeof props.documentPath === "string" && props.documentPath ? "binding" : "none";
|
|
@@ -31633,11 +31637,11 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
|
|
|
31633
31637
|
const fireOnChangeRef = React3.useRef(fireOnChange);
|
|
31634
31638
|
fireOnChangeRef.current = fireOnChange;
|
|
31635
31639
|
React3.useEffect(() => {
|
|
31636
|
-
if (
|
|
31637
|
-
}, [
|
|
31640
|
+
if (live3) setSrc(new URL(ENGINE_PAGE_PATH, document.baseURI).toString());
|
|
31641
|
+
}, [live3]);
|
|
31638
31642
|
React3.useEffect(() => {
|
|
31639
31643
|
const frame = iframeRef.current;
|
|
31640
|
-
if (!
|
|
31644
|
+
if (!live3 || !src || !frame) return;
|
|
31641
31645
|
const t = ricosEditorWebTimings;
|
|
31642
31646
|
const session = createRicosHostSession({
|
|
31643
31647
|
send: (msg) => frame.contentWindow?.postMessage({ ricos: 1, msg }, "*"),
|
|
@@ -31682,7 +31686,7 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
|
|
|
31682
31686
|
session.dispose();
|
|
31683
31687
|
sessionRef.current = null;
|
|
31684
31688
|
};
|
|
31685
|
-
}, [
|
|
31689
|
+
}, [live3, src]);
|
|
31686
31690
|
React3.useEffect(() => {
|
|
31687
31691
|
sessionRef.current?.setSeed(seedMode === "literal" ? props.documentJson : seedMode === "binding" ? boundSeed : "");
|
|
31688
31692
|
}, [seedMode, props.documentJson, boundSeed, src]);
|
|
@@ -31738,7 +31742,7 @@ function RichContentEditorView({ props, ctx, wrap, nodeId, renderChild, ...dom }
|
|
|
31738
31742
|
setLink(null);
|
|
31739
31743
|
};
|
|
31740
31744
|
const root = { position: "relative", display: "flex", flexDirection: "column", width: "100%", ...fill ? { flex: "1 1 auto", minHeight: 0 } : { minHeight }, ...wrap };
|
|
31741
|
-
if (!
|
|
31745
|
+
if (!live3) {
|
|
31742
31746
|
const { paddingTop: _t, paddingBottom: _b, paddingLeft: _l, paddingRight: _r, ...rootNoSides } = root;
|
|
31743
31747
|
const own3 = { ...rootNoSides, border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: 8, padding: 12, boxSizing: "border-box" };
|
|
31744
31748
|
return /* @__PURE__ */ jsx4("div", { ...dom, style: addIntrinsicPadding(own3, wrap) ?? own3, children: /* @__PURE__ */ jsx4("span", { style: { color: C("textSecondary", "#636B78") }, children: placeholder2 || "Rich text editor" }) });
|
|
@@ -31908,7 +31912,17 @@ function labelText(label2, ctx) {
|
|
|
31908
31912
|
}
|
|
31909
31913
|
return asText2(label2);
|
|
31910
31914
|
}
|
|
31911
|
-
|
|
31915
|
+
function resolveRowAction(action, ctx) {
|
|
31916
|
+
const resolved2 = resolveItemDeep(action, ctx);
|
|
31917
|
+
if (!resolved2 || typeof resolved2 !== "object" || Array.isArray(resolved2)) return resolved2;
|
|
31918
|
+
const params = resolved2.params;
|
|
31919
|
+
if (!params || typeof params !== "object" || Array.isArray(params)) return resolved2;
|
|
31920
|
+
return {
|
|
31921
|
+
...resolved2,
|
|
31922
|
+
params: Object.fromEntries(Object.entries(params).map(([k, v]) => [k, typeof v === "number" || typeof v === "boolean" ? String(v) : v]))
|
|
31923
|
+
};
|
|
31924
|
+
}
|
|
31925
|
+
var useResolvedId, FONT, rowShareFloor, A11ySwitch, A11Y_PART, A11ySlider, A11ySelectionControl, actOf, withSelection, resolveItemDeep, A11yTabs, A11ySegmented, disclosureSeq, A11yDisclosure;
|
|
31912
31926
|
var init_controls = __esm({
|
|
31913
31927
|
"../../core/web-renderer/src/a11y/controls.tsx"() {
|
|
31914
31928
|
"use strict";
|
|
@@ -31975,7 +31989,7 @@ var init_controls = __esm({
|
|
|
31975
31989
|
}
|
|
31976
31990
|
const toggleAct = act;
|
|
31977
31991
|
if (ctx.onAction && toggleAct) {
|
|
31978
|
-
const resolved3 =
|
|
31992
|
+
const resolved3 = resolveRowAction(toggleAct, ctx);
|
|
31979
31993
|
ctx.onAction({ ...resolved3, args: { ...resolved3.args ?? {}, value: next } });
|
|
31980
31994
|
}
|
|
31981
31995
|
} : void 0;
|
|
@@ -31997,6 +32011,7 @@ var init_controls = __esm({
|
|
|
31997
32011
|
)
|
|
31998
32012
|
] });
|
|
31999
32013
|
};
|
|
32014
|
+
A11Y_PART = "data-hm-a11y-part";
|
|
32000
32015
|
A11ySlider = ({ props, ctx, wrap }) => {
|
|
32001
32016
|
const C = ctx.color;
|
|
32002
32017
|
const min = props.min ?? 0, max = props.max ?? 1;
|
|
@@ -32010,13 +32025,72 @@ var init_controls = __esm({
|
|
|
32010
32025
|
React4.useEffect(() => {
|
|
32011
32026
|
setVal(bound);
|
|
32012
32027
|
}, [bound]);
|
|
32013
|
-
const
|
|
32028
|
+
const dragging = React4.useRef(false);
|
|
32029
|
+
const canFire = !!(ctx.onAction && props.onChange && !props.disabled);
|
|
32030
|
+
const commit = (nv) => {
|
|
32031
|
+
setVal(nv);
|
|
32032
|
+
if (!canFire) return;
|
|
32033
|
+
const act = resolveRowAction(props.onChange, ctx);
|
|
32034
|
+
ctx.onAction({ ...act, args: { ...act.args ?? {}, value: nv } });
|
|
32035
|
+
};
|
|
32014
32036
|
const clampPct = (n) => max > min ? Math.max(0, Math.min(1, (n - min) / (max - min))) : 0;
|
|
32037
|
+
const [pair, setPair] = React4.useState(() => [Math.min(bound, props.upperValue ?? bound), Math.max(bound, props.upperValue ?? bound)]);
|
|
32038
|
+
React4.useEffect(() => {
|
|
32039
|
+
if (range) setPair([Math.min(bound, props.upperValue), Math.max(bound, props.upperValue)]);
|
|
32040
|
+
}, [range, bound, props.upperValue]);
|
|
32015
32041
|
if (range) {
|
|
32016
|
-
const lo
|
|
32017
|
-
|
|
32042
|
+
const [lo, hi] = pair;
|
|
32043
|
+
const thumbKey = (which) => (e) => {
|
|
32044
|
+
if (props.disabled) return;
|
|
32045
|
+
const at2 = pair[which];
|
|
32046
|
+
const floor = which === 0 ? min : lo, ceil = which === 0 ? hi : max;
|
|
32047
|
+
let nv = at2;
|
|
32048
|
+
switch (e.key) {
|
|
32049
|
+
case "ArrowRight":
|
|
32050
|
+
case "ArrowUp":
|
|
32051
|
+
nv = Math.min(ceil, at2 + step);
|
|
32052
|
+
break;
|
|
32053
|
+
case "ArrowLeft":
|
|
32054
|
+
case "ArrowDown":
|
|
32055
|
+
nv = Math.max(floor, at2 - step);
|
|
32056
|
+
break;
|
|
32057
|
+
case "Home":
|
|
32058
|
+
nv = floor;
|
|
32059
|
+
break;
|
|
32060
|
+
case "End":
|
|
32061
|
+
nv = ceil;
|
|
32062
|
+
break;
|
|
32063
|
+
default:
|
|
32064
|
+
return;
|
|
32065
|
+
}
|
|
32066
|
+
e.preventDefault();
|
|
32067
|
+
const next = which === 0 ? [nv, hi] : [lo, nv];
|
|
32068
|
+
setPair(next);
|
|
32069
|
+
if (canFire) {
|
|
32070
|
+
const act = resolveRowAction(props.onChange, ctx);
|
|
32071
|
+
ctx.onAction({ ...act, args: { ...act.args ?? {}, value: next[0], upperValue: next[1] } });
|
|
32072
|
+
}
|
|
32073
|
+
};
|
|
32074
|
+
const groupName = labelText(props.label, ctx) || void 0;
|
|
32075
|
+
return /* @__PURE__ */ jsx5("div", { ...{ [A11Y_PART]: "root" }, role: "group", "aria-label": groupName, style: { width: "100%", padding: "12px 9px", boxSizing: "border-box", opacity: props.disabled ? 0.5 : 1, ...wrap }, children: /* @__PURE__ */ jsxs2("div", { style: { position: "relative", height: 4, borderRadius: 999, background: C("surfaceTertiary", "#e3e6ea") }, children: [
|
|
32018
32076
|
/* @__PURE__ */ jsx5("div", { style: { position: "absolute", left: `${clampPct(lo) * 100}%`, right: `${(1 - clampPct(hi)) * 100}%`, top: 0, bottom: 0, borderRadius: 999, background: tint } }),
|
|
32019
|
-
[lo, hi].map((p, i) => /* @__PURE__ */ jsx5(
|
|
32077
|
+
[lo, hi].map((p, i) => /* @__PURE__ */ jsx5(
|
|
32078
|
+
"span",
|
|
32079
|
+
{
|
|
32080
|
+
...i === 0 ? { [A11Y_PART]: "focus" } : {},
|
|
32081
|
+
role: "slider",
|
|
32082
|
+
tabIndex: props.disabled ? -1 : 0,
|
|
32083
|
+
"aria-label": i === 0 ? "Minimum" : "Maximum",
|
|
32084
|
+
"aria-valuenow": p,
|
|
32085
|
+
"aria-valuemin": i === 0 ? min : lo,
|
|
32086
|
+
"aria-valuemax": i === 0 ? hi : max,
|
|
32087
|
+
"aria-orientation": "horizontal",
|
|
32088
|
+
"aria-disabled": props.disabled ? true : void 0,
|
|
32089
|
+
onKeyDown: thumbKey(i),
|
|
32090
|
+
style: { position: "absolute", left: `${clampPct(p) * 100}%`, top: "50%", width: 18, height: 18, borderRadius: "50%", background: "#fff", border: `2px solid ${tint}`, transform: "translate(-50%, -50%)", boxShadow: "0 1px 3px rgba(0,0,0,.25)", outlineOffset: 3, cursor: props.disabled ? "default" : "pointer" }
|
|
32091
|
+
},
|
|
32092
|
+
i
|
|
32093
|
+
))
|
|
32020
32094
|
] }) });
|
|
32021
32095
|
}
|
|
32022
32096
|
const pct = clampPct(val);
|
|
@@ -32042,12 +32116,38 @@ var init_controls = __esm({
|
|
|
32042
32116
|
return;
|
|
32043
32117
|
}
|
|
32044
32118
|
e.preventDefault();
|
|
32119
|
+
commit(nv);
|
|
32120
|
+
};
|
|
32121
|
+
const valueAt = (e) => {
|
|
32122
|
+
const r = e.currentTarget.getBoundingClientRect();
|
|
32123
|
+
if (!(r.width > 0)) return void 0;
|
|
32124
|
+
const f = Math.max(0, Math.min(1, (e.clientX - r.left) / r.width));
|
|
32125
|
+
const raw2 = min + f * (max - min);
|
|
32126
|
+
const grid = Math.max(min, Math.min(max, Number((min + Math.round((raw2 - min) / step) * step).toFixed(10))));
|
|
32127
|
+
return Math.abs(max - raw2) < Math.abs(grid - raw2) ? max : grid;
|
|
32128
|
+
};
|
|
32129
|
+
const onPointerDown = (e) => {
|
|
32130
|
+
if (props.disabled) return;
|
|
32131
|
+
const nv = valueAt(e);
|
|
32132
|
+
if (nv === void 0) return;
|
|
32133
|
+
dragging.current = true;
|
|
32134
|
+
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
32045
32135
|
setVal(nv);
|
|
32046
|
-
if (fire) fire();
|
|
32047
32136
|
};
|
|
32048
|
-
|
|
32137
|
+
const onPointerMove = (e) => {
|
|
32138
|
+
if (!dragging.current) return;
|
|
32139
|
+
const nv = valueAt(e);
|
|
32140
|
+
if (nv !== void 0) setVal(nv);
|
|
32141
|
+
};
|
|
32142
|
+
const onPointerUp = (e) => {
|
|
32143
|
+
if (!dragging.current) return;
|
|
32144
|
+
dragging.current = false;
|
|
32145
|
+
commit(valueAt(e) ?? val);
|
|
32146
|
+
};
|
|
32147
|
+
return /* @__PURE__ */ jsx5("div", { ...{ [A11Y_PART]: "root" }, style: { width: "100%", padding: "12px 9px", boxSizing: "border-box", opacity: props.disabled ? 0.5 : 1, ...wrap }, children: /* @__PURE__ */ jsx5(
|
|
32049
32148
|
"div",
|
|
32050
32149
|
{
|
|
32150
|
+
...{ [A11Y_PART]: "node" },
|
|
32051
32151
|
role: "slider",
|
|
32052
32152
|
tabIndex: props.disabled ? -1 : 0,
|
|
32053
32153
|
"aria-valuenow": val,
|
|
@@ -32057,7 +32157,10 @@ var init_controls = __esm({
|
|
|
32057
32157
|
"aria-label": labelText(props.label, ctx) || void 0,
|
|
32058
32158
|
"aria-disabled": props.disabled ? true : void 0,
|
|
32059
32159
|
onKeyDown,
|
|
32060
|
-
|
|
32160
|
+
onPointerDown,
|
|
32161
|
+
onPointerMove,
|
|
32162
|
+
onPointerUp,
|
|
32163
|
+
style: { position: "relative", height: 18, display: "flex", alignItems: "center", outlineOffset: 4, cursor: props.disabled ? "default" : "pointer", touchAction: "pan-y" },
|
|
32061
32164
|
children: /* @__PURE__ */ jsxs2("div", { style: { position: "relative", height: 4, width: "100%", borderRadius: 999, background: C("surfaceTertiary", "#e3e6ea") }, children: [
|
|
32062
32165
|
/* @__PURE__ */ jsx5("div", { style: { position: "absolute", left: 0, width: `${pct * 100}%`, top: 0, bottom: 0, borderRadius: 999, background: tint } }),
|
|
32063
32166
|
/* @__PURE__ */ jsx5("span", { "aria-hidden": true, style: { position: "absolute", left: `${pct * 100}%`, top: "50%", width: 18, height: 18, borderRadius: "50%", background: "#fff", border: `2px solid ${tint}`, transform: "translate(-50%, -50%)", boxShadow: "0 1px 3px rgba(0,0,0,.25)" } })
|
|
@@ -32074,7 +32177,7 @@ var init_controls = __esm({
|
|
|
32074
32177
|
const accent = C("accentPrimary", "#116DFF");
|
|
32075
32178
|
const fire = ctx.onAction && props.onChange && !props.disabled ? (e) => {
|
|
32076
32179
|
e?.stopPropagation?.();
|
|
32077
|
-
const act =
|
|
32180
|
+
const act = resolveRowAction(props.onChange, ctx);
|
|
32078
32181
|
const next = isRadio ? true : !on3;
|
|
32079
32182
|
ctx.onAction({ ...act, args: { ...act.args ?? {}, value: next } });
|
|
32080
32183
|
} : void 0;
|
|
@@ -32214,7 +32317,7 @@ var init_controls = __esm({
|
|
|
32214
32317
|
const subtitle = useResolvedScalar(props.subtitle, ctx);
|
|
32215
32318
|
const expanded = useResolvedScalar(props.expandedPath ?? props.expanded, ctx);
|
|
32216
32319
|
const open = expanded === true;
|
|
32217
|
-
const fire = ctx.onAction && props.onToggle ? () => ctx.onAction(
|
|
32320
|
+
const fire = ctx.onAction && props.onToggle ? () => ctx.onAction(resolveRowAction(props.onToggle, ctx)) : void 0;
|
|
32218
32321
|
const regionId = React4.useMemo(() => `himi-disclosure-${++disclosureSeq}`, []);
|
|
32219
32322
|
return /* @__PURE__ */ jsxs2("div", { style: { width: "100%", ...wrap }, children: [
|
|
32220
32323
|
/* @__PURE__ */ jsxs2(
|
|
@@ -32241,12 +32344,15 @@ var init_controls = __esm({
|
|
|
32241
32344
|
});
|
|
32242
32345
|
|
|
32243
32346
|
// ../../core/web-renderer/src/a11y/modalStack.ts
|
|
32244
|
-
function pushModalLayer(el) {
|
|
32245
|
-
const layer = { el: typeof el === "function" ? el : () => el };
|
|
32347
|
+
function pushModalLayer(el, opts = {}) {
|
|
32348
|
+
const layer = { el: typeof el === "function" ? el : () => el, host: opts.host === true, seq: pushes++ };
|
|
32246
32349
|
layers.push(layer);
|
|
32247
32350
|
sync();
|
|
32248
32351
|
return {
|
|
32249
|
-
isTop: () =>
|
|
32352
|
+
isTop: () => {
|
|
32353
|
+
const own3 = layer.el();
|
|
32354
|
+
return own3 != null && own3.isConnected && topLayerOver(own3) === layer;
|
|
32355
|
+
},
|
|
32250
32356
|
release: () => {
|
|
32251
32357
|
const i = layers.indexOf(layer);
|
|
32252
32358
|
if (i < 0) return;
|
|
@@ -32256,43 +32362,75 @@ function pushModalLayer(el) {
|
|
|
32256
32362
|
};
|
|
32257
32363
|
}
|
|
32258
32364
|
function isWithinTopModal(el) {
|
|
32259
|
-
const top =
|
|
32260
|
-
return top == null || top.contains(el);
|
|
32365
|
+
const top = topOver(el);
|
|
32366
|
+
return top == null || top.el.contains(el);
|
|
32261
32367
|
}
|
|
32262
|
-
function
|
|
32263
|
-
|
|
32264
|
-
|
|
32265
|
-
|
|
32368
|
+
function live() {
|
|
32369
|
+
const out2 = [];
|
|
32370
|
+
for (const layer of layers) {
|
|
32371
|
+
const el = layer.el();
|
|
32372
|
+
if (el?.isConnected) out2.push({ layer, el, scope: el.parentElement?.closest(`[${MODAL_SCOPE_ATTR}]`) ?? el.ownerDocument.body });
|
|
32266
32373
|
}
|
|
32267
|
-
return
|
|
32374
|
+
return out2;
|
|
32375
|
+
}
|
|
32376
|
+
function rootOf(l, all) {
|
|
32377
|
+
for (let root = l; ; ) {
|
|
32378
|
+
const outer = all.find((o) => o.el !== root.el && o.el.contains(root.el));
|
|
32379
|
+
if (!outer) return root;
|
|
32380
|
+
root = outer;
|
|
32381
|
+
}
|
|
32382
|
+
}
|
|
32383
|
+
function above(a, b, all) {
|
|
32384
|
+
if (a.el !== b.el) {
|
|
32385
|
+
if (b.el.contains(a.el)) return true;
|
|
32386
|
+
if (a.el.contains(b.el)) return false;
|
|
32387
|
+
}
|
|
32388
|
+
const ra = rootOf(a, all);
|
|
32389
|
+
const rb = rootOf(b, all);
|
|
32390
|
+
if (ra !== rb) return ra.layer.host !== rb.layer.host ? ra.layer.host : ra.layer.seq > rb.layer.seq;
|
|
32391
|
+
return a.layer.seq > b.layer.seq;
|
|
32392
|
+
}
|
|
32393
|
+
function topOf(candidates, all) {
|
|
32394
|
+
let top = null;
|
|
32395
|
+
for (const c of candidates) if (!top || above(c, top, all)) top = c;
|
|
32396
|
+
return top;
|
|
32397
|
+
}
|
|
32398
|
+
function topOver(target) {
|
|
32399
|
+
const all = live();
|
|
32400
|
+
return topOf(all.filter((l) => l.scope.contains(target) || target.contains(l.el)), all);
|
|
32401
|
+
}
|
|
32402
|
+
function topLayerOver(target) {
|
|
32403
|
+
return topOver(target)?.layer ?? null;
|
|
32268
32404
|
}
|
|
32269
32405
|
function sync() {
|
|
32270
32406
|
watcher?.disconnect();
|
|
32271
32407
|
watcher = null;
|
|
32272
32408
|
for (const el of madeInert) el.removeAttribute("inert");
|
|
32273
32409
|
madeInert.clear();
|
|
32274
|
-
const
|
|
32275
|
-
if (!
|
|
32276
|
-
const
|
|
32277
|
-
const
|
|
32278
|
-
|
|
32279
|
-
|
|
32280
|
-
|
|
32281
|
-
|
|
32282
|
-
|
|
32283
|
-
|
|
32284
|
-
|
|
32285
|
-
|
|
32286
|
-
|
|
32287
|
-
|
|
32288
|
-
|
|
32289
|
-
|
|
32290
|
-
|
|
32410
|
+
const all = live();
|
|
32411
|
+
if (!all.length) return;
|
|
32412
|
+
const levels = /* @__PURE__ */ new Set();
|
|
32413
|
+
for (const scope of new Set(all.map((l) => l.scope))) {
|
|
32414
|
+
const top = topOf(all.filter((l) => l.scope === scope), all);
|
|
32415
|
+
let node = top.el;
|
|
32416
|
+
while (node !== scope && node.parentElement) {
|
|
32417
|
+
const parent = node.parentElement;
|
|
32418
|
+
levels.add(parent);
|
|
32419
|
+
for (const sibling of Array.from(parent.children)) {
|
|
32420
|
+
if (sibling === node || SKIP.has(sibling.tagName) || sibling.hasAttribute("inert")) continue;
|
|
32421
|
+
sibling.setAttribute("inert", "");
|
|
32422
|
+
madeInert.add(sibling);
|
|
32423
|
+
}
|
|
32424
|
+
node = parent;
|
|
32425
|
+
}
|
|
32426
|
+
}
|
|
32427
|
+
const Observer = all[0].el.ownerDocument.defaultView?.MutationObserver;
|
|
32428
|
+
if (Observer && levels.size) {
|
|
32291
32429
|
watcher = new Observer(() => sync());
|
|
32292
32430
|
for (const level of levels) watcher.observe(level, { childList: true });
|
|
32293
32431
|
}
|
|
32294
32432
|
}
|
|
32295
|
-
var MODAL_SCOPE_ATTR, SKIP, layers, madeInert, watcher;
|
|
32433
|
+
var MODAL_SCOPE_ATTR, SKIP, layers, madeInert, watcher, pushes;
|
|
32296
32434
|
var init_modalStack = __esm({
|
|
32297
32435
|
"../../core/web-renderer/src/a11y/modalStack.ts"() {
|
|
32298
32436
|
MODAL_SCOPE_ATTR = "data-himi-modal-scope";
|
|
@@ -32300,6 +32438,7 @@ var init_modalStack = __esm({
|
|
|
32300
32438
|
layers = [];
|
|
32301
32439
|
madeInert = /* @__PURE__ */ new Set();
|
|
32302
32440
|
watcher = null;
|
|
32441
|
+
pushes = 0;
|
|
32303
32442
|
}
|
|
32304
32443
|
});
|
|
32305
32444
|
|
|
@@ -33469,12 +33608,22 @@ function editA11yParts(node, edit) {
|
|
|
33469
33608
|
if (typeof part !== "string" && nextKids === kids3) return node;
|
|
33470
33609
|
return cloneWithKids(node, typeof part === "string" ? { ...edit(part, own3), [A11Y_PART]: void 0 } : {}, nextKids);
|
|
33471
33610
|
}
|
|
33472
|
-
function a11yPartEdit(routed, authoredName, onNode) {
|
|
33611
|
+
function a11yPartEdit(routed, authoredName, onNode, focus) {
|
|
33473
33612
|
return (part, own3) => {
|
|
33474
33613
|
if (part === "derived-name") return authoredName ? {} : { "aria-hidden": "true" };
|
|
33614
|
+
const focusable = typeof own3.tabIndex === "number" && own3.tabIndex >= 0;
|
|
33615
|
+
if (part === "focus") {
|
|
33616
|
+
if (!focus || !focusable) return {};
|
|
33617
|
+
focus.onRouted();
|
|
33618
|
+
return { ...focus.carried };
|
|
33619
|
+
}
|
|
33475
33620
|
if (part !== "node") return {};
|
|
33476
33621
|
onNode();
|
|
33477
33622
|
const patch = { ...routed };
|
|
33623
|
+
if (focus && focusable) {
|
|
33624
|
+
Object.assign(patch, focus.carried);
|
|
33625
|
+
focus.onRouted();
|
|
33626
|
+
}
|
|
33478
33627
|
if (typeof routed["aria-describedby"] === "string" && typeof own3["aria-describedby"] === "string") {
|
|
33479
33628
|
patch["aria-describedby"] = `${own3["aria-describedby"]} ${routed["aria-describedby"]}`;
|
|
33480
33629
|
}
|
|
@@ -33621,11 +33770,28 @@ function withExtras(name, render) {
|
|
|
33621
33770
|
for (const k of NODE_A11Y_ATTRS) if (next[k] !== void 0) routed[k] = next[k];
|
|
33622
33771
|
if (pass[AUTHORED_ROLE] === true || pass["aria-level"] != null) routed.role = next.role;
|
|
33623
33772
|
}
|
|
33773
|
+
const focus = {};
|
|
33774
|
+
if (!rootIsControl) {
|
|
33775
|
+
if (next.tabIndex !== void 0 && !tabIndexIsSynthetic) focus.tabIndex = next.tabIndex;
|
|
33776
|
+
if (next["data-himalaya-initial-focus"] !== void 0) focus["data-himalaya-initial-focus"] = next["data-himalaya-initial-focus"];
|
|
33777
|
+
}
|
|
33624
33778
|
let nodeFound = false;
|
|
33625
|
-
|
|
33626
|
-
|
|
33627
|
-
|
|
33779
|
+
let focusRouted = false;
|
|
33780
|
+
const kids3 = editA11yParts(prev.children, a11yPartEdit(
|
|
33781
|
+
routed,
|
|
33782
|
+
pass["aria-label"] != null,
|
|
33783
|
+
() => {
|
|
33784
|
+
nodeFound = true;
|
|
33785
|
+
},
|
|
33786
|
+
Object.keys(focus).length ? { carried: focus, onRouted: () => {
|
|
33787
|
+
focusRouted = true;
|
|
33788
|
+
} } : void 0
|
|
33789
|
+
));
|
|
33628
33790
|
if (nodeFound) for (const k of Object.keys(routed)) delete next[k];
|
|
33791
|
+
if (focusRouted) {
|
|
33792
|
+
delete next.tabIndex;
|
|
33793
|
+
delete next["data-himalaya-initial-focus"];
|
|
33794
|
+
}
|
|
33629
33795
|
return cloneWithKids(el, next, kids3);
|
|
33630
33796
|
}
|
|
33631
33797
|
return React7.cloneElement(el, next);
|
|
@@ -35136,13 +35302,15 @@ function renderInner(node, ctx) {
|
|
|
35136
35302
|
] });
|
|
35137
35303
|
}
|
|
35138
35304
|
// RFC 0058 §4 — an INLINE card, drawn where the descriptor puts it, as iOS (`AlertDialogPreview`)
|
|
35139
|
-
// and Android (`SDUIAlertDialogPreview`) draw it
|
|
35140
|
-
//
|
|
35141
|
-
//
|
|
35142
|
-
//
|
|
35143
|
-
//
|
|
35305
|
+
// and Android (`SDUIAlertDialogPreview`) draw it. It is not presented over the screen, so a
|
|
35306
|
+
// screen that shows one inline (a cart's high-value confirm, a component gallery) keeps the rest
|
|
35307
|
+
// of itself usable, tab bar included — and it is NOT modal, whatever `modal` says (#3428):
|
|
35308
|
+
// `modal` applies only while an alert is presented, and `aria-modal` on a card in the screen's
|
|
35309
|
+
// own flow told assistive technology that every sibling was unavailable, with no way to dismiss
|
|
35310
|
+
// it. A presented alert is `presentation: "alert"` on a navigating Action, which the web host
|
|
35311
|
+
// draws as its own modal dialog.
|
|
35144
35312
|
case "AlertDialog":
|
|
35145
|
-
return /* @__PURE__ */ jsxs5("div", { role: "alertdialog", "aria-
|
|
35313
|
+
return /* @__PURE__ */ jsxs5("div", { role: "alertdialog", "aria-label": props.title != null ? asBoundText(props.title, ctx) : "Alert", style: { background: C("surfacePrimary", "#fff"), borderRadius: ctx.radius("lg", 14), padding: 18, width: "100%", boxSizing: "border-box", border: `1px solid ${C("border", "#e3e3e3")}`, boxShadow: "0 12px 30px -12px rgba(0,0,0,.4)", ...wrap }, children: [
|
|
35146
35314
|
/* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 700, fontSize: 17, color: C("textPrimary", "#111") }, children: txt(props.title, ctx) }),
|
|
35147
35315
|
/* @__PURE__ */ jsx8("div", { style: { fontFamily: bodyFont(ctx), fontSize: 14, lineHeight: 1.45, color: C("textSecondary", "#666"), margin: "6px 0 16px" }, children: txt(props.message, ctx) }),
|
|
35148
35316
|
/* @__PURE__ */ jsxs5("div", { style: { display: "flex", gap: 10 }, children: [
|
|
@@ -35165,7 +35333,7 @@ function renderInner(node, ctx) {
|
|
|
35165
35333
|
}
|
|
35166
35334
|
}
|
|
35167
35335
|
}
|
|
35168
|
-
var useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, pressStylesInjected, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, ReactiveDirectScalars, HiddenGate, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MenuNode, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, SYNTHETIC_TAP_ROLE, SYNTHETIC_TABINDEX, INFERRED_DECORATIVE, SELF_RENDERED_LEAF, ROLE_WHEN_NAMED, AUTHORED_ROLE, PENDING_RANGE, RANGE_ROLES,
|
|
35336
|
+
var useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, pressStylesInjected, FOCUS_RING_CSS, focusStylesInjected, HLIST_CHILD_CSS, hListStylesInjected, listAnimateRuntimeInstalled, transitionKeyframesInjected, countUpRuntimeInjected, MEASURE_PREFIX, measureRuntimeInjected, revealRuntimeInjected, vectorAnimStylesInjected, scrollProgressRuntimeInjected, confettiRuntimeInjected, lottieRuntimeInjected, riveRuntimeInjected, gradientKeyframesInjected, parallaxRuntimeInjected, spinKeyframesInjected, marqueeKeyframesInjected, alignItems, zJustifyItems, hAlignItems, bodyFont, kids2, rowKidCtx, rowKids, staggeredKids, asTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, ReactiveDirectScalars, HiddenGate, KEYBOARD_INPUT_MODES, AUTOCAPITALIZE_VALUES, ENTER_KEY_HINTS, AUTOGROW_CEILING, EditableField, MenuNode, LoadMoreSentinel, FieldErrorNode, FormView, MediaSlotProvider, MEDIA_ITEM_BINDABLE, MediaPlayerView, VideoNode, PdfViewNode, WebViewNode, InteractivePicker, InteractiveDatePicker, InteractiveSearchField, InteractiveStepper, 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, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, ButtonNode, OtpInputNode, ProgressBarNode, ActivityIndicatorNode, NATIVELY_TABBABLE, BottomSheetNode, PRESENTED_OVERLAY_ATTR, PopoverNode, ChipsInputNode, ChipNode, TableNode, GaugeRing, GaugeNode, RATING_METRICS, ratingMetrics, RatingNode, AvatarStripNode, CHART_STROKE_CYCLE, chartStrokeAt, chartBarCenter, ChartNode, donutSliceOpacity, DonutChartNode, LegendMarker, LegendNode, cellAlign, DataTableNode, voiceNoteState, voiceNoteDelivery, VOICE_NOTE_DEFAULT_BARS, clampBarCount, VoiceNoteNode, TimelineNode, 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, 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, WebRenderer;
|
|
35169
35337
|
var init_renderNode = __esm({
|
|
35170
35338
|
"../../core/web-renderer/src/renderNode.tsx"() {
|
|
35171
35339
|
"use strict";
|
|
@@ -35328,7 +35496,7 @@ var init_renderNode = __esm({
|
|
|
35328
35496
|
const bound = Object.entries(params).filter(
|
|
35329
35497
|
([, v]) => typeof v === "string" && v.startsWith("$service:")
|
|
35330
35498
|
);
|
|
35331
|
-
const [
|
|
35499
|
+
const [live3, setLive] = React7.useState(() => {
|
|
35332
35500
|
const seed2 = {};
|
|
35333
35501
|
if (ctx.provider) for (const [k, p] of bound) seed2[k] = ctx.provider.value(servicePath(p));
|
|
35334
35502
|
return seed2;
|
|
@@ -35342,7 +35510,7 @@ var init_renderNode = __esm({
|
|
|
35342
35510
|
);
|
|
35343
35511
|
return () => unsubs.forEach((u) => u());
|
|
35344
35512
|
}, [ctx.provider, subKey]);
|
|
35345
|
-
const resolved2 = { ...
|
|
35513
|
+
const resolved2 = { ...live3 };
|
|
35346
35514
|
for (const [k, v] of Object.entries(params)) {
|
|
35347
35515
|
if (typeof v === "string" && v.startsWith("$item")) resolved2[k] = resolveScalarStatic(v, ctx);
|
|
35348
35516
|
}
|
|
@@ -35735,18 +35903,21 @@ var init_renderNode = __esm({
|
|
|
35735
35903
|
const C = ctx.color;
|
|
35736
35904
|
React7.useEffect(() => {
|
|
35737
35905
|
if (!open) return;
|
|
35906
|
+
const onTop = () => menuRef.current != null && isWithinTopModal(menuRef.current);
|
|
35738
35907
|
const onDown = (e) => {
|
|
35739
|
-
if (hostRef.current && !hostRef.current.contains(e.target)) setOpen(false);
|
|
35908
|
+
if (hostRef.current && !hostRef.current.contains(e.target) && onTop()) setOpen(false);
|
|
35740
35909
|
};
|
|
35741
35910
|
const onKey = (e) => {
|
|
35742
|
-
if (e.key
|
|
35911
|
+
if (e.key !== "Escape" || !onTop()) return;
|
|
35912
|
+
e.stopPropagation();
|
|
35913
|
+
setOpen(false);
|
|
35743
35914
|
};
|
|
35744
35915
|
const kinds = ["pointerdown", "touchstart", "mousedown"];
|
|
35745
|
-
for (const k of kinds) document.addEventListener(k, onDown);
|
|
35746
|
-
document.addEventListener("keydown", onKey);
|
|
35916
|
+
for (const k of kinds) document.addEventListener(k, onDown, true);
|
|
35917
|
+
document.addEventListener("keydown", onKey, true);
|
|
35747
35918
|
return () => {
|
|
35748
|
-
for (const k of kinds) document.removeEventListener(k, onDown);
|
|
35749
|
-
document.removeEventListener("keydown", onKey);
|
|
35919
|
+
for (const k of kinds) document.removeEventListener(k, onDown, true);
|
|
35920
|
+
document.removeEventListener("keydown", onKey, true);
|
|
35750
35921
|
};
|
|
35751
35922
|
}, [open]);
|
|
35752
35923
|
const modal = isOverlayModal("Menu", props.modal);
|
|
@@ -36404,11 +36575,11 @@ var init_renderNode = __esm({
|
|
|
36404
36575
|
const [retyped, setRetyped] = React7.useState(null);
|
|
36405
36576
|
React7.useEffect(() => {
|
|
36406
36577
|
if (!retypeSrc) return;
|
|
36407
|
-
let
|
|
36578
|
+
let live3 = true;
|
|
36408
36579
|
let made = null;
|
|
36409
36580
|
const settle = (u) => {
|
|
36410
36581
|
made = u;
|
|
36411
|
-
if (!
|
|
36582
|
+
if (!live3) {
|
|
36412
36583
|
if (u) URL.revokeObjectURL(u);
|
|
36413
36584
|
return;
|
|
36414
36585
|
}
|
|
@@ -36416,7 +36587,7 @@ var init_renderNode = __esm({
|
|
|
36416
36587
|
};
|
|
36417
36588
|
retypeAsPdf(retypeSrc).then(settle, () => settle(null));
|
|
36418
36589
|
return () => {
|
|
36419
|
-
|
|
36590
|
+
live3 = false;
|
|
36420
36591
|
if (made) URL.revokeObjectURL(made);
|
|
36421
36592
|
setRetyped((cur) => cur?.from === retypeSrc ? null : cur);
|
|
36422
36593
|
};
|
|
@@ -36716,12 +36887,18 @@ var init_renderNode = __esm({
|
|
|
36716
36887
|
};
|
|
36717
36888
|
const commit = (target) => {
|
|
36718
36889
|
const next = Math.min(max, Math.max(min, target));
|
|
36719
|
-
if (next === value) return;
|
|
36890
|
+
if (next === value) return void 0;
|
|
36720
36891
|
setValue(next);
|
|
36721
36892
|
setBagValue(encodeStepperFieldValue(next, { min, max }));
|
|
36722
36893
|
dispatch(next);
|
|
36894
|
+
return next;
|
|
36723
36895
|
};
|
|
36896
|
+
const [pressed, setPressed] = React7.useState({ text: "", count: 0 });
|
|
36724
36897
|
const bump = (delta) => commit(value + delta);
|
|
36898
|
+
const press = (delta) => {
|
|
36899
|
+
const next = bump(delta);
|
|
36900
|
+
if (next !== void 0) setPressed((p) => ({ text: String(next), count: p.count + 1 }));
|
|
36901
|
+
};
|
|
36725
36902
|
const onValueKeyDown = (e) => {
|
|
36726
36903
|
const target = e.key === "ArrowUp" ? value + step : e.key === "ArrowDown" ? value - step : e.key === "Home" && typeof props.min === "number" ? min : e.key === "End" && typeof props.max === "number" ? max : void 0;
|
|
36727
36904
|
if (target === void 0) return;
|
|
@@ -36767,9 +36944,10 @@ var init_renderNode = __esm({
|
|
|
36767
36944
|
] });
|
|
36768
36945
|
}
|
|
36769
36946
|
return /* @__PURE__ */ jsxs5("div", { ...root, style: box, children: [
|
|
36770
|
-
/* @__PURE__ */ jsx8("button", { type: "button", tabIndex: -1, "aria-label": "Decrease", disabled: disabled("min"), onClick: () =>
|
|
36947
|
+
/* @__PURE__ */ jsx8("button", { type: "button", tabIndex: -1, "aria-label": "Decrease", disabled: disabled("min"), onClick: () => press(-step), style: { ...btn("min"), font: "inherit" }, children: "\u2212" }),
|
|
36771
36948
|
/* @__PURE__ */ jsx8("b", { ...valueA11y, "aria-valuenow": value, tabIndex: 0, onKeyDown: onValueKeyDown, style: { fontSize: 16, minWidth: 24, textAlign: "center", color: C("textPrimary", "#111"), fontVariantNumeric: "tabular-nums" }, children: value }),
|
|
36772
|
-
/* @__PURE__ */ jsx8("button", { type: "button", tabIndex: -1, "aria-label": "Increase", disabled: disabled("max"), onClick: () =>
|
|
36949
|
+
/* @__PURE__ */ jsx8("button", { type: "button", tabIndex: -1, "aria-label": "Increase", disabled: disabled("max"), onClick: () => press(step), style: { ...btn("max"), font: "inherit" }, children: "+" }),
|
|
36950
|
+
/* @__PURE__ */ jsx8("span", { "aria-live": "polite", style: { position: "absolute", width: 1, height: 1, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", border: 0 }, children: pressed.text + (pressed.count % 2 ? "\xA0" : "") })
|
|
36773
36951
|
] });
|
|
36774
36952
|
});
|
|
36775
36953
|
SYNTHETIC_TAP_ROLE = "data-hm-synthetic-role";
|
|
@@ -36780,7 +36958,6 @@ var init_renderNode = __esm({
|
|
|
36780
36958
|
AUTHORED_ROLE = "data-hm-authored-role";
|
|
36781
36959
|
PENDING_RANGE = "data-hm-pending-range";
|
|
36782
36960
|
RANGE_ROLES = /* @__PURE__ */ new Set(["progressbar", "slider", "scrollbar", "spinbutton", "meter"]);
|
|
36783
|
-
A11Y_PART = "data-hm-a11y-part";
|
|
36784
36961
|
NODE_A11Y_ATTRS = ["aria-label", "aria-valuetext", "aria-level", "aria-describedby", "aria-disabled", "aria-selected"];
|
|
36785
36962
|
INTERACTIVE_ROLES = /* @__PURE__ */ new Set([
|
|
36786
36963
|
"button",
|
|
@@ -37321,7 +37498,8 @@ var init_renderNode = __esm({
|
|
|
37321
37498
|
const C = ctx.color;
|
|
37322
37499
|
const min = props.min ?? 0, max = props.max ?? 1;
|
|
37323
37500
|
const bound = useResolvedScalar(props.valuePath, ctx);
|
|
37324
|
-
const
|
|
37501
|
+
const gSource = props.valuePath != null ? bound : props.value;
|
|
37502
|
+
const gRaw = typeof gSource === "string" && gSource.trim() !== "" && Number.isFinite(Number(gSource)) ? Number(gSource) : gSource;
|
|
37325
37503
|
const v = typeof gRaw === "number" ? gRaw : (min + max) / 2;
|
|
37326
37504
|
const pct = max > min ? Math.max(0, Math.min(1, (v - min) / (max - min))) : 0;
|
|
37327
37505
|
const tint = C(props.tint ?? "accentPrimary", "#116DFF");
|
|
@@ -37330,8 +37508,7 @@ var init_renderNode = __esm({
|
|
|
37330
37508
|
const labelName = useBoundString(props.label, ctx).trim();
|
|
37331
37509
|
const hasValue = typeof gRaw === "number" && Number.isFinite(gRaw);
|
|
37332
37510
|
const named = labelName ? { "aria-label": labelName } : hasValue && max > min ? { "aria-label": `${Math.round(pct * 100)}%` } : {};
|
|
37333
|
-
const
|
|
37334
|
-
const range = max > min ? { "aria-valuemin": min, "aria-valuemax": max, ...hasValue ? { "aria-valuenow": Math.max(min, Math.min(max, v)), ...fractionScale ? { "aria-valuetext": `${Math.round(pct * 100)}%` } : {} } : {} } : {};
|
|
37511
|
+
const range = max > min ? { "aria-valuemin": min, "aria-valuemax": max, ...hasValue ? { "aria-valuenow": Math.max(min, Math.min(max, v)), "aria-valuetext": `${Math.round(pct * 100)}%` } : {} } : {};
|
|
37335
37512
|
const a11y = labelName || hasValue && max > min ? { role: "progressbar", ...named, ...range, [SELF_RENDERED_LEAF]: true } : { "aria-hidden": "true", [INFERRED_DECORATIVE]: true, [ROLE_WHEN_NAMED]: "progressbar", [PENDING_RANGE]: range, [SELF_RENDERED_LEAF]: true };
|
|
37336
37513
|
if (Array.isArray(props.rings) && props.rings.length) {
|
|
37337
37514
|
const size = 96, thick = 9, step = 22;
|
|
@@ -37382,7 +37559,7 @@ var init_renderNode = __esm({
|
|
|
37382
37559
|
const size = props.size ?? 36;
|
|
37383
37560
|
const maxVisible = props.maxVisible ?? 4;
|
|
37384
37561
|
const shown2 = avatars.slice(0, maxVisible);
|
|
37385
|
-
const overflow = props.overflowCount || Math.max(0, avatars.length - maxVisible);
|
|
37562
|
+
const overflow = (props.showOverflow ?? props.show_overflow) === false ? 0 : props.overflowCount || Math.max(0, avatars.length - maxVisible);
|
|
37386
37563
|
const shift = Math.round(size * (1 - (props.overlapRatio ?? 0.67)));
|
|
37387
37564
|
const caption = useBoundString(props.caption, ctx).trim();
|
|
37388
37565
|
const count2 = shown2.length + overflow;
|
|
@@ -37394,7 +37571,16 @@ var init_renderNode = __esm({
|
|
|
37394
37571
|
const ring = props.ringGradient ? ctx.gradient(props.ringGradient) : void 0;
|
|
37395
37572
|
const wrapStyle = ring ? { marginLeft: i === 0 ? 0 : -(size - shift), background: ring, padding: 2.5, borderRadius: "50%" } : { marginLeft: i === 0 ? 0 : -(size - shift), border: `2px solid ${C("surfacePrimary", "#fff")}`, borderRadius: "50%" };
|
|
37396
37573
|
const who = asText2(a.initials).trim();
|
|
37397
|
-
const
|
|
37574
|
+
const initials = avatarCircle(who || "?", size, C, true, bodyFont(ctx));
|
|
37575
|
+
const photo = typeof a.imageUrl === "string" && a.imageUrl && !isBinding(a.imageUrl) ? a.imageUrl : "";
|
|
37576
|
+
const circle = photo ? React7.cloneElement(
|
|
37577
|
+
initials,
|
|
37578
|
+
{ style: { ...initials.props.style, position: "relative", overflow: "hidden" } },
|
|
37579
|
+
initials.props.children,
|
|
37580
|
+
/* @__PURE__ */ jsx8("img", { src: photo, alt: "", onError: (e) => {
|
|
37581
|
+
e.currentTarget.style.display = "none";
|
|
37582
|
+
}, style: { position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover" } })
|
|
37583
|
+
) : initials;
|
|
37398
37584
|
return who ? /* @__PURE__ */ jsx8("div", { role: "listitem", style: wrapStyle, children: React7.cloneElement(circle, { role: "img", "aria-label": who }) }, i) : /* @__PURE__ */ jsx8("div", { "aria-hidden": "true", style: wrapStyle, children: circle }, i);
|
|
37399
37585
|
}),
|
|
37400
37586
|
overflow > 0 && /* @__PURE__ */ jsx8("div", { role: "listitem", style: { marginLeft: -(size - shift), width: size, height: size, borderRadius: "50%", border: `2px solid ${C("surfacePrimary", "#fff")}`, background: C("surfaceTertiary", "#e6e6e6"), color: C("textPrimary", "#111"), display: "grid", placeItems: "center", fontSize: size * 0.32, fontWeight: 700, fontFamily: bodyFont(ctx) }, children: /* @__PURE__ */ jsxs5("span", { role: "img", "aria-label": `${overflow} more`, children: [
|
|
@@ -40980,9 +41166,9 @@ async function handleOwnerSitesRequest(req, res) {
|
|
|
40980
41166
|
try {
|
|
40981
41167
|
const { fetchLiveOwnerSites } = await import("./apps/wix-owner-clone-live.js");
|
|
40982
41168
|
const { buildWixOwnerCloneSites } = await import("./apps/wix-owner-clone-app.js");
|
|
40983
|
-
const
|
|
40984
|
-
if (
|
|
40985
|
-
payload = { sites:
|
|
41169
|
+
const live3 = await fetchLiveOwnerSites();
|
|
41170
|
+
if (live3) {
|
|
41171
|
+
payload = { sites: live3 };
|
|
40986
41172
|
} else {
|
|
40987
41173
|
source = "fallback";
|
|
40988
41174
|
payload = buildWixOwnerCloneSites();
|
|
@@ -47213,17 +47399,17 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
|
|
|
47213
47399
|
base2 = null;
|
|
47214
47400
|
} else {
|
|
47215
47401
|
const counting = countingWixCall(await ensureLiveWixCall());
|
|
47216
|
-
const
|
|
47402
|
+
const live3 = await liveRenderServices(bundleJs, {
|
|
47217
47403
|
wixCall: counting.call,
|
|
47218
47404
|
input,
|
|
47219
47405
|
budgetMs: collect2.render.loadBudgetMs ?? LIVE_LOAD_BUDGET_MS,
|
|
47220
47406
|
localDbSchema: appLocalDbSchema,
|
|
47221
47407
|
descriptor
|
|
47222
47408
|
});
|
|
47223
|
-
base2 =
|
|
47224
|
-
liveCalls = [...
|
|
47409
|
+
base2 = live3.services;
|
|
47410
|
+
liveCalls = [...live3.calls];
|
|
47225
47411
|
liveReturned = counting.returned();
|
|
47226
|
-
liveErrors =
|
|
47412
|
+
liveErrors = live3.errors;
|
|
47227
47413
|
}
|
|
47228
47414
|
} else if (collect2?.render?.mocks && collect2.render.hydrate !== false && bundleName && readBuiltBundle(tier5Dir, bundleName)) {
|
|
47229
47415
|
const calls = [];
|
|
@@ -49476,12 +49662,12 @@ function planFromPayload(payload, base, selectors) {
|
|
|
49476
49662
|
}
|
|
49477
49663
|
return { ok: true, plan: { patch, touched, included, rebound } };
|
|
49478
49664
|
}
|
|
49479
|
-
function regressionDiff(base,
|
|
49665
|
+
function regressionDiff(base, live3, touched) {
|
|
49480
49666
|
const moves = new Set(touched);
|
|
49481
49667
|
const rows = [];
|
|
49482
|
-
for (const id of /* @__PURE__ */ new Set([...Object.keys(
|
|
49668
|
+
for (const id of /* @__PURE__ */ new Set([...Object.keys(live3.screens ?? {}), ...Object.keys(base.screens ?? {})])) {
|
|
49483
49669
|
if (moves.has(`screen:${id}`)) continue;
|
|
49484
|
-
const l =
|
|
49670
|
+
const l = live3.screens?.[id];
|
|
49485
49671
|
const b = base.screens?.[id];
|
|
49486
49672
|
if (!b) {
|
|
49487
49673
|
rows.push({ item: `screen:${id}`, live: l?.descriptorHash ?? null, base: null, effect: `${id} DISAPPEARS \u2014 it was added after ${base.releaseId}` });
|
|
@@ -49495,13 +49681,13 @@ function regressionDiff(base, live2, touched) {
|
|
|
49495
49681
|
rows.push({ item: `screen:${id}`, live: l.descriptorHash, base: b.descriptorHash, effect: `${id} reverts to its ${base.releaseId} descriptor` });
|
|
49496
49682
|
continue;
|
|
49497
49683
|
}
|
|
49498
|
-
if (resolveBundleSha(
|
|
49499
|
-
rows.push({ item: `screen:${id}`, live: resolveBundleSha(
|
|
49684
|
+
if (resolveBundleSha(live3, l.bundle) !== resolveBundleSha(base, b.bundle)) {
|
|
49685
|
+
rows.push({ item: `screen:${id}`, live: resolveBundleSha(live3, l.bundle), base: resolveBundleSha(base, b.bundle), effect: `${id} rebinds to its ${base.releaseId} worker bundle` });
|
|
49500
49686
|
}
|
|
49501
49687
|
}
|
|
49502
49688
|
const scalar4 = (key2, item, what) => {
|
|
49503
49689
|
if (moves.has(item)) return;
|
|
49504
|
-
const l =
|
|
49690
|
+
const l = live3[key2] ?? null;
|
|
49505
49691
|
const b = base[key2] ?? null;
|
|
49506
49692
|
if (l !== b) rows.push({ item, live: l, base: b, effect: `${what} reverts to ${base.releaseId}` });
|
|
49507
49693
|
};
|
|
@@ -49509,8 +49695,8 @@ function regressionDiff(base, live2, touched) {
|
|
|
49509
49695
|
scalar4("appConfigHash", "app-config", "app-config");
|
|
49510
49696
|
scalar4("iconHash", "icon", "the launcher icon");
|
|
49511
49697
|
scalar4("minBinaryVersion", "minBinaryVersion", "the minimum binary version");
|
|
49512
|
-
for (const name of /* @__PURE__ */ new Set([...Object.keys(
|
|
49513
|
-
const l =
|
|
49698
|
+
for (const name of /* @__PURE__ */ new Set([...Object.keys(live3.assets ?? {}), ...Object.keys(base.assets ?? {})])) {
|
|
49699
|
+
const l = live3.assets?.[name]?.sha256 ?? null;
|
|
49514
49700
|
const b = base.assets?.[name]?.sha256 ?? null;
|
|
49515
49701
|
if (l === b) continue;
|
|
49516
49702
|
rows.push({
|
|
@@ -49520,16 +49706,16 @@ function regressionDiff(base, live2, touched) {
|
|
|
49520
49706
|
effect: b === null ? `asset:${name} record DISAPPEARS \u2014 references fall back to the baked copy or render empty` : `asset:${name} reverts to ${base.releaseId}`
|
|
49521
49707
|
});
|
|
49522
49708
|
}
|
|
49523
|
-
for (const name of /* @__PURE__ */ new Set([...Object.keys(
|
|
49524
|
-
const l =
|
|
49709
|
+
for (const name of /* @__PURE__ */ new Set([...Object.keys(live3.authoringDocs ?? {}), ...Object.keys(base.authoringDocs ?? {})])) {
|
|
49710
|
+
const l = live3.authoringDocs?.[name]?.sha256 ?? null;
|
|
49525
49711
|
const b = base.authoringDocs?.[name]?.sha256 ?? null;
|
|
49526
49712
|
if (l !== b) rows.push({ item: `doc:${name}`, live: l, base: b, effect: `${name} reverts to ${base.releaseId}` });
|
|
49527
49713
|
}
|
|
49528
49714
|
const PROVENANCE = /* @__PURE__ */ new Set(["releaseId", "gitSha", "shellSha", "label", "notes", "publishedAt", "publishedBy", "attestation", "forcedPastErrors"]);
|
|
49529
49715
|
const REPORTED_IN_DETAIL = /* @__PURE__ */ new Set(["app", "screens", "bundles", "tokensHash", "appConfigHash", "iconHash", "minBinaryVersion", "assets", "authoringDocs"]);
|
|
49530
|
-
for (const key2 of /* @__PURE__ */ new Set([...Object.keys(
|
|
49716
|
+
for (const key2 of /* @__PURE__ */ new Set([...Object.keys(live3), ...Object.keys(base)])) {
|
|
49531
49717
|
if (PROVENANCE.has(key2) || REPORTED_IN_DETAIL.has(key2) || moves.has(key2)) continue;
|
|
49532
|
-
const l =
|
|
49718
|
+
const l = live3[key2] ?? null;
|
|
49533
49719
|
const b = base[key2] ?? null;
|
|
49534
49720
|
const ls = JSON.stringify(l) ?? "null";
|
|
49535
49721
|
const bs = JSON.stringify(b) ?? "null";
|
|
@@ -50579,7 +50765,7 @@ async function runNotifySetup(pos, flags, io, deps = {}) {
|
|
|
50579
50765
|
if (ownership.state !== "owned") return refuse3(io, "app_ownership_unverified", void 0, 1);
|
|
50580
50766
|
input.app = ownership.slug;
|
|
50581
50767
|
const common = { target, wixToken, previewTag, fetchImpl: deps.fetchImpl };
|
|
50582
|
-
const readStatus = (
|
|
50768
|
+
const readStatus = (live3 = false) => pushSetupRequest({ ...common, operation: "status", query: { app: input.app, site: input.site, ...live3 ? { verify: "live" } : {} } });
|
|
50583
50769
|
if (operation === "status") return report(await readStatus(flags.refresh === true), flags, io, dir);
|
|
50584
50770
|
const previous = await readStatus();
|
|
50585
50771
|
if (!previous.ok || !STATES.has(String(previous.body?.state))) return report(previous, flags, io, dir);
|
|
@@ -52575,7 +52761,7 @@ function watchReminder(dir, opts = {}) {
|
|
|
52575
52761
|
try {
|
|
52576
52762
|
if (!existsSync50(join51(dir, "himalaya.content.json"))) return void 0;
|
|
52577
52763
|
const nowDate = opts.now ?? /* @__PURE__ */ new Date();
|
|
52578
|
-
const
|
|
52764
|
+
const live3 = liveWatch(dir, opts.isAlive, nowDate);
|
|
52579
52765
|
const now = nowDate.getTime();
|
|
52580
52766
|
const file = join51(dir, REMINDERS_FILE);
|
|
52581
52767
|
let last = Number.NaN;
|
|
@@ -52587,8 +52773,8 @@ function watchReminder(dir, opts = {}) {
|
|
|
52587
52773
|
if (!realDirIn(dir, ".himi")) return void 0;
|
|
52588
52774
|
writeFileAtomic(file, `${JSON.stringify({ watch: new Date(now).toISOString() })}
|
|
52589
52775
|
`);
|
|
52590
|
-
if (
|
|
52591
|
-
return `the live preview is running at ${
|
|
52776
|
+
if (live3) {
|
|
52777
|
+
return `the live preview is running at ${live3.url} (pid ${live3.pid}${live3.by === "init" ? ", started by himi init" : ""}) \u2014 it repaints on every save, and the build board is ${live3.board}; give the owner that link to click around while you work, and do not start another`;
|
|
52592
52778
|
}
|
|
52593
52779
|
const content = opts.content ?? displayPath(dir);
|
|
52594
52780
|
const remote = readInitSource(dir)?.source === "remote" ? "init did not start it because this template came off the serve plane \u2014 once you have read its code, " : "";
|
|
@@ -52635,9 +52821,9 @@ async function startWatchAtInit(dir, opts) {
|
|
|
52635
52821
|
const note = given.length ? { note: watchOptOutIgnoredNote(given) } : {};
|
|
52636
52822
|
const deps = { ...defaultStartWatchDeps, ...opts.deps };
|
|
52637
52823
|
const now = opts.now ?? /* @__PURE__ */ new Date();
|
|
52638
|
-
const
|
|
52639
|
-
if (
|
|
52640
|
-
return { skipped: `a live preview of this app is already running (pid ${
|
|
52824
|
+
const live3 = liveWatch(dir, deps.isAlive, now);
|
|
52825
|
+
if (live3 && (live3.by === "init" || await deps.previewRunning(dir))) {
|
|
52826
|
+
return { skipped: `a live preview of this app is already running (pid ${live3.pid})`, url: live3.url, board: live3.board, pid: live3.pid, ...note };
|
|
52641
52827
|
}
|
|
52642
52828
|
try {
|
|
52643
52829
|
const port = await deps.freePort(previewPortForDir(dir));
|
|
@@ -55976,9 +56162,9 @@ function makeFunctionsHandler(options) {
|
|
|
55976
56162
|
const target = resolveTarget3(new URL(request.url).pathname);
|
|
55977
56163
|
if (!target) return errorResponse(404, "not_found", "function route not found", id);
|
|
55978
56164
|
if (request.method === "OPTIONS") return new Response(null, { status: 204, headers: { "access-control-allow-origin": "*", "access-control-allow-methods": "GET,POST,PUT,PATCH,DELETE,OPTIONS", "access-control-allow-headers": "authorization,content-type,x-request-id,x-himalaya-release,x-himalaya-preview-token", "x-request-id": id } });
|
|
55979
|
-
const
|
|
56165
|
+
const live3 = await options.store.getManifest(target.app);
|
|
55980
56166
|
const pin = new URL(request.url).searchParams.get("release") || request.headers.get("x-himalaya-release");
|
|
55981
|
-
let selected =
|
|
56167
|
+
let selected = live3;
|
|
55982
56168
|
if (pin && !options.previewTokenSecret) return errorResponse(501, "preview_token_unavailable", "pinned release access requires preview token validation", id);
|
|
55983
56169
|
let previewClaims;
|
|
55984
56170
|
if (pin && options.previewTokenSecret) {
|
|
@@ -58358,19 +58544,19 @@ function publicRecord(value) {
|
|
|
58358
58544
|
const { archiveBase64: _archiveBase64, ...record2 } = value;
|
|
58359
58545
|
return record2;
|
|
58360
58546
|
}
|
|
58361
|
-
function
|
|
58547
|
+
function live2(value, now) {
|
|
58362
58548
|
if (!value || value.revokedAt) return null;
|
|
58363
58549
|
if (value.expiresAt && Date.parse(value.expiresAt) <= now.getTime()) return null;
|
|
58364
58550
|
return value;
|
|
58365
58551
|
}
|
|
58366
58552
|
async function resolvePackageShareMetadata(store, id, now = /* @__PURE__ */ new Date()) {
|
|
58367
58553
|
if (!PACKAGE_SHARE_ID_PATTERN2.test(id) || !store.getDoc) return null;
|
|
58368
|
-
const value =
|
|
58554
|
+
const value = live2(parseStored(await store.getDoc(PACKAGE_SHARE_NAMESPACE, id), id), now);
|
|
58369
58555
|
return value ? publicRecord(value) : null;
|
|
58370
58556
|
}
|
|
58371
58557
|
async function resolvePackageShare(store, id, now = /* @__PURE__ */ new Date()) {
|
|
58372
58558
|
if (!PACKAGE_SHARE_ID_PATTERN2.test(id) || !store.getDoc) return null;
|
|
58373
|
-
const value =
|
|
58559
|
+
const value = live2(parseStored(await store.getDoc(PACKAGE_SHARE_NAMESPACE, id), id), now);
|
|
58374
58560
|
if (!value) return null;
|
|
58375
58561
|
const archive = await decodeArchive(value, id);
|
|
58376
58562
|
return archive ? { share: publicRecord(value), archive } : null;
|
|
@@ -58728,8 +58914,8 @@ ${releaseId}`;
|
|
|
58728
58914
|
if (/^\/v1\/app-config\/[^/]+$/.test(url.pathname)) return drop();
|
|
58729
58915
|
let servable;
|
|
58730
58916
|
try {
|
|
58731
|
-
const
|
|
58732
|
-
const eligible =
|
|
58917
|
+
const live3 = await manifest(app);
|
|
58918
|
+
const eligible = live3?.releaseId === pin || await isRingRelease(app, pin);
|
|
58733
58919
|
const pinned = eligible ? await pinnedManifest(app, pin) : null;
|
|
58734
58920
|
servable = pinned !== null;
|
|
58735
58921
|
const screenId = /^\/v1\/screen\/([^/]+)$/.exec(url.pathname)?.[1];
|
|
@@ -59252,7 +59438,7 @@ ${releaseId}`;
|
|
|
59252
59438
|
if (!m) return json4(404, { error: "app_not_found", app });
|
|
59253
59439
|
}
|
|
59254
59440
|
const mm = m;
|
|
59255
|
-
const readDoc = (hash,
|
|
59441
|
+
const readDoc = (hash, live3) => pin ? hash ? pinnedBody(app, hash, live3) : Promise.resolve(null) : live3();
|
|
59256
59442
|
const ringPinned = pin !== null && request.headers.get(RELEASE_SOURCE_HEADER) === "ring";
|
|
59257
59443
|
const cfgBytes = ringPinned ? await store.getAppConfig(app) : await readDoc(mm.appConfigHash, () => store.getAppConfig(app));
|
|
59258
59444
|
if (!cfgBytes) return json4(404, { error: "app_config_not_found", app });
|
|
@@ -59282,9 +59468,9 @@ ${releaseId}`;
|
|
|
59282
59468
|
let homeFrom = mm;
|
|
59283
59469
|
let readHome = readDoc;
|
|
59284
59470
|
if (ringPinned && homeScreenId && !mm.screens[homeScreenId]) {
|
|
59285
|
-
const
|
|
59286
|
-
if (
|
|
59287
|
-
homeFrom =
|
|
59471
|
+
const live3 = await manifest(app);
|
|
59472
|
+
if (live3?.screens[homeScreenId]) {
|
|
59473
|
+
homeFrom = live3;
|
|
59288
59474
|
readHome = (_hash, liveSlot) => liveSlot();
|
|
59289
59475
|
}
|
|
59290
59476
|
}
|
|
@@ -59954,21 +60140,21 @@ var init_preview_assets_generated = __esm({
|
|
|
59954
60140
|
"../../packages/serve/src/preview-assets.generated.ts"() {
|
|
59955
60141
|
init_preview_assets_format();
|
|
59956
60142
|
PREVIEW_ASSET_MANIFEST = [
|
|
59957
|
-
{ key: "assets/index-
|
|
59958
|
-
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset:
|
|
59959
|
-
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset:
|
|
59960
|
-
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset:
|
|
59961
|
-
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
59962
|
-
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset:
|
|
59963
|
-
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset:
|
|
59964
|
-
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
59965
|
-
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset:
|
|
59966
|
-
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
59967
|
-
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset:
|
|
59968
|
-
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset:
|
|
59969
|
-
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
59970
|
-
{ key: "index.html", contentType: "text/html; charset=utf-8", offset:
|
|
59971
|
-
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
60143
|
+
{ key: "assets/index-C5pLAEVw.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1131202, sha256: "227bc4e092810f75d1b156bbef6e9409b36bd0f92370b33864ff3f309f6fe771" },
|
|
60144
|
+
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1131210, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
|
|
60145
|
+
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1135820, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
|
|
60146
|
+
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1624404, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
|
|
60147
|
+
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1715328, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
|
|
60148
|
+
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1806312, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
|
|
60149
|
+
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1897292, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
|
|
60150
|
+
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 1988164, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
|
|
60151
|
+
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2079144, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
|
|
60152
|
+
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2187780, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
|
|
60153
|
+
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2296864, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
|
|
60154
|
+
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2405912, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
|
|
60155
|
+
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2513612, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
|
|
60156
|
+
{ key: "index.html", contentType: "text/html; charset=utf-8", offset: 2601720, length: 4947, sha256: "946631b440fc9601c829ef9cc7aa28a02a1ef6f0de48ac76f88cafdfcb04563c" },
|
|
60157
|
+
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2606667, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
|
|
59972
60158
|
];
|
|
59973
60159
|
}
|
|
59974
60160
|
});
|
|
@@ -61680,14 +61866,14 @@ function assertSameAccount(planned, current) {
|
|
|
61680
61866
|
`the plan was made with profile "${planned.profile}" (team ${planned.team}, key ${planned.fingerprint}) but this run resolved profile "${current.profile}" (team ${current.team}, key ${current.fingerprint}). Make a new plan with the account you mean.`
|
|
61681
61867
|
);
|
|
61682
61868
|
}
|
|
61683
|
-
function driftOf(planned,
|
|
61869
|
+
function driftOf(planned, live3) {
|
|
61684
61870
|
if (planned.decision === "conflict") return void 0;
|
|
61685
|
-
if (
|
|
61686
|
-
const unplanned =
|
|
61687
|
-
return unplanned.length ? `${
|
|
61871
|
+
if (live3.decision === "conflict") return `${live3.productId} now conflicts: ${live3.conflicts.join("; ")}`;
|
|
61872
|
+
const unplanned = live3.ops.filter((op) => !planned.ops.some((p) => sameOp(p, op)));
|
|
61873
|
+
return unplanned.length ? `${live3.productId} now needs ${unplanned.map(describeOp).join(", ")}, which the plan did not list` : void 0;
|
|
61688
61874
|
}
|
|
61689
|
-
function assertNoDrift(plan,
|
|
61690
|
-
const drift = [...
|
|
61875
|
+
function assertNoDrift(plan, live3) {
|
|
61876
|
+
const drift = [...live3].map(([i, current]) => driftOf(plan.items[i], current)).filter((d) => d !== void 0);
|
|
61691
61877
|
if (!drift.length) return;
|
|
61692
61878
|
throw new IapProvisionError("drift", `App Store Connect changed since the plan was made \u2014 nothing was written:
|
|
61693
61879
|
- ${drift.join("\n - ")}
|
|
@@ -61857,27 +62043,27 @@ async function knownUnmetFor(item, planned, context) {
|
|
|
61857
62043
|
if (!planned.observed) return [];
|
|
61858
62044
|
return metadataDiffs(item, planned.observed, planned.targetPrice ?? await context.pricing.targetAmount(item.price));
|
|
61859
62045
|
}
|
|
61860
|
-
async function applyItem(item,
|
|
62046
|
+
async function applyItem(item, live3, context, manifest) {
|
|
61861
62047
|
const base = { target: manifest.target, item, readAt: context.now() };
|
|
61862
|
-
if (
|
|
61863
|
-
const unmet2 = await knownUnmetFor(item,
|
|
61864
|
-
return itemResult({ ...base, observed:
|
|
62048
|
+
if (live3.decision === "conflict") {
|
|
62049
|
+
const unmet2 = await knownUnmetFor(item, live3, context);
|
|
62050
|
+
return itemResult({ ...base, observed: live3.observed, outcome: "conflict", conflicts: live3.conflicts, unmet: unmet2 });
|
|
61865
62051
|
}
|
|
61866
62052
|
const run2 = {
|
|
61867
62053
|
item,
|
|
61868
|
-
resourceId:
|
|
61869
|
-
versionId:
|
|
61870
|
-
localizations:
|
|
62054
|
+
resourceId: live3.observed?.resourceId,
|
|
62055
|
+
versionId: live3.observed?.draftVersionId,
|
|
62056
|
+
localizations: live3.observed?.draftVersionId ? live3.observed.localizations : []
|
|
61871
62057
|
};
|
|
61872
|
-
const steps = await runOps(run2,
|
|
62058
|
+
const steps = await runOps(run2, live3.ops, context, manifest);
|
|
61873
62059
|
const { observed, failure } = await readBack(run2, context, manifest);
|
|
61874
62060
|
const unmet = failure ? [`could not read the product back: ${failure}`] : await unmetFor(item, observed, context);
|
|
61875
|
-
const outcome = outcomeOf(
|
|
62061
|
+
const outcome = outcomeOf(live3.ops, steps, unmet);
|
|
61876
62062
|
return itemResult({ ...base, readAt: context.now(), observed, outcome, steps, unmet, appleResourceId: run2.resourceId });
|
|
61877
62063
|
}
|
|
61878
|
-
function deferredResult(item,
|
|
61879
|
-
const steps =
|
|
61880
|
-
return itemResult({ target: manifest.target, item, observed:
|
|
62064
|
+
function deferredResult(item, live3, context, manifest) {
|
|
62065
|
+
const steps = live3.ops.map((op) => stepFor(op, "notRun"));
|
|
62066
|
+
return itemResult({ target: manifest.target, item, observed: live3.observed, outcome: "deferred", steps, requirements: [DEFERRED_REQUIREMENT], readAt: context.now() });
|
|
61881
62067
|
}
|
|
61882
62068
|
function needsRefresh(planned) {
|
|
61883
62069
|
return planned.decision !== "conflict" && planned.ops.length > 0;
|
|
@@ -61892,12 +62078,12 @@ async function applyIap(planDoc, applyContext) {
|
|
|
61892
62078
|
const context = { ...applyContext, pricing: applyContext.pricing ?? new PriceGrid(applyContext.api) };
|
|
61893
62079
|
const manifest = plan.manifest;
|
|
61894
62080
|
const refresh = plan.items.flatMap((planned, i) => needsRefresh(planned) ? [i] : []);
|
|
61895
|
-
const
|
|
61896
|
-
assertNoDrift(plan,
|
|
62081
|
+
const live3 = await planItemsAt(context, manifest, refresh);
|
|
62082
|
+
assertNoDrift(plan, live3);
|
|
61897
62083
|
const items = [];
|
|
61898
62084
|
let created = 0;
|
|
61899
62085
|
for (const [i, item] of manifest.items.entries()) {
|
|
61900
|
-
const itemPlan2 =
|
|
62086
|
+
const itemPlan2 = live3.get(i);
|
|
61901
62087
|
if (!itemPlan2) {
|
|
61902
62088
|
items.push(await plannedResult(item, plan.items[i], plan, context, manifest));
|
|
61903
62089
|
continue;
|
|
@@ -74038,13 +74224,13 @@ async function snapshotAndPublish(fetchImpl, token, msid, opts = {}) {
|
|
|
74038
74224
|
timeoutMs: 45e3,
|
|
74039
74225
|
body: { label: "WIX_CLI", useUniqueLabel: true }
|
|
74040
74226
|
});
|
|
74041
|
-
const
|
|
74227
|
+
const live3 = production ? await veloCall(fetchImpl, "POST", SITE_PUBLISH_URL, { token, msid, timeoutMs: 45e3, body: {} }) : void 0;
|
|
74042
74228
|
return {
|
|
74043
74229
|
revision: revisionFrom(rev.json),
|
|
74044
74230
|
codeAppId: codeAppIdFromRevision(rev.json),
|
|
74045
74231
|
rev,
|
|
74046
74232
|
rc,
|
|
74047
|
-
live:
|
|
74233
|
+
live: live3
|
|
74048
74234
|
};
|
|
74049
74235
|
}
|
|
74050
74236
|
function httpOk(r) {
|
|
@@ -80273,9 +80459,9 @@ himi v${cliVersion()} \u2014 run \`himi --version\`. If authoring commands fail
|
|
|
80273
80459
|
io.error(JSON.stringify(liveFound));
|
|
80274
80460
|
return 1;
|
|
80275
80461
|
}
|
|
80276
|
-
const
|
|
80277
|
-
if (
|
|
80278
|
-
regressions = regressionDiff2(base,
|
|
80462
|
+
const live3 = liveFound.manifest;
|
|
80463
|
+
if (live3 && live3.releaseId !== base.releaseId) {
|
|
80464
|
+
regressions = regressionDiff2(base, live3, plan.touched);
|
|
80279
80465
|
if (regressions.length > 0 && !opts.acceptRegressions) {
|
|
80280
80466
|
io.error(JSON.stringify({
|
|
80281
80467
|
ok: false,
|
|
@@ -80283,7 +80469,7 @@ himi v${cliVersion()} \u2014 run \`himi --version\`. If authoring commands fail
|
|
|
80283
80469
|
error: "would_regress",
|
|
80284
80470
|
app,
|
|
80285
80471
|
base: { releaseId: base.releaseId, publishedAt: base.publishedAt ?? null },
|
|
80286
|
-
live: { releaseId:
|
|
80472
|
+
live: { releaseId: live3.releaseId, publishedAt: live3.publishedAt ?? null },
|
|
80287
80473
|
message: `a branch does not merge. Activating a release derived from ${base.releaseId} reverts every item this patch does not move.`,
|
|
80288
80474
|
wouldRegress: regressions,
|
|
80289
80475
|
moves: plan.touched,
|
|
@@ -81964,9 +82150,9 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
|
|
|
81964
82150
|
const scheme = str9(flags.scheme) === "dark" ? "dark" : "light";
|
|
81965
82151
|
const wantPng = flags.png === true || typeof flags.png === "string";
|
|
81966
82152
|
const hydrate = flags.static !== true;
|
|
81967
|
-
const
|
|
82153
|
+
const live3 = flags.live === true;
|
|
81968
82154
|
const strict = flags.strict === true;
|
|
81969
|
-
if (
|
|
82155
|
+
if (live3 && flags.static === true) {
|
|
81970
82156
|
io.error(JSON.stringify({ error: "--static and --live are mutually exclusive: --static renders raw bindings, --live renders real Wix data" }));
|
|
81971
82157
|
return 2;
|
|
81972
82158
|
}
|
|
@@ -81974,8 +82160,8 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
|
|
|
81974
82160
|
io.error(JSON.stringify({ error: `--mocks takes no value (got "${String(flags.mocks)}") \u2014 pass it bare` }));
|
|
81975
82161
|
return 2;
|
|
81976
82162
|
}
|
|
81977
|
-
if (flags.mocks === true && (
|
|
81978
|
-
io.error(JSON.stringify({ error: `--mocks and ${
|
|
82163
|
+
if (flags.mocks === true && (live3 || flags.static === true)) {
|
|
82164
|
+
io.error(JSON.stringify({ error: `--mocks and ${live3 ? "--live" : "--static"} are mutually exclusive: --mocks loads the app's recorded data, ${live3 ? "--live real Wix data" : "--static no data at all"}` }));
|
|
81979
82165
|
return 2;
|
|
81980
82166
|
}
|
|
81981
82167
|
if (flags.mocks === true && flags["no-mocks"] === true) {
|
|
@@ -82054,7 +82240,7 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
|
|
|
82054
82240
|
}
|
|
82055
82241
|
let mocks;
|
|
82056
82242
|
let mocksNote;
|
|
82057
|
-
const mocksByDefault = flags.mocks !== true && flags["no-mocks"] !== true && !
|
|
82243
|
+
const mocksByDefault = flags.mocks !== true && flags["no-mocks"] !== true && !live3 && flags.static !== true && injectedState === void 0;
|
|
82058
82244
|
if (flags.mocks === true || mocksByDefault) {
|
|
82059
82245
|
let rules = null;
|
|
82060
82246
|
let bad2;
|
|
@@ -82077,7 +82263,7 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
|
|
|
82077
82263
|
...hasWorkers ? { tier5Dir: bundleOutDir2(dir) } : {},
|
|
82078
82264
|
// The settled state is always kept (printed only under --dump-state): it is what says whether
|
|
82079
82265
|
// the picture landed on the screen's content or on its error, loading or empty state.
|
|
82080
|
-
collect: { lint: true, strict, render: { screenId, scheme, png: wantPng, hydrate, dumpState: true, ...
|
|
82266
|
+
collect: { lint: true, strict, render: { screenId, scheme, png: wantPng, hydrate, dumpState: true, ...live3 ? { live: true } : {}, ...injectedState ? { state: injectedState } : {}, ...injectedInput ? { input: injectedInput } : {}, ...renderWidth ? { width: renderWidth } : {}, ...flags.rtl === true ? { rtl: true } : {}, ...loadBudgetMs ? { loadBudgetMs } : {}, ...mocks ? { mocks: { rules: mocks.rules, cmsSeed: mocks.cmsSeed } } : {} } }
|
|
82081
82267
|
});
|
|
82082
82268
|
const r = (outcome.renders ?? [])[0];
|
|
82083
82269
|
if (!r) {
|
|
@@ -82106,11 +82292,11 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
|
|
|
82106
82292
|
screenId,
|
|
82107
82293
|
scheme,
|
|
82108
82294
|
renderable: r.renderable,
|
|
82109
|
-
hydrated:
|
|
82110
|
-
dataSource: renderDataSource({ live:
|
|
82295
|
+
hydrated: live3 ? "live" : hydrate,
|
|
82296
|
+
dataSource: renderDataSource({ live: live3, hydrate, liveCalls: r.liveCalls, liveReturned: r.liveReturned, mocked: !!r.mockCalls }),
|
|
82111
82297
|
// What --mocks loaded from, how many requests the load made, and the ones no layer held.
|
|
82112
82298
|
...r.mockCalls && mocks ? { mocks: { used: true, from: mocks.from, calls: r.mockCalls.length, ...r.mockUnserved?.length ? { unserved: r.mockUnserved } : {}, ...mocks.ignored ? { ignored: mocks.ignored } : {}, ...mocksByDefault ? { default: true, hint: "the app's recorded data loaded by default; --no-mocks renders the offline initial state, --live the real site" } : {} } } : mocksNote ? { mocks: mocksNote } : mocks ? { mocks: { used: false, reason: r.mockBootFailed ? "the screen's worker failed to boot against the recorded data, so its initial state was rendered" : "the screen has no worker bundle to load data into", ...mocks.ignored ? { ignored: mocks.ignored } : {} } } : {},
|
|
82113
|
-
...
|
|
82299
|
+
...live3 ? {
|
|
82114
82300
|
liveCalls: r.liveCalls?.length ?? 0,
|
|
82115
82301
|
// Beside the attempt count, because the two coming apart IS the signal (#1883).
|
|
82116
82302
|
liveReturned: r.liveReturned ?? 0,
|
|
@@ -82162,7 +82348,7 @@ ${[...afterRun.next, ...testReminder ? [testReminder] : []].join("\n")}`);
|
|
|
82162
82348
|
if (pngFile && r.renderable) {
|
|
82163
82349
|
const { recordShotState: recordShotState2, screenStateOf: screenStateOf2 } = await Promise.resolve().then(() => (init_screen_state(), screen_state_exports));
|
|
82164
82350
|
const mocked = !!r.mockCalls;
|
|
82165
|
-
landed = screenStateOf2(r.serviceState, r.html, { initial: !
|
|
82351
|
+
landed = screenStateOf2(r.serviceState, r.html, { initial: !live3 && !mocked, offline: mocked && (r.mockUnserved?.length ?? 0) > 0 });
|
|
82166
82352
|
recordShotState2(dir, screenId, pngFile, landed);
|
|
82167
82353
|
}
|
|
82168
82354
|
const autoSkip = process.env.HIMI_AUTO_RENDER === "validate" && landed !== null && (landed.state === "loading" || landed.state === "empty" || landed.state === "error" && landed.offline === true) ? `the picture shows the home screen's ${landed.state} state${landed.initial || landed.offline ? " (an offline preview: the site's data is not loaded offline)" : ""}, so no postcard was journaled from it` : void 0;
|
|
@@ -83557,9 +83743,9 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
|
|
|
83557
83743
|
await announce(running);
|
|
83558
83744
|
if (watchKit && bus) {
|
|
83559
83745
|
const { buildContentBundles: buildContentBundles2, buildReleaseFromContent: buildReleaseFromContent2, bundleOutDir: bundleOutDir2 } = await loadAuthoring();
|
|
83560
|
-
const
|
|
83746
|
+
const live3 = join74(running.releaseRoot, running.app);
|
|
83561
83747
|
const manifestOf = (tree) => JSON.parse(readFileSync90(join74(tree, "release-manifest.json"), "utf8"));
|
|
83562
|
-
let current = manifestOf(
|
|
83748
|
+
let current = manifestOf(live3);
|
|
83563
83749
|
const failed2 = async (message) => {
|
|
83564
83750
|
if (stopping) return;
|
|
83565
83751
|
bus.publish("build.failed", { message });
|
|
@@ -83589,13 +83775,13 @@ default (no --glyph): ${DEFAULT_GLYPH2} \u2014 a mark that claims nothing, so th
|
|
|
83589
83775
|
const fresh = manifestOf(join74(next, running.app));
|
|
83590
83776
|
const diff = watchKit.diffReleases(current, fresh);
|
|
83591
83777
|
const { describeChanges: describeChanges2, headline: headline2 } = await Promise.resolve().then(() => (init_build_changes(), build_changes_exports));
|
|
83592
|
-
const changes = describeChanges2(
|
|
83593
|
-
const retired = `${
|
|
83594
|
-
renameSync9(
|
|
83778
|
+
const changes = describeChanges2(live3, join74(next, running.app), diff);
|
|
83779
|
+
const retired = `${live3}.retired-${Date.now()}`;
|
|
83780
|
+
renameSync9(live3, retired);
|
|
83595
83781
|
try {
|
|
83596
|
-
renameSync9(join74(next, running.app),
|
|
83782
|
+
renameSync9(join74(next, running.app), live3);
|
|
83597
83783
|
} catch {
|
|
83598
|
-
cpSync3(join74(next, running.app),
|
|
83784
|
+
cpSync3(join74(next, running.app), live3, { recursive: true });
|
|
83599
83785
|
}
|
|
83600
83786
|
rmSync20(retired, { recursive: true, force: true });
|
|
83601
83787
|
current = fresh;
|
|
Binary file
|
|
@@ -635,13 +635,6 @@
|
|
|
635
635
|
"encoding": "double",
|
|
636
636
|
"note": "Range mode additionally sends `upperValue`.",
|
|
637
637
|
"divergences": [
|
|
638
|
-
{
|
|
639
|
-
"arms": [
|
|
640
|
-
"web"
|
|
641
|
-
],
|
|
642
|
-
"kind": "no-payload",
|
|
643
|
-
"actual": "dispatches the bare action — the renderer's own code — with no injected value."
|
|
644
|
-
},
|
|
645
638
|
{
|
|
646
639
|
"arms": [
|
|
647
640
|
"rn"
|
|
@@ -653,7 +646,8 @@
|
|
|
653
646
|
{
|
|
654
647
|
"arms": [
|
|
655
648
|
"ios",
|
|
656
|
-
"android"
|
|
649
|
+
"android",
|
|
650
|
+
"web"
|
|
657
651
|
],
|
|
658
652
|
"kind": "additive",
|
|
659
653
|
"actual": "range mode additionally sends `upperValue` beside `value`.",
|
|
@@ -1213,11 +1213,9 @@ export interface SliderProps {
|
|
|
1213
1213
|
|
|
1214
1214
|
> `onChange` — Range mode additionally sends `upperValue`.
|
|
1215
1215
|
|
|
1216
|
-
> ⚠️ **`onChange` on web — DIVERGES:** dispatches the bare action — the renderer's own code — with no injected value.
|
|
1217
|
-
|
|
1218
1216
|
> ⚠️ **`onChange` on rn — DIVERGES:** renders a static visual and never dispatches at all. RN Slider is unimplemented rather than divergent; listed so the gap is counted, not hidden.
|
|
1219
1217
|
|
|
1220
|
-
> ⚠️ **`onChange` on ios + android — ALSO sends:** range mode additionally sends `upperValue` beside `value`. Additive, and the contract's Slider note already describes it. Same problem as groupId: allowed by a hard-coded list rather than declared.
|
|
1218
|
+
> ⚠️ **`onChange` on ios + android + web — ALSO sends:** range mode additionally sends `upperValue` beside `value`. Additive, and the contract's Slider note already describes it. Same problem as groupId: allowed by a hard-coded list rather than declared.
|
|
1221
1219
|
|
|
1222
1220
|
#### SelectionControl
|
|
1223
1221
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1161.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": "cc720c71144f4be2d598eb2d2705a9e2ce5cc9345d2a65d43bb8f055"
|
|
71
71
|
}
|