@wix/himalaya-cli 0.1214.0 → 0.1216.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 +118 -65
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/push-cli-onboarding.md +14 -3
- package/package.json +2 -2
package/dist/cli.mjs
CHANGED
|
@@ -6868,6 +6868,7 @@ function resolveTranslation(value, catalog, sourceCatalog) {
|
|
|
6868
6868
|
var BINDING_SIGILS, BINDING_SIGIL_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
|
|
6869
6869
|
var init_bindings = __esm({
|
|
6870
6870
|
"../../core/ts/src/bindings.ts"() {
|
|
6871
|
+
"use strict";
|
|
6871
6872
|
BINDING_SIGILS = ["service", "flag", "item", "t"];
|
|
6872
6873
|
BINDING_SIGIL_RE = new RegExp(
|
|
6873
6874
|
`^\\$(?:${BINDING_SIGILS.filter((s) => s !== "t").join("|")})\\b|^\\$t:`
|
|
@@ -25391,6 +25392,7 @@ function shouldRevealError(args) {
|
|
|
25391
25392
|
var EMAIL_RE, URL_HOST_RE, INTEGER_RE, NUMBER_RE;
|
|
25392
25393
|
var init_validation = __esm({
|
|
25393
25394
|
"../../core/ts/src/validation.ts"() {
|
|
25395
|
+
"use strict";
|
|
25394
25396
|
EMAIL_RE = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*\.[A-Za-z]{2,}$/;
|
|
25395
25397
|
URL_HOST_RE = /^[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(:[0-9]+)?$/;
|
|
25396
25398
|
INTEGER_RE = /^[+-]?[0-9]+$/;
|
|
@@ -26050,6 +26052,7 @@ function validateWorkerSubtree(raw, slotId, policy, actionCatalog) {
|
|
|
26050
26052
|
var WORKER_SUBTREE_CEILINGS, ID_PART, ACTION_ID;
|
|
26051
26053
|
var init_worker_subtree = __esm({
|
|
26052
26054
|
"../../core/ts/src/worker-subtree.ts"() {
|
|
26055
|
+
"use strict";
|
|
26053
26056
|
init_worker_subtree_safe_types_generated();
|
|
26054
26057
|
WORKER_SUBTREE_CEILINGS = Object.freeze({
|
|
26055
26058
|
maxEncodedBytes: 65536,
|
|
@@ -34787,6 +34790,29 @@ function idiomPress(ctx, part) {
|
|
|
34787
34790
|
ensurePressStyles();
|
|
34788
34791
|
return `${ctx.idiom}-${kind}`;
|
|
34789
34792
|
}
|
|
34793
|
+
function revealOnFocusStyle(C) {
|
|
34794
|
+
return {
|
|
34795
|
+
...VISUALLY_HIDDEN,
|
|
34796
|
+
background: C("surfacePrimary", "#fff"),
|
|
34797
|
+
color: C("textPrimary", "#13171e"),
|
|
34798
|
+
font: "inherit",
|
|
34799
|
+
fontSize: pxToRem(11),
|
|
34800
|
+
fontWeight: 600,
|
|
34801
|
+
cursor: "pointer"
|
|
34802
|
+
};
|
|
34803
|
+
}
|
|
34804
|
+
function FormFieldLabelIdScope({ render, fieldKey, ...extras }) {
|
|
34805
|
+
const id = React7.useId().replace(/[^A-Za-z0-9_-]/g, "");
|
|
34806
|
+
const el = render(`${fieldKey ? `${fieldKey}-` : ""}auto-${id}`);
|
|
34807
|
+
return Object.keys(extras).length ? React7.cloneElement(el, extras) : el;
|
|
34808
|
+
}
|
|
34809
|
+
function formFieldA11y(props) {
|
|
34810
|
+
const labelledBy = props.__labelledBy;
|
|
34811
|
+
return {
|
|
34812
|
+
"aria-labelledby": typeof labelledBy === "string" && labelledBy ? labelledBy : void 0,
|
|
34813
|
+
"aria-required": props.validation?.required === true || void 0
|
|
34814
|
+
};
|
|
34815
|
+
}
|
|
34790
34816
|
function ensureFocusStyles() {
|
|
34791
34817
|
if (focusStylesInjected || typeof document === "undefined") return;
|
|
34792
34818
|
focusStylesInjected = true;
|
|
@@ -37177,48 +37203,56 @@ function renderInner(node, ctx) {
|
|
|
37177
37203
|
inner: props.text?.validation
|
|
37178
37204
|
});
|
|
37179
37205
|
const isTextKind = !["stepper", "toggle", "picker", "date"].includes(props.kind);
|
|
37180
|
-
const
|
|
37181
|
-
|
|
37182
|
-
|
|
37183
|
-
|
|
37184
|
-
|
|
37185
|
-
|
|
37186
|
-
|
|
37187
|
-
|
|
37188
|
-
|
|
37189
|
-
|
|
37190
|
-
|
|
37191
|
-
|
|
37192
|
-
|
|
37193
|
-
|
|
37194
|
-
|
|
37195
|
-
|
|
37196
|
-
|
|
37197
|
-
|
|
37198
|
-
|
|
37199
|
-
|
|
37200
|
-
|
|
37201
|
-
|
|
37206
|
+
const labelText2 = asBoundText(props.label, ctx);
|
|
37207
|
+
const ownKey = resolvedComponentId(node.id, ctx);
|
|
37208
|
+
const renderField = (labelDomKey) => {
|
|
37209
|
+
const labelId = labelText2 ? `hm-field-label-${labelDomKey.replace(/\s+/g, "_")}` : void 0;
|
|
37210
|
+
const labelledBy = props.kind !== "toggle" ? labelId : void 0;
|
|
37211
|
+
const inner = (
|
|
37212
|
+
// `__formFieldId` rides down into EVERY control arm, not just the three
|
|
37213
|
+
// that always had it: without it the control never registers in the
|
|
37214
|
+
// enclosing Form's value bag, so its value is simply MISSING from the
|
|
37215
|
+
// submit payload — which is what web did for stepper and toggle while
|
|
37216
|
+
// both natives collected them (see core/schema/form-bag-vectors.json).
|
|
37217
|
+
// `validation: fieldRule` rides down with the id, for the same reason. Each
|
|
37218
|
+
// control registers the rule it is HANDED, and the proto puts `validation`
|
|
37219
|
+
// on TextFieldProps and FormFieldProps only — so a non-text arm read
|
|
37220
|
+
// `props.validation` as permanently undefined and registered no rule at
|
|
37221
|
+
// all. A `required` picker/date/stepper/toggle therefore left
|
|
37222
|
+
// `formIsValid` true and web's submit enabled, while iOS and Android
|
|
37223
|
+
// computed the same merged rule through `FormState.effectiveRule` and
|
|
37224
|
+
// disabled it. The merge itself already happened above; it just never
|
|
37225
|
+
// reached four of the five kinds.
|
|
37226
|
+
props.kind === "stepper" ? { type: "Stepper", props: { ...props.stepper ?? {}, __formFieldId: props.id, validation: fieldRule, __labelledBy: labelledBy } } : props.kind === "toggle" ? { type: "Toggle", props: { label: "", ...props.toggle ?? {}, __formFieldId: props.id, validation: fieldRule } } : props.kind === "picker" ? { type: "Picker", props: { ...props.picker ?? {}, __formFieldId: props.id, validation: fieldRule, __labelledBy: labelledBy } } : props.kind === "date" ? { type: "DatePicker", props: { ...props.date ?? {}, __formFieldId: props.id, validation: fieldRule, __labelledBy: labelledBy } } : {
|
|
37227
|
+
type: "TextField",
|
|
37228
|
+
props: {
|
|
37229
|
+
...props.text ?? {},
|
|
37230
|
+
__formFieldId: props.id,
|
|
37231
|
+
validation: fieldRule,
|
|
37232
|
+
errorText: props.errorMessage ?? props.text?.errorText,
|
|
37233
|
+
__labelledBy: labelledBy
|
|
37234
|
+
}
|
|
37202
37235
|
}
|
|
37203
|
-
|
|
37204
|
-
|
|
37205
|
-
|
|
37206
|
-
|
|
37207
|
-
|
|
37208
|
-
|
|
37209
|
-
|
|
37210
|
-
|
|
37211
|
-
|
|
37212
|
-
|
|
37213
|
-
|
|
37214
|
-
|
|
37215
|
-
|
|
37216
|
-
|
|
37217
|
-
|
|
37218
|
-
|
|
37219
|
-
|
|
37220
|
-
|
|
37221
|
-
|
|
37236
|
+
);
|
|
37237
|
+
const fieldLabel = labelText2;
|
|
37238
|
+
if (isTextKind && typeof props.label === "string" && props.label) {
|
|
37239
|
+
inner.modifiers = { accessibilityLabel: props.label };
|
|
37240
|
+
}
|
|
37241
|
+
if (isTextKind && typeof props.helpText === "string" && props.helpText) {
|
|
37242
|
+
inner.modifiers = { ...inner.modifiers ?? {}, accessibilityHint: props.helpText };
|
|
37243
|
+
}
|
|
37244
|
+
const showOwnError = !isTextKind && props.errorMessage;
|
|
37245
|
+
return /* @__PURE__ */ jsxs5("div", { style: { width: "100%", ...wrap }, children: [
|
|
37246
|
+
(fieldLabel || props.required) && /* @__PURE__ */ jsxs5("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(13), color: C("textPrimary", "#111"), marginBottom: 6 }, children: [
|
|
37247
|
+
fieldLabel ? /* @__PURE__ */ jsx8("span", { id: labelId, children: fieldLabel }) : null,
|
|
37248
|
+
props.required && /* @__PURE__ */ jsx8("span", { "aria-hidden": labelledBy ? "true" : void 0, style: { color: C("danger", "#e62214") }, children: " *" })
|
|
37249
|
+
] }),
|
|
37250
|
+
renderNode(inner, ctx),
|
|
37251
|
+
props.helpText && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(12), color: C("textSecondary", "#888"), marginTop: 4 }, children: txt(props.helpText, ctx) }),
|
|
37252
|
+
showOwnError && /* @__PURE__ */ jsx8("div", { role: "alert", style: { fontSize: pxToRem(12), color: C("danger", "#E62214"), marginTop: 4 }, children: txt(props.errorMessage, ctx) })
|
|
37253
|
+
] });
|
|
37254
|
+
};
|
|
37255
|
+
return ownKey ? renderField(ownKey) : /* @__PURE__ */ jsx8(FormFieldLabelIdScope, { render: renderField, fieldKey: typeof props.id === "string" && props.id ? props.id : void 0 });
|
|
37222
37256
|
}
|
|
37223
37257
|
case "FieldError":
|
|
37224
37258
|
return /* @__PURE__ */ jsx8(FieldErrorNode, { props, ctx, wrap });
|
|
@@ -37332,7 +37366,7 @@ function renderInner(node, ctx) {
|
|
|
37332
37366
|
}
|
|
37333
37367
|
}
|
|
37334
37368
|
}
|
|
37335
|
-
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, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, 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, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, ButtonNode, OtpInputNode, ProgressBarNode, ACTIVITY_DEFAULT_NAME, 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;
|
|
37369
|
+
var useIsomorphicLayoutEffect, ResponsiveGrid, SPLIT_EXPANDED_MIN_WIDTH, SPLIT_COLUMN_GAP, ResponsiveSplitView, ABSOLUTE_URL_RE, appearKeyframesInjected, pressStylesInjected, REVEAL_ON_FOCUS_ATTR, 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, asFinalTextL10n, asBoundText, useBoundString, InterpolatedTextView, txt, selectFragmentCase, fragmentValueHash, fragmentSlotContent, FragmentSlotNode, RichContentEditorNode, MediaFieldNode, WorkerSubtreeNode, RichContentNode, resolveItemDeep2, resolveSwipeActions, resolveModBindings, resolvedComponentId, directServiceBindings, withRootStyle, 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, TAP_ACTIVATOR_ATTR, TAP_GROUP_ATTR, VISUALLY_HIDDEN, NAME_SKIP_SELECTOR, activatorNameObservers, ACTIVATOR_STATE_ATTRS, controlNode, ToggleNode, SliderNode, SelectionControlNode, TabsNode, SegmentedControlNode, DisclosureGroupNode, GridNode, SplitViewNode, TextNode, ImageNode, ANIMATION_LEAF, LottieNode, RiveNode, AvatarNode, IconNode, ButtonNode, OtpInputNode, ProgressBarNode, ACTIVITY_DEFAULT_NAME, 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;
|
|
37336
37370
|
var init_renderNode = __esm({
|
|
37337
37371
|
"../../core/web-renderer/src/renderNode.tsx"() {
|
|
37338
37372
|
"use strict";
|
|
@@ -37427,7 +37461,8 @@ var init_renderNode = __esm({
|
|
|
37427
37461
|
ABSOLUTE_URL_RE = /^([a-zA-Z][a-zA-Z0-9+.-]*:|\/\/)/;
|
|
37428
37462
|
appearKeyframesInjected = false;
|
|
37429
37463
|
pressStylesInjected = false;
|
|
37430
|
-
|
|
37464
|
+
REVEAL_ON_FOCUS_ATTR = "data-hm-reveal-on-focus";
|
|
37465
|
+
FOCUS_RING_CSS = `:where(button,a,[href],input,select,textarea,[role="button"],[tabindex]):focus-visible{outline:2px solid var(--himi-accent,#116DFF);outline-offset:2px;border-radius:4px}[data-himalaya-tap-group]:has(>[data-himalaya-tap-activator]:focus-visible){outline:2px solid var(--himi-accent,#116DFF);outline-offset:2px}[${REVEAL_ON_FOCUS_ATTR}]:focus{width:auto!important;height:auto!important;margin:0!important;padding:2px 6px!important;clip:auto!important;clip-path:none!important;overflow:visible!important;top:2px;inset-inline-end:2px;z-index:2;border-radius:4px;outline:2px solid var(--himi-accent,#116DFF);outline-offset:1px}:has(>[${REVEAL_ON_FOCUS_ATTR}]:focus){overflow:visible!important;z-index:3}`;
|
|
37431
37466
|
focusStylesInjected = false;
|
|
37432
37467
|
HLIST_CHILD_CSS = "[data-himalaya-hlist]>*{flex:0 0 auto}";
|
|
37433
37468
|
hListStylesInjected = false;
|
|
@@ -37892,6 +37927,8 @@ var init_renderNode = __esm({
|
|
|
37892
37927
|
const fieldId = props.__formFieldId;
|
|
37893
37928
|
const previousBinding = React7.useRef(binding2);
|
|
37894
37929
|
const rule = props.validation ?? cfg.validation;
|
|
37930
|
+
const { "aria-labelledby": labelledBy } = formFieldA11y(props);
|
|
37931
|
+
const required3 = rule?.required === true || void 0;
|
|
37895
37932
|
const ruleKey = React7.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
|
|
37896
37933
|
React7.useEffect(() => {
|
|
37897
37934
|
if (!formBag || !fieldId) return;
|
|
@@ -38041,7 +38078,7 @@ var init_renderNode = __esm({
|
|
|
38041
38078
|
/* @__PURE__ */ jsxs5("div", { style: composedBox, children: [
|
|
38042
38079
|
props.leadingIcon && accIcon(props.leadingIcon),
|
|
38043
38080
|
prefixText && /* @__PURE__ */ jsx8("span", { style: { color: muted, flex: "none" }, children: prefixText }),
|
|
38044
|
-
multilineBox ? /* @__PURE__ */ jsx8("textarea", { "data-component-id": componentId, id: fieldDomId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, rows: 2, "aria-label": ariaLabelProp ?? placeholderName, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, style: inputBase }) : /* @__PURE__ */ jsx8("input", { "data-component-id": componentId, id: htmlId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, type: secure ? "password" : "text", value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, "aria-label": ariaLabelProp ?? placeholderName, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, enterKeyHint, style: inputBase }),
|
|
38081
|
+
multilineBox ? /* @__PURE__ */ jsx8("textarea", { "data-component-id": componentId, id: fieldDomId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, rows: 2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, style: inputBase }) : /* @__PURE__ */ jsx8("input", { "data-component-id": componentId, id: htmlId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, type: secure ? "password" : "text", value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, enterKeyHint, style: inputBase }),
|
|
38045
38082
|
suffixText && /* @__PURE__ */ jsx8("span", { style: { color: muted, flex: "none" }, children: suffixText }),
|
|
38046
38083
|
props.clearButton && local && /* @__PURE__ */ jsx8("span", { onClick: () => {
|
|
38047
38084
|
setLocal("");
|
|
@@ -38852,12 +38889,14 @@ var init_renderNode = __esm({
|
|
|
38852
38889
|
ctx.onAction({ ...onChange, params: { ...onChange.params ?? {}, selectedId: id }, args: { ...onChange.args ?? {}, selectedId: id } });
|
|
38853
38890
|
}
|
|
38854
38891
|
};
|
|
38892
|
+
const pickerA11y = formFieldA11y(props);
|
|
38855
38893
|
return /* @__PURE__ */ jsxs5(
|
|
38856
38894
|
"select",
|
|
38857
38895
|
{
|
|
38858
38896
|
value: sel,
|
|
38859
38897
|
onChange: (e) => emit(e.currentTarget.value),
|
|
38860
|
-
"aria-label": String(placeholderText || "Select"),
|
|
38898
|
+
"aria-label": pickerA11y["aria-labelledby"] ? void 0 : String(placeholderText || "Select"),
|
|
38899
|
+
...pickerA11y,
|
|
38861
38900
|
style: { width: "100%", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: "11px 14px", boxSizing: "border-box", fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#111"), ...wrap },
|
|
38862
38901
|
children: [
|
|
38863
38902
|
props.placeholder && /* @__PURE__ */ jsx8("option", { value: "", disabled: true, children: placeholderText }),
|
|
@@ -38953,7 +38992,8 @@ var init_renderNode = __esm({
|
|
|
38953
38992
|
onChange: (e) => emit(e.currentTarget.value),
|
|
38954
38993
|
min: minUnix != null ? toInput(minUnix) : void 0,
|
|
38955
38994
|
max: maxUnix != null ? toInput(maxUnix) : void 0,
|
|
38956
|
-
"aria-label": timeMode ? "Select time" : dateTimeMode ? "Select date and time" : "Select date",
|
|
38995
|
+
"aria-label": formFieldA11y(props)["aria-labelledby"] ? void 0 : timeMode ? "Select time" : dateTimeMode ? "Select date and time" : "Select date",
|
|
38996
|
+
...formFieldA11y(props),
|
|
38957
38997
|
style: { width: "100%", boxSizing: "border-box", background: C("surfacePrimary", "#fff"), border: `1px solid ${C("border", "#e3e3e3")}`, borderRadius: ctx.radius("md", 8), padding: "12px 14px", fontFamily: bodyFont(ctx), fontSize: pxToRem(15), color: C("textPrimary", "#111"), ...wrap }
|
|
38958
38998
|
}
|
|
38959
38999
|
);
|
|
@@ -39098,7 +39138,9 @@ var init_renderNode = __esm({
|
|
|
39098
39138
|
[A11Y_PART]: "node",
|
|
39099
39139
|
role: "spinbutton",
|
|
39100
39140
|
"aria-valuemin": typeof props.min === "number" ? min : void 0,
|
|
39101
|
-
"aria-valuemax": typeof props.max === "number" ? max : void 0
|
|
39141
|
+
"aria-valuemax": typeof props.max === "number" ? max : void 0,
|
|
39142
|
+
// #3160 — inside a FormField the visible label names it, as it does every other field kind.
|
|
39143
|
+
...formFieldA11y(props)
|
|
39102
39144
|
};
|
|
39103
39145
|
const root = { [A11Y_PART]: "root" };
|
|
39104
39146
|
if (ctx.empty) {
|
|
@@ -41112,7 +41154,9 @@ var init_renderNode = __esm({
|
|
|
41112
41154
|
const r = calMoveEvent(p.startMin, p.endMin, snapStep, snapStep);
|
|
41113
41155
|
reportChange(p.ev, key2, r.startMinute, r.endMinute);
|
|
41114
41156
|
},
|
|
41115
|
-
|
|
41157
|
+
...{ [REVEAL_ON_FOCUS_ATTR]: "" },
|
|
41158
|
+
style: revealOnFocusStyle(C),
|
|
41159
|
+
children: /* @__PURE__ */ jsx8("span", { "aria-hidden": "true", children: moveLabel || "Move\u2026" })
|
|
41116
41160
|
}
|
|
41117
41161
|
),
|
|
41118
41162
|
/* @__PURE__ */ jsx8(
|
|
@@ -41126,7 +41170,9 @@ var init_renderNode = __esm({
|
|
|
41126
41170
|
const r = calResizeEvent(p.startMin, p.endMin, snapStep, snapStep);
|
|
41127
41171
|
reportChange(p.ev, key2, r.startMinute, r.endMinute);
|
|
41128
41172
|
},
|
|
41129
|
-
|
|
41173
|
+
...{ [REVEAL_ON_FOCUS_ATTR]: "" },
|
|
41174
|
+
style: revealOnFocusStyle(C),
|
|
41175
|
+
children: /* @__PURE__ */ jsx8("span", { "aria-hidden": "true", children: resizeLabel || "Change time\u2026" })
|
|
41130
41176
|
}
|
|
41131
41177
|
),
|
|
41132
41178
|
/* @__PURE__ */ jsx8(
|
|
@@ -62641,21 +62687,21 @@ var init_preview_assets_generated = __esm({
|
|
|
62641
62687
|
"../../packages/serve/src/preview-assets.generated.ts"() {
|
|
62642
62688
|
init_preview_assets_format();
|
|
62643
62689
|
PREVIEW_ASSET_MANIFEST = [
|
|
62644
|
-
{ key: "assets/index-
|
|
62645
|
-
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset:
|
|
62646
|
-
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset:
|
|
62647
|
-
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset:
|
|
62648
|
-
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
62649
|
-
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset:
|
|
62650
|
-
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset:
|
|
62651
|
-
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
62652
|
-
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset:
|
|
62653
|
-
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
62654
|
-
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset:
|
|
62655
|
-
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset:
|
|
62656
|
-
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
62657
|
-
{ key: "index.html", contentType: "text/html; charset=utf-8", offset:
|
|
62658
|
-
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
62690
|
+
{ key: "assets/index-C7Pn97oj.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1185822, sha256: "4627e2da1c482ae73294a2fc4500dcaa5074cd38e53a28e60af2093c6951a221" },
|
|
62691
|
+
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1185830, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
|
|
62692
|
+
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1190440, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
|
|
62693
|
+
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1679024, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
|
|
62694
|
+
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1769948, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
|
|
62695
|
+
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1860932, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
|
|
62696
|
+
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1951912, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
|
|
62697
|
+
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 2042784, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
|
|
62698
|
+
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2133764, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
|
|
62699
|
+
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2242400, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
|
|
62700
|
+
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2351484, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
|
|
62701
|
+
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2460532, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
|
|
62702
|
+
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2568232, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
|
|
62703
|
+
{ key: "index.html", contentType: "text/html; charset=utf-8", offset: 2656340, length: 4947, sha256: "6ec471f6243aa4ca8b798a33521c421bb87f22ea06ac184690d1d3d9054b6187" },
|
|
62704
|
+
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2661287, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
|
|
62659
62705
|
];
|
|
62660
62706
|
}
|
|
62661
62707
|
});
|
|
@@ -66864,10 +66910,17 @@ var init_push_send = __esm({
|
|
|
66864
66910
|
}
|
|
66865
66911
|
});
|
|
66866
66912
|
|
|
66913
|
+
// ../../core/ts/src/push-routes.ts
|
|
66914
|
+
var init_push_routes = __esm({
|
|
66915
|
+
"../../core/ts/src/push-routes.ts"() {
|
|
66916
|
+
}
|
|
66917
|
+
});
|
|
66918
|
+
|
|
66867
66919
|
// ../../core/serve-control/src/push-send-service.ts
|
|
66868
66920
|
var PUSH_SEND_ERROR_CODES, PushSendError;
|
|
66869
66921
|
var init_push_send_service = __esm({
|
|
66870
66922
|
"../../core/serve-control/src/push-send-service.ts"() {
|
|
66923
|
+
init_push_routes();
|
|
66871
66924
|
PUSH_SEND_ERROR_CODES = [
|
|
66872
66925
|
"unauthorized",
|
|
66873
66926
|
"token_revoked",
|
|
@@ -67250,7 +67303,7 @@ var init_notify_ping = __esm({
|
|
|
67250
67303
|
member_not_found: "Use the login email of an approved member of this site.",
|
|
67251
67304
|
member_ambiguous: "More than one member has this login email; resolve it in the site's Members.",
|
|
67252
67305
|
member_not_active: "The member must be approved before they can be notified.",
|
|
67253
|
-
link_not_routable: "Link to a screen this app's published release ships, e.g. <scheme>://screen/<screenId>?id=\u2026.",
|
|
67306
|
+
link_not_routable: "Link to a screen this app's published release ships, e.g. <scheme>://screen/<screenId>?id=\u2026, or a Wix link one of its push.routes translates.",
|
|
67254
67307
|
forbidden_site: "The Wix account from wix login must own this site.",
|
|
67255
67308
|
site_token_invalid: "Run wix login as the site owner; the site token must belong to the app owner's account.",
|
|
67256
67309
|
ping_permission_denied: "Himi Serve is not permitted to send through Ping; this is a platform issue, not your setup."
|
|
Binary file
|
|
@@ -246,11 +246,22 @@ Before anything is sent, the server checks:
|
|
|
246
246
|
- that push setup is `ready` for this app on this site;
|
|
247
247
|
- that the link opens a screen the app's live release ships, using the app's exact scheme and
|
|
248
248
|
either a linkable `screen/<id>` or a deep-link pattern (a device on a different rollout ring
|
|
249
|
-
may have a different set of screens)
|
|
249
|
+
may have a different set of screens). A **Wix link** (`wix:/…`, `https://www.wix.app/…`,
|
|
250
|
+
`https://manage.wix.app/…`, `https://m-<msid>.branded.wix.app/…`) passes when one of the app's
|
|
251
|
+
`push.routes` translates it to such a screen and it names no other site — the same translation
|
|
252
|
+
a tap runs on the device. A link a route conditioned on a Ping `templateId` or `topic` matches is
|
|
253
|
+
refused, because the device picks that route from payload fields the check cannot see. That is how to test a route with the link Wix itself would send;
|
|
250
254
|
- that exactly one approved member has that login email.
|
|
251
255
|
|
|
252
256
|
`--dry-run` runs every check and sends nothing. The link is forwarded exactly as given, query
|
|
253
|
-
string included
|
|
257
|
+
string included — a Wix link reaches the device as the Wix link, and the app translates it on tap:
|
|
258
|
+
|
|
259
|
+
```sh
|
|
260
|
+
himi notify send --provider ping --target wix --content ./liftgear \
|
|
261
|
+
--member-email member@example.com --title 'Your order shipped' \
|
|
262
|
+
--link 'wix:/my-account/<siteId>/stores/orders/<orderId>' --dry-run
|
|
263
|
+
```
|
|
264
|
+
A private screen is allowed; the app's login gate still applies when tapped.
|
|
254
265
|
|
|
255
266
|
To notify **every approved member** of the site, use `--all-members` in place of
|
|
256
267
|
`--member-email`:
|
|
@@ -300,7 +311,7 @@ link, is a new notification.
|
|
|
300
311
|
| --- | --- |
|
|
301
312
|
| `push_not_ready` | Run `himi notify setup` for this app and site first. |
|
|
302
313
|
| `member_not_found` / `member_ambiguous` / `member_not_active` | Use the login email of one approved site member. |
|
|
303
|
-
| `link_not_routable` | The link's scheme or screen is not in the published release. |
|
|
314
|
+
| `link_not_routable` | The link's scheme or screen is not in the published release, or a Wix link matches none of the app's `push.routes` (or names another site). |
|
|
304
315
|
| `forbidden_site` / `site_token_invalid` | Both Wix logins must belong to the site owner. |
|
|
305
316
|
| `rate_limited` | Wait `retry-after` seconds; test sends are limited per owner. |
|
|
306
317
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1216.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": "b59f6f13e876d3566fc27ba839e7d391bb70c2b677bd77062010d173"
|
|
71
71
|
}
|