@wix/himalaya-cli 0.1456.0 → 0.1457.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/dev-server/src/builder.d.ts +15 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/index.d.ts +2 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/schema.d.ts +35 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/validator.d.ts +42 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/webview-embedded.d.ts +66 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/ts/src/webview-origin.d.ts +7 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/core.mjs +389 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/sdui.mjs +14 -2
- package/dist/cli.mjs +526 -163
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/component-reference.json +51 -5
- package/guides/component-reference.md +32 -4
- package/package.json +2 -2
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
|
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:
|
|
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` (
|
|
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
|
|
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
|
|
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.
|
|
3
|
+
"version": "0.1457.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": "
|
|
74
|
+
"falconPackageHash": "10017f76e05c5fe66a5fd5aa29de830bd988def33be584b00978a718"
|
|
75
75
|
}
|