@wix/himalaya-cli 0.1456.0 → 0.1458.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.
Binary file
@@ -6,7 +6,10 @@
6
6
  "notImplementedComponents": [
7
7
  "Text",
8
8
  "Icon",
9
+ "Carousel",
10
+ "Pager",
9
11
  "Snackbar",
12
+ "WebView",
10
13
  "Slider",
11
14
  "SelectionControl",
12
15
  "ActivityIndicator",
@@ -509,14 +512,38 @@
509
512
  "bindings": [
510
513
  "itemsPath"
511
514
  ],
512
- "propsSource": "export interface CarouselProps {\n items: Component[];\n currentIndex?: number;\n onChange?: Action;\n autoplayIntervalMs?: number;\n /** `$service:` binding → a live array to render as slides (overrides `items`). */\n itemsPath?: string;\n}"
515
+ "notImplemented": {
516
+ "props": [
517
+ "liveWindow"
518
+ ],
519
+ "platforms": [
520
+ "ios",
521
+ "android",
522
+ "web"
523
+ ],
524
+ "severity": "styling",
525
+ "note": "Declared ahead of its runtime: every page stays mounted until Pager/Carousel live_window lands on each renderer (W8, #4630)."
526
+ },
527
+ "propsSource": "export interface CarouselProps {\n items: Component[];\n currentIndex?: number;\n onChange?: Action;\n autoplayIntervalMs?: number;\n /** `$service:` binding → a live array to render as slides (overrides `items`). */\n itemsPath?: string;\n /** 0 (default) = all slides mounted; N ⇒ mount current ± N, unmount the rest. */\n liveWindow?: number;\n}"
513
528
  },
514
529
  {
515
530
  "name": "Pager",
516
531
  "category": "Navigation primitives",
517
532
  "propsType": "PagerProps",
518
533
  "bindings": [],
519
- "propsSource": "export interface PagerProps {\n pages: Component[];\n currentIndex?: number;\n onChange?: Action;\n showIndicator?: boolean;\n}"
534
+ "notImplemented": {
535
+ "props": [
536
+ "liveWindow"
537
+ ],
538
+ "platforms": [
539
+ "ios",
540
+ "android",
541
+ "web"
542
+ ],
543
+ "severity": "styling",
544
+ "note": "Declared ahead of its runtime: every page stays mounted until Pager/Carousel live_window lands on each renderer (W8, #4630)."
545
+ },
546
+ "propsSource": "export interface PagerProps {\n pages: Component[];\n currentIndex?: number;\n onChange?: Action;\n showIndicator?: boolean;\n /** As {@link CarouselProps.liveWindow}. */\n liveWindow?: number;\n}"
520
547
  },
521
548
  {
522
549
  "name": "StepIndicator",
@@ -589,7 +616,25 @@
589
616
  "category": "Embeddable WebView (web-in-SDUI)",
590
617
  "propsType": "WebViewProps",
591
618
  "bindings": [],
592
- "propsSource": "export interface WebViewProps {\n url?: string;\n /** Inline HTML to load instead of `url` (mutually exclusive). */\n inlineHtml?: string;\n /** Fixed height in points/dp; set this OR `aspectRatio`. */\n height?: number;\n /** width:height ratio; used when `height` is unset. */\n aspectRatio?: number;\n /** Keep the WebView's own scrolling (default false). */\n scrollEnabled?: boolean;\n config?: WebViewConfig;\n capabilitiesRequired?: string[];\n}"
619
+ "notImplemented": {
620
+ "props": [
621
+ "bridge",
622
+ "instanceId",
623
+ "activePath",
624
+ "mutedPath",
625
+ "reloadKeyPath",
626
+ "heightPath",
627
+ "fill"
628
+ ],
629
+ "platforms": [
630
+ "ios",
631
+ "android",
632
+ "web"
633
+ ],
634
+ "severity": "styling",
635
+ "note": "The embedded worker-bridged WebView contract is declared ahead of its runtime: no channel, instance identity, fill layout, bound height or active/muted/reload binding until the hosts implement it (iOS/macOS #4624/#4625, Android #4626/#4627, web #4628/#4629)."
636
+ },
637
+ "propsSource": "export interface WebViewProps {\n url?: string;\n /** Inline HTML to load instead of `url` (mutually exclusive). */\n inlineHtml?: string;\n /** Fixed height in points/dp; set this OR `aspectRatio`. */\n height?: number;\n /** width:height ratio; used when `height` is unset. */\n aspectRatio?: number;\n /** Keep the WebView's own scrolling (default false). */\n scrollEnabled?: boolean;\n config?: WebViewConfig;\n capabilitiesRequired?: string[];\n // Embedded worker-bridged WebViews\n /** `\"\"` (default, no channel) | `\"worker\"` — channel to the owning screen's worker. */\n bridge?: \"\" | \"worker\";\n /** Channel + storage identity; default `<screenId>?<args>/<Component.id>` (§4.1, `effectiveWebViewInstanceId`). */\n instanceId?: string;\n /** `$service:` bool — false ⇒ inactive (§5.4); unset ⇒ active. */\n activePath?: string;\n /** `$service:` bool — true ⇒ all page media muted. */\n mutedPath?: string;\n /** `$service:` scalar — any change remounts the document. */\n reloadKeyPath?: string;\n /** Take the parent's proposed size (works with weight); beats `height` / `aspectRatio`. */\n fill?: boolean;\n /** `$service:` number — live height in points/dp; beats `height`. */\n heightPath?: string;\n}"
593
638
  },
