@wix/himalaya-cli 0.1213.0 → 0.1215.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.
|
@@ -47,7 +47,20 @@ export interface L10nStringFinding {
|
|
|
47
47
|
* Bindings are skipped (they render worker state, which this cannot see — use
|
|
48
48
|
* `collectBoundServicePaths` + the worker's own state for that half).
|
|
49
49
|
*/
|
|
50
|
-
export declare function collectDescriptorStrings(descriptor: unknown
|
|
50
|
+
export declare function collectDescriptorStrings(descriptor: unknown, options?: {
|
|
51
|
+
/**
|
|
52
|
+
* Values the app has DECLARED as copy (its `strings/<locale>.json` table), for which
|
|
53
|
+
* the "has a letter" rule of `isUserVisibleCopy` is waived — and only that rule: the
|
|
54
|
+
* binding/id/url/hex/length filters still apply. Exists for letterless copy — a phone
|
|
55
|
+
* or number format such as "+1 555 0100" has no letter, so the heuristic calls it
|
|
56
|
+
* noise, and the extractor dropped `reserve.phonePlaceholder` (#3320). Only exact
|
|
57
|
+
* table values qualify, so an arbitrary "4.8" in sample data stays out.
|
|
58
|
+
*
|
|
59
|
+
* Passed by the extractor only. The `l10n` validate pass does not pass it yet, so it
|
|
60
|
+
* still treats letterless copy as non-copy (as it always has).
|
|
61
|
+
*/
|
|
62
|
+
copyValues?: ReadonlySet<string>;
|
|
63
|
+
}): L10nStringFinding[];
|
|
51
64
|
/**
|
|
52
65
|
* The `$service:` bindings sitting in a user-visible prop — i.e. the state paths whose
|
|
53
66
|
* value is PAINTED as copy.
|
package/dist/cli.mjs
CHANGED
|
@@ -7988,14 +7988,19 @@ var init_token_suggest = __esm({
|
|
|
7988
7988
|
|
|
7989
7989
|
// ../../core/dev-server/src/l10n-strings.ts
|
|
7990
7990
|
function isUserVisibleCopy(s) {
|
|
7991
|
+
return isCopyShaped(s) && /[A-Za-z--ۿ]/.test(s);
|
|
7992
|
+
}
|
|
7993
|
+
function isCopyShaped(s) {
|
|
7991
7994
|
if (typeof s !== "string" || s.length === 0 || s.length > 200) return false;
|
|
7992
7995
|
if (s.startsWith("$") || s.startsWith("_")) return false;
|
|
7993
7996
|
if (/^https?:\/\//.test(s)) return false;
|
|
7994
7997
|
if (/^#[0-9A-Fa-f]+$/.test(s)) return false;
|
|
7995
7998
|
if (!s.includes(" ") && /^[a-z0-9_\-./]+$/.test(s)) return false;
|
|
7996
|
-
return
|
|
7999
|
+
return true;
|
|
7997
8000
|
}
|
|
7998
|
-
function collectDescriptorStrings(descriptor) {
|
|
8001
|
+
function collectDescriptorStrings(descriptor, options = {}) {
|
|
8002
|
+
const { copyValues } = options;
|
|
8003
|
+
const isCopy2 = (v) => isUserVisibleCopy(v) || copyValues !== void 0 && copyValues.has(v) && isCopyShaped(v);
|
|
7999
8004
|
const out2 = [];
|
|
8000
8005
|
const seen = /* @__PURE__ */ new Set();
|
|
8001
8006
|
const push = (f) => {
|
|
@@ -8018,7 +8023,7 @@ function collectDescriptorStrings(descriptor) {
|
|
|
8018
8023
|
const mapped = STRING_FIELDS_BY_TYPE[type] ?? [];
|
|
8019
8024
|
for (const [prop, v] of Object.entries(props)) {
|
|
8020
8025
|
if (typeof v !== "string" || BINDING_SIGIL.test(v)) continue;
|
|
8021
|
-
if (!
|
|
8026
|
+
if (!isCopy2(v)) continue;
|
|
8022
8027
|
const at2 = `${path2}.body.props.${prop}`;
|
|
8023
8028
|
if (mapped.includes(prop) || SECONDARY_FIELDS.has(prop)) {
|
|
8024
8029
|
push({ value: v, bucket: "reachable", type, prop, path: at2 });
|
|
@@ -8027,7 +8032,7 @@ function collectDescriptorStrings(descriptor) {
|
|
|
8027
8032
|
}
|
|
8028
8033
|
}
|
|
8029
8034
|
const templ = props.template;
|
|
8030
|
-
if (templ && typeof templ.template === "string" &&
|
|
8035
|
+
if (templ && typeof templ.template === "string" && isCopy2(templ.template)) {
|
|
8031
8036
|
push({
|
|
8032
8037
|
value: templ.template,
|
|
8033
8038
|
bucket: "reachable",
|
|
@@ -8039,7 +8044,7 @@ function collectDescriptorStrings(descriptor) {
|
|
|
8039
8044
|
}
|
|
8040
8045
|
for (const [k, v] of Object.entries(obj3)) {
|
|
8041
8046
|
if (k === "body") continue;
|
|
8042
|
-
if (typeof v === "string" && SECONDARY_FIELDS.has(k) && !BINDING_SIGIL.test(v) &&
|
|
8047
|
+
if (typeof v === "string" && SECONDARY_FIELDS.has(k) && !BINDING_SIGIL.test(v) && isCopy2(v)) {
|
|
8043
8048
|
push({ value: v, bucket: "reachable", type, prop: k, path: `${path2}.${k}` });
|
|
8044
8049
|
}
|
|
8045
8050
|
}
|
|
@@ -34784,6 +34789,29 @@ function idiomPress(ctx, part) {
|
|
|
34784
34789
|
ensurePressStyles();
|
|
34785
34790
|
return `${ctx.idiom}-${kind}`;
|
|
34786
34791
|
}
|
|
34792
|
+
function revealOnFocusStyle(C) {
|
|
34793
|
+
return {
|
|
34794
|
+
...VISUALLY_HIDDEN,
|
|
34795
|
+
background: C("surfacePrimary", "#fff"),
|
|
34796
|
+
color: C("textPrimary", "#13171e"),
|
|
34797
|
+
font: "inherit",
|
|
34798
|
+
fontSize: pxToRem(11),
|
|
34799
|
+
fontWeight: 600,
|
|
34800
|
+
cursor: "pointer"
|
|
34801
|
+
};
|
|
34802
|
+
}
|
|
34803
|
+
function FormFieldLabelIdScope({ render, fieldKey, ...extras }) {
|
|
34804
|
+
const id = React7.useId().replace(/[^A-Za-z0-9_-]/g, "");
|
|
34805
|
+
const el = render(`${fieldKey ? `${fieldKey}-` : ""}auto-${id}`);
|
|
34806
|
+
return Object.keys(extras).length ? React7.cloneElement(el, extras) : el;
|
|
34807
|
+
}
|
|
34808
|
+
function formFieldA11y(props) {
|
|
34809
|
+
const labelledBy = props.__labelledBy;
|
|
34810
|
+
return {
|
|
34811
|
+
"aria-labelledby": typeof labelledBy === "string" && labelledBy ? labelledBy : void 0,
|
|
34812
|
+
"aria-required": props.validation?.required === true || void 0
|
|
34813
|
+
};
|
|
34814
|
+
}
|
|
34787
34815
|
function ensureFocusStyles() {
|
|
34788
34816
|
if (focusStylesInjected || typeof document === "undefined") return;
|
|
34789
34817
|
focusStylesInjected = true;
|
|
@@ -37174,48 +37202,56 @@ function renderInner(node, ctx) {
|
|
|
37174
37202
|
inner: props.text?.validation
|
|
37175
37203
|
});
|
|
37176
37204
|
const isTextKind = !["stepper", "toggle", "picker", "date"].includes(props.kind);
|
|
37177
|
-
const
|
|
37178
|
-
|
|
37179
|
-
|
|
37180
|
-
|
|
37181
|
-
|
|
37182
|
-
|
|
37183
|
-
|
|
37184
|
-
|
|
37185
|
-
|
|
37186
|
-
|
|
37187
|
-
|
|
37188
|
-
|
|
37189
|
-
|
|
37190
|
-
|
|
37191
|
-
|
|
37192
|
-
|
|
37193
|
-
|
|
37194
|
-
|
|
37195
|
-
|
|
37196
|
-
|
|
37197
|
-
|
|
37198
|
-
|
|
37205
|
+
const labelText2 = asBoundText(props.label, ctx);
|
|
37206
|
+
const ownKey = resolvedComponentId(node.id, ctx);
|
|
37207
|
+
const renderField = (labelDomKey) => {
|
|
37208
|
+
const labelId = labelText2 ? `hm-field-label-${labelDomKey.replace(/\s+/g, "_")}` : void 0;
|
|
37209
|
+
const labelledBy = props.kind !== "toggle" ? labelId : void 0;
|
|
37210
|
+
const inner = (
|
|
37211
|
+
// `__formFieldId` rides down into EVERY control arm, not just the three
|
|
37212
|
+
// that always had it: without it the control never registers in the
|
|
37213
|
+
// enclosing Form's value bag, so its value is simply MISSING from the
|
|
37214
|
+
// submit payload — which is what web did for stepper and toggle while
|
|
37215
|
+
// both natives collected them (see core/schema/form-bag-vectors.json).
|
|
37216
|
+
// `validation: fieldRule` rides down with the id, for the same reason. Each
|
|
37217
|
+
// control registers the rule it is HANDED, and the proto puts `validation`
|
|
37218
|
+
// on TextFieldProps and FormFieldProps only — so a non-text arm read
|
|
37219
|
+
// `props.validation` as permanently undefined and registered no rule at
|
|
37220
|
+
// all. A `required` picker/date/stepper/toggle therefore left
|
|
37221
|
+
// `formIsValid` true and web's submit enabled, while iOS and Android
|
|
37222
|
+
// computed the same merged rule through `FormState.effectiveRule` and
|
|
37223
|
+
// disabled it. The merge itself already happened above; it just never
|
|
37224
|
+
// reached four of the five kinds.
|
|
37225
|
+
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 } } : {
|
|
37226
|
+
type: "TextField",
|
|
37227
|
+
props: {
|
|
37228
|
+
...props.text ?? {},
|
|
37229
|
+
__formFieldId: props.id,
|
|
37230
|
+
validation: fieldRule,
|
|
37231
|
+
errorText: props.errorMessage ?? props.text?.errorText,
|
|
37232
|
+
__labelledBy: labelledBy
|
|
37233
|
+
}
|
|
37199
37234
|
}
|
|
37200
|
-
|
|
37201
|
-
|
|
37202
|
-
|
|
37203
|
-
|
|
37204
|
-
|
|
37205
|
-
|
|
37206
|
-
|
|
37207
|
-
|
|
37208
|
-
|
|
37209
|
-
|
|
37210
|
-
|
|
37211
|
-
|
|
37212
|
-
|
|
37213
|
-
|
|
37214
|
-
|
|
37215
|
-
|
|
37216
|
-
|
|
37217
|
-
|
|
37218
|
-
|
|
37235
|
+
);
|
|
37236
|
+
const fieldLabel = labelText2;
|
|
37237
|
+
if (isTextKind && typeof props.label === "string" && props.label) {
|
|
37238
|
+
inner.modifiers = { accessibilityLabel: props.label };
|
|
37239
|
+
}
|
|
37240
|
+
if (isTextKind && typeof props.helpText === "string" && props.helpText) {
|
|
37241
|
+
inner.modifiers = { ...inner.modifiers ?? {}, accessibilityHint: props.helpText };
|
|
37242
|
+
}
|
|
37243
|
+
const showOwnError = !isTextKind && props.errorMessage;
|
|
37244
|
+
return /* @__PURE__ */ jsxs5("div", { style: { width: "100%", ...wrap }, children: [
|
|
37245
|
+
(fieldLabel || props.required) && /* @__PURE__ */ jsxs5("div", { style: { fontFamily: bodyFont(ctx), fontWeight: 600, fontSize: pxToRem(13), color: C("textPrimary", "#111"), marginBottom: 6 }, children: [
|
|
37246
|
+
fieldLabel ? /* @__PURE__ */ jsx8("span", { id: labelId, children: fieldLabel }) : null,
|
|
37247
|
+
props.required && /* @__PURE__ */ jsx8("span", { "aria-hidden": labelledBy ? "true" : void 0, style: { color: C("danger", "#e62214") }, children: " *" })
|
|
37248
|
+
] }),
|
|
37249
|
+
renderNode(inner, ctx),
|
|
37250
|
+
props.helpText && /* @__PURE__ */ jsx8("div", { style: { fontSize: pxToRem(12), color: C("textSecondary", "#888"), marginTop: 4 }, children: txt(props.helpText, ctx) }),
|
|
37251
|
+
showOwnError && /* @__PURE__ */ jsx8("div", { role: "alert", style: { fontSize: pxToRem(12), color: C("danger", "#E62214"), marginTop: 4 }, children: txt(props.errorMessage, ctx) })
|
|
37252
|
+
] });
|
|
37253
|
+
};
|
|
37254
|
+
return ownKey ? renderField(ownKey) : /* @__PURE__ */ jsx8(FormFieldLabelIdScope, { render: renderField, fieldKey: typeof props.id === "string" && props.id ? props.id : void 0 });
|
|
37219
37255
|
}
|
|
37220
37256
|
case "FieldError":
|
|
37221
37257
|
return /* @__PURE__ */ jsx8(FieldErrorNode, { props, ctx, wrap });
|
|
@@ -37329,7 +37365,7 @@ function renderInner(node, ctx) {
|
|
|
37329
37365
|
}
|
|
37330
37366
|
}
|
|
37331
37367
|
}
|
|
37332
|
-
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;
|
|
37368
|
+
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;
|
|
37333
37369
|
var init_renderNode = __esm({
|
|
37334
37370
|
"../../core/web-renderer/src/renderNode.tsx"() {
|
|
37335
37371
|
"use strict";
|
|
@@ -37424,7 +37460,8 @@ var init_renderNode = __esm({
|
|
|
37424
37460
|
ABSOLUTE_URL_RE = /^([a-zA-Z][a-zA-Z0-9+.-]*:|\/\/)/;
|
|
37425
37461
|
appearKeyframesInjected = false;
|
|
37426
37462
|
pressStylesInjected = false;
|
|
37427
|
-
|
|
37463
|
+
REVEAL_ON_FOCUS_ATTR = "data-hm-reveal-on-focus";
|
|
37464
|
+
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}`;
|
|
37428
37465
|
focusStylesInjected = false;
|
|
37429
37466
|
HLIST_CHILD_CSS = "[data-himalaya-hlist]>*{flex:0 0 auto}";
|
|
37430
37467
|
hListStylesInjected = false;
|
|
@@ -37889,6 +37926,8 @@ var init_renderNode = __esm({
|
|
|
37889
37926
|
const fieldId = props.__formFieldId;
|
|
37890
37927
|
const previousBinding = React7.useRef(binding2);
|
|
37891
37928
|
const rule = props.validation ?? cfg.validation;
|
|
37929
|
+
const { "aria-labelledby": labelledBy } = formFieldA11y(props);
|
|
37930
|
+
const required3 = rule?.required === true || void 0;
|
|
37892
37931
|
const ruleKey = React7.useMemo(() => rule ? JSON.stringify(rule) : "", [rule]);
|
|
37893
37932
|
React7.useEffect(() => {
|
|
37894
37933
|
if (!formBag || !fieldId) return;
|
|
@@ -38038,7 +38077,7 @@ var init_renderNode = __esm({
|
|
|
38038
38077
|
/* @__PURE__ */ jsxs5("div", { style: composedBox, children: [
|
|
38039
38078
|
props.leadingIcon && accIcon(props.leadingIcon),
|
|
38040
38079
|
prefixText && /* @__PURE__ */ jsx8("span", { style: { color: muted, flex: "none" }, children: prefixText }),
|
|
38041
|
-
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 }),
|
|
38080
|
+
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 }),
|
|
38042
38081
|
suffixText && /* @__PURE__ */ jsx8("span", { style: { color: muted, flex: "none" }, children: suffixText }),
|
|
38043
38082
|
props.clearButton && local && /* @__PURE__ */ jsx8("span", { onClick: () => {
|
|
38044
38083
|
setLocal("");
|
|
@@ -38849,12 +38888,14 @@ var init_renderNode = __esm({
|
|
|
38849
38888
|
ctx.onAction({ ...onChange, params: { ...onChange.params ?? {}, selectedId: id }, args: { ...onChange.args ?? {}, selectedId: id } });
|
|
38850
38889
|
}
|
|
38851
38890
|
};
|
|
38891
|
+
const pickerA11y = formFieldA11y(props);
|
|
38852
38892
|
return /* @__PURE__ */ jsxs5(
|
|
38853
38893
|
"select",
|
|
38854
38894
|
{
|
|
38855
38895
|
value: sel,
|
|
38856
38896
|
onChange: (e) => emit(e.currentTarget.value),
|
|
38857
|
-
"aria-label": String(placeholderText || "Select"),
|
|
38897
|
+
"aria-label": pickerA11y["aria-labelledby"] ? void 0 : String(placeholderText || "Select"),
|
|
38898
|
+
...pickerA11y,
|
|
38858
38899
|
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 },
|
|
38859
38900
|
children: [
|
|
38860
38901
|
props.placeholder && /* @__PURE__ */ jsx8("option", { value: "", disabled: true, children: placeholderText }),
|
|
@@ -38950,7 +38991,8 @@ var init_renderNode = __esm({
|
|
|
38950
38991
|
onChange: (e) => emit(e.currentTarget.value),
|
|
38951
38992
|
min: minUnix != null ? toInput(minUnix) : void 0,
|
|
38952
38993
|
max: maxUnix != null ? toInput(maxUnix) : void 0,
|
|
38953
|
-
"aria-label": timeMode ? "Select time" : dateTimeMode ? "Select date and time" : "Select date",
|
|
38994
|
+
"aria-label": formFieldA11y(props)["aria-labelledby"] ? void 0 : timeMode ? "Select time" : dateTimeMode ? "Select date and time" : "Select date",
|
|
38995
|
+
...formFieldA11y(props),
|
|
38954
38996
|
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 }
|
|
38955
38997
|
}
|
|
38956
38998
|
);
|
|
@@ -39095,7 +39137,9 @@ var init_renderNode = __esm({
|
|
|
39095
39137
|
[A11Y_PART]: "node",
|
|
39096
39138
|
role: "spinbutton",
|
|
39097
39139
|
"aria-valuemin": typeof props.min === "number" ? min : void 0,
|
|
39098
|
-
"aria-valuemax": typeof props.max === "number" ? max : void 0
|
|
39140
|
+
"aria-valuemax": typeof props.max === "number" ? max : void 0,
|
|
39141
|
+
// #3160 — inside a FormField the visible label names it, as it does every other field kind.
|
|
39142
|
+
...formFieldA11y(props)
|
|
39099
39143
|
};
|
|
39100
39144
|
const root = { [A11Y_PART]: "root" };
|
|
39101
39145
|
if (ctx.empty) {
|
|
@@ -41109,7 +41153,9 @@ var init_renderNode = __esm({
|
|
|
41109
41153
|
const r = calMoveEvent(p.startMin, p.endMin, snapStep, snapStep);
|
|
41110
41154
|
reportChange(p.ev, key2, r.startMinute, r.endMinute);
|
|
41111
41155
|
},
|
|
41112
|
-
|
|
41156
|
+
...{ [REVEAL_ON_FOCUS_ATTR]: "" },
|
|
41157
|
+
style: revealOnFocusStyle(C),
|
|
41158
|
+
children: /* @__PURE__ */ jsx8("span", { "aria-hidden": "true", children: moveLabel || "Move\u2026" })
|
|
41113
41159
|
}
|
|
41114
41160
|
),
|
|
41115
41161
|
/* @__PURE__ */ jsx8(
|
|
@@ -41123,7 +41169,9 @@ var init_renderNode = __esm({
|
|
|
41123
41169
|
const r = calResizeEvent(p.startMin, p.endMin, snapStep, snapStep);
|
|
41124
41170
|
reportChange(p.ev, key2, r.startMinute, r.endMinute);
|
|
41125
41171
|
},
|
|
41126
|
-
|
|
41172
|
+
...{ [REVEAL_ON_FOCUS_ATTR]: "" },
|
|
41173
|
+
style: revealOnFocusStyle(C),
|
|
41174
|
+
children: /* @__PURE__ */ jsx8("span", { "aria-hidden": "true", children: resizeLabel || "Change time\u2026" })
|
|
41127
41175
|
}
|
|
41128
41176
|
),
|
|
41129
41177
|
/* @__PURE__ */ jsx8(
|
|
@@ -62638,21 +62686,21 @@ var init_preview_assets_generated = __esm({
|
|
|
62638
62686
|
"../../packages/serve/src/preview-assets.generated.ts"() {
|
|
62639
62687
|
init_preview_assets_format();
|
|
62640
62688
|
PREVIEW_ASSET_MANIFEST = [
|
|
62641
|
-
{ key: "assets/index-
|
|
62642
|
-
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset:
|
|
62643
|
-
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset:
|
|
62644
|
-
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset:
|
|
62645
|
-
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
62646
|
-
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset:
|
|
62647
|
-
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset:
|
|
62648
|
-
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
62649
|
-
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset:
|
|
62650
|
-
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
62651
|
-
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset:
|
|
62652
|
-
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset:
|
|
62653
|
-
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
62654
|
-
{ key: "index.html", contentType: "text/html; charset=utf-8", offset:
|
|
62655
|
-
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
62689
|
+
{ key: "assets/index-C7Pn97oj.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 1185822, sha256: "4627e2da1c482ae73294a2fc4500dcaa5074cd38e53a28e60af2093c6951a221" },
|
|
62690
|
+
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 1185830, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
|
|
62691
|
+
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 1190440, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
|
|
62692
|
+
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 1679024, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
|
|
62693
|
+
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 1769948, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
|
|
62694
|
+
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 1860932, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
|
|
62695
|
+
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 1951912, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
|
|
62696
|
+
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 2042784, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
|
|
62697
|
+
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 2133764, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
|
|
62698
|
+
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 2242400, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
|
|
62699
|
+
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 2351484, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
|
|
62700
|
+
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 2460532, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
|
|
62701
|
+
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 2568232, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
|
|
62702
|
+
{ key: "index.html", contentType: "text/html; charset=utf-8", offset: 2656340, length: 4947, sha256: "6ec471f6243aa4ca8b798a33521c421bb87f22ea06ac184690d1d3d9054b6187" },
|
|
62703
|
+
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 2661287, length: 17344, sha256: "d057298d75e7373e5e2c4d11b7d1bcbea88e03af555ba63d97641c78509c58e4" }
|
|
62656
62704
|
];
|
|
62657
62705
|
}
|
|
62658
62706
|
});
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1215.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": "ba6e51d93c561edb1aa2de10154bdd5848f7cb971441ea81f6876de7"
|
|
71
71
|
}
|