594
639
  {
595
640
  "name": "ListItem",
@@ -1360,13 +1405,14 @@
1360
1405
  "notImplemented": {
1361
1406
  "props": [
1362
1407
  "anchorDatePath",
1363
- "onRangeChange"
1408
+ "onRangeChange",
1409
+ "onCreate"
1364
1410
  ],
1365
1411
  "platforms": [
1366
1412
  "android"
1367
1413
  ],
1368
1414
  "severity": "category",
1369
- "note": "`anchorDatePath` does not bind and `onRangeChange` never fires."
1415
+ "note": "`anchorDatePath` does not bind, and `onRangeChange` and `onCreate` never fire."
1370
1416
  },
1371
1417
  "propsSource": "export interface TimeGridProps {\n mode?: \"day\" | \"3day\" | \"week\";\n anchorDate?: string;\n anchorDatePath?: string;\n events?: CalendarEvent[];\n eventsPath?: string;\n startHour?: number;\n endHour?: number;\n firstWeekday?: number;\n showNowLine?: boolean;\n onSelectEvent?: Action;\n onRangeChange?: Action;\n /** Per-event body, `$item.*`-substituted per event. Absent ⇒ the built-in block. */\n eventTemplate?: Component;\n /** RESOURCE lanes: staff, rooms, chairs, courts. Overlap packing already splits\n * concurrent events into ANONYMOUS sub-columns; lanes make a column MEAN\n * something. Single-day modes only — a week of resource columns is a 2-D grid\n * that does not fit a phone, so `mode: \"week\"` ignores them. */\n resources?: TimeGridResource[];\n resourcesPath?: string;\n /** EDITING. Opt-in, default off, so no existing read-only\n * grid can regress into one that moves bookings when a user meant to scroll. */\n editable?: boolean;\n /** Snap grid in minutes (default 15). A drag landing on 10:07 is almost never\n * what anyone meant, and no scheduling system accepts it. */\n snapMinutes?: number;\n /** Moved or resized → args{id, start, end}. The component REPORTS; the worker\n * decides. An edit that must be rejected has to be able to fail. */\n onEventChange?: Action;\n /** Empty space long-pressed → args{start, end} for one `snapMinutes` slot. */\n onCreate?: Action;\n /** Labels for the non-drag equivalents. Drag is unreachable by VoiceOver,\n * TalkBack and keyboard, so these are how editing stays operable at all. */\n moveActionLabel?: string;\n resizeActionLabel?: string;\n}"
1372
1418
  },
@@ -118,16 +118,19 @@ See also **[Modifiers](#modifiers)** (the `modifiers` block) and **[Actions](#ac
118
118
 
119
119
  These props are accepted by the schema and pass validation, but the named platform's renderer never reads them — they silently do nothing (no warning, no log). Prefer a prop NOT listed here, or drive the behaviour from a worker.
120
120
 
121
- **Scope: 16 of 86 components, all of them android / web / ios-only** — every other component/platform pair reads every prop it decodes. The list splits in two, and the halves mean different things:
121
+ **Scope: 19 of 86 components, all of them android / web / ios-only** — every other component/platform pair reads every prop it decodes. The list splits in two, and the halves mean different things:
122
122
 
123
123
  - **`category` (7: `Menu`, `Tooltip`, `Popover`, `ChipsInput`, `OtpInput`, `MediaPlayer`, `TimeGrid`)** — the prop changes the component's *kind*. These genuinely are **not implemented**: an overlay renders always-visible inline, so the component does not do the job its name implies. Check the row's note for a working alternative.
124
- - **`styling` (9: `Text`, `Icon`, `Snackbar`, `Slider`, `SelectionControl`, `ActivityIndicator`, `Video`, `PdfView`, `Agenda`)** — the component itself **works**; only the listed prop is inert. `Slider` on iOS is a working slider whose `debounceMs` does not throttle — not a broken `Slider`. Use the component; just do not depend on that one prop.
124
+ - **`styling` (12: `Text`, `Icon`, `Carousel`, `Pager`, `Snackbar`, `WebView`, `Slider`, `SelectionControl`, `ActivityIndicator`, `Video`, `PdfView`, `Agenda`)** — the component itself **works**; only the listed prop is inert. `Slider` on iOS is a working slider whose `debounceMs` does not throttle — not a broken `Slider`. Use the component; just do not depend on that one prop.
125
125
 
126
126
  | Component | Unread props | Platform | Kind | Note |
127
127
  |---|---|---|---|---|
128
128
  | `Text` | `minimumScaleFactor`, `truncation` | android, web | styling | Compose 1.7.5 and web retain tail truncation and their existing text size. Monospaced digits work; Apple supports shrinking and head/middle truncation. React Native maps its native text API, with Android multiline ellipsis limited to tail. |
129
129
  | `Icon` | `renderingMode`, `weight`, `variableValue` | android, web | styling | Fixed catalog vectors have no SF layers, font-weight axis or variable fills. Bounce and pulse animate the whole glyph; variableColor remains static. React Native uses the same catalog fallback. |
130
+ | `Carousel` | `liveWindow` | ios, android, web | styling | Declared ahead of its runtime: every page stays mounted until Pager/Carousel live_window lands on each renderer (W8, #4630). |
131
+ | `Pager` | `liveWindow` | ios, android, web | styling | Declared ahead of its runtime: every page stays mounted until Pager/Carousel live_window lands on each renderer (W8, #4630). |
130
132
  | `Snackbar` | `durationMs` | ios, android, web | styling | The Snackbar component renders inline, so `durationMs` does nothing (the `snackbar` presentation verb is the working toast). |
133
+ | `WebView` | `bridge`, `instanceId`, `activePath`, `mutedPath`, `reloadKeyPath`, `heightPath`, `fill` | ios, android, web | styling | The embedded worker-bridged WebView contract is declared ahead of its runtime: no channel, instance identity, fill layout, bound height or active/muted/reload binding until the hosts implement it (iOS/macOS #4624/#4625, Android #4626/#4627, web #4628/#4629). |
131
134
  | `Slider` | `debounceMs` | ios, web | styling | `debounceMs` does not throttle onChange. |
132
135
  | `SelectionControl` | `groupId` | android, web | styling | Radios sharing a `groupId` are not mutually exclusive. |
133
136
  | `ActivityIndicator` | `ring` | ios, android, web | styling | The `ring` style is never selected (determinate vs indeterminate follows `value`). |
@@ -143,7 +146,7 @@ These props are accepted by the schema and pass validation, but the named platfo
143
146
  | `MediaPlayer` | `autoplayVisibilityThreshold`, `preload`, `playbackRates`, `showQueue`, `showChapters`, `showTranscript` | ios | category | `autoplayVisibilityThreshold` is ignored (whenVisible = once on appear). `preload` is ignored. `playbackRates` is ignored, and the queue/chapters/transcript panels never render. |
144
147
  | `MediaPlayer` | `externalPlayback`, `appearance`, `allowCellular`, `preload`, `playbackRates`, `showQueue`, `showChapters`, `showTranscript` | android | category | `externalPlayback` is forced off. `appearance` is ignored. `allowCellular` is ignored. `preload` is ignored. `playbackRates` is ignored, and the queue/chapters/transcript panels never render. |
145
148
  | `MediaPlayer` | `allowCellular`, `forwardSkipSeconds`, `backwardSkipSeconds`, `playbackRates`, `showQueue`, `showChapters`, `showTranscript` | web | category | `allowCellular` is ignored. Skip buttons ignore `forwardSkipSeconds`/`backwardSkipSeconds`. `playbackRates` is ignored, and the queue/chapters/transcript panels never render. |
146
- | `TimeGrid` | `anchorDatePath`, `onRangeChange` | android | category | `anchorDatePath` does not bind and `onRangeChange` never fires. |
149
+ | `TimeGrid` | `anchorDatePath`, `onRangeChange`, `onCreate` | android | category | `anchorDatePath` does not bind, and `onRangeChange` and `onCreate` never fire. |
147
150
  | `Agenda` | `stickyHeaders` | android | styling | Day headers do not pin. |
148
151
 
149
152
  ## Token slots: `TokenRef` object vs bare `TokenName` string
@@ -1034,9 +1037,13 @@ export interface CarouselProps {
1034
1037
  autoplayIntervalMs?: number;
1035
1038
  /** `$service:` binding → a live array to render as slides (overrides `items`). */
1036
1039
  itemsPath?: string;
1040
+ /** 0 (default) = all slides mounted; N ⇒ mount current ± N, unmount the rest. */
1041
+ liveWindow?: number;
1037
1042
  }
1038
1043
  ```
1039
1044
 
1045
+ > ⚠️ **Implemented, but these props are inert on ios, android, web:** `liveWindow` — Declared ahead of its runtime: every page stays mounted until Pager/Carousel live_window lands on each renderer (W8, #4630).
1046
+
1040
1047
  #### Pager
1041
1048
 
1042
1049
  ```ts
@@ -1045,9 +1052,13 @@ export interface PagerProps {
1045
1052
  currentIndex?: number;
1046
1053
  onChange?: Action;
1047
1054
  showIndicator?: boolean;
1055
+ /** As {@link CarouselProps.liveWindow}. */
1056
+ liveWindow?: number;
1048
1057
  }
1049
1058
  ```
1050
1059
 
1060
+ > ⚠️ **Implemented, but these props are inert on ios, android, web:** `liveWindow` — Declared ahead of its runtime: every page stays mounted until Pager/Carousel live_window lands on each renderer (W8, #4630).
1061
+
1051
1062
  #### StepIndicator
1052
1063
 
1053
1064
  ```ts
@@ -1191,9 +1202,26 @@ export interface WebViewProps {
1191
1202
  scrollEnabled?: boolean;
1192
1203
  config?: WebViewConfig;
1193
1204
  capabilitiesRequired?: string[];
1205
+ // Embedded worker-bridged WebViews
1206
+ /** `""` (default, no channel) | `"worker"` — channel to the owning screen's worker. */
1207
+ bridge?: "" | "worker";
1208
+ /** Channel + storage identity; default `<screenId>?<args>/<Component.id>` (§4.1, `effectiveWebViewInstanceId`). */
1209
+ instanceId?: string;
1210
+ /** `$service:` bool — false ⇒ inactive (§5.4); unset ⇒ active. */
1211
+ activePath?: string;
1212
+ /** `$service:` bool — true ⇒ all page media muted. */
1213
+ mutedPath?: string;
1214
+ /** `$service:` scalar — any change remounts the document. */
1215
+ reloadKeyPath?: string;
1216
+ /** Take the parent's proposed size (works with weight); beats `height` / `aspectRatio`. */
1217
+ fill?: boolean;
1218
+ /** `$service:` number — live height in points/dp; beats `height`. */
1219
+ heightPath?: string;
1194
1220
  }
1195
1221
  ```
1196
1222
 
1223
+ > ⚠️ **Implemented, but these props are inert on ios, android, web:** `bridge`, `instanceId`, `activePath`, `mutedPath`, `reloadKeyPath`, `heightPath`, `fill` — The embedded worker-bridged WebView contract is declared ahead of its runtime: no channel, instance identity, fill layout, bound height or active/muted/reload binding until the hosts implement it (iOS/macOS #4624/#4625, Android #4626/#4627, web #4628/#4629).
1224
+
1197
1225
  ### Controls & cells
1198
1226
 
1199
1227
  #### ListItem
@@ -2237,7 +2265,7 @@ export interface TimeGridProps {
2237
2265
  }
2238
2266
  ```
2239
2267
 
2240
- > ⚠️ **Not implemented on android:** `anchorDatePath`, `onRangeChange` — `anchorDatePath` does not bind and `onRangeChange` never fires.
2268
+ > ⚠️ **Not implemented on android:** `anchorDatePath`, `onRangeChange`, `onCreate` — `anchorDatePath` does not bind, and `onRangeChange` and `onCreate` never fire.
2241
2269
 
2242
2270
  #### Agenda
2243
2271
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1456.0",
3
+ "version": "0.1458.0",
4
4
  "type": "module",
5
5
  "description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
6
6
  "keywords": [
@@ -71,5 +71,5 @@
71
71
  "artifactId": "himalaya-cli"
72
72
  }
73
73
  },
74
- "falconPackageHash": "6a9425d0ac743f2ada10d1e2e6c84f4ef1ce790732d9fff33a36c315"
74
+ "falconPackageHash": "9dd290be2b59a0845d75b156a968a16e615c0d3de4e9dc4a0f01cda6"
75
75
  }