@wix/himalaya-cli 0.1587.0 → 0.1588.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.
@@ -65,11 +65,18 @@ function parseBranchEntries(spec) {
65
65
  return entries;
66
66
  }
67
67
  function parseBranches(spec) {
68
- const branches = {};
68
+ const branches = /* @__PURE__ */ Object.create(null);
69
69
  for (const { key, body } of parseBranchEntries(spec)) branches[key] = body;
70
70
  return branches;
71
71
  }
72
72
  function formatMessage(pattern, args = {}, locale2 = "en") {
73
+ return formatAt(pattern, args, locale2, 0);
74
+ }
75
+ var MAX_NESTING = 16;
76
+ function ownArg(args, name) {
77
+ return Object.prototype.hasOwnProperty.call(args, name) ? args[name] : void 0;
78
+ }
79
+ function formatAt(pattern, args, locale2, nesting) {
73
80
  if (!pattern.includes("{") && !pattern.includes("''")) return pattern;
74
81
  let out = "";
75
82
  let i = 0;
@@ -111,11 +118,15 @@ function formatMessage(pattern, args = {}, locale2 = "en") {
111
118
  const body = pattern.slice(start, i);
112
119
  i++;
113
120
  const [name, kind, spec] = splitArg(body);
114
- const value = args[name];
121
+ const value = ownArg(args, name);
115
122
  if (!kind) {
116
123
  out += value === void 0 || value === null ? `{${name}}` : String(value);
117
124
  continue;
118
125
  }
126
+ if ((kind === "plural" || kind === "select") && spec !== void 0 && nesting >= MAX_NESTING) {
127
+ out += "{" + body + "}";
128
+ continue;
129
+ }
119
130
  if (kind === "plural" && spec !== void 0) {
120
131
  const n = typeof value === "number" ? value : Number(value);
121
132
  const branches = parseBranches(spec);
@@ -125,7 +136,7 @@ function formatMessage(pattern, args = {}, locale2 = "en") {
125
136
  out += "{" + body + "}";
126
137
  continue;
127
138
  }
128
- out += formatMessage(chosen.replace(/#/g, Number.isFinite(n) ? String(n) : ""), args, locale2);
139
+ out += formatAt(chosen.replace(/#/g, Number.isFinite(n) ? String(n) : ""), args, locale2, nesting + 1);
129
140
  continue;
130
141
  }
131
142
  if (kind === "select" && spec !== void 0) {
@@ -135,7 +146,7 @@ function formatMessage(pattern, args = {}, locale2 = "en") {
135
146
  out += "{" + body + "}";
136
147
  continue;
137
148
  }
138
- out += formatMessage(chosen, args, locale2);
149
+ out += formatAt(chosen, args, locale2, nesting + 1);
139
150
  continue;
140
151
  }
141
152
  out += value === void 0 || value === null ? `{${name}}` : String(value);
package/dist/cli.mjs CHANGED
@@ -15060,6 +15060,7 @@ function webViewOriginAllowed(url, origins) {
15060
15060
  }
15061
15061
  var init_webview_origin = __esm({
15062
15062
  "../../core/ts/src/webview-origin.ts"() {
15063
+ "use strict";
15063
15064
  init_define_HHP_CATALOG();
15064
15065
  }
15065
15066
  });
@@ -27488,7 +27489,6 @@ function resolveIdiom(tokens2, ctx = {}) {
27488
27489
  var IDIOM_CONTEXTS, UNSAFE_KEYS;
27489
27490
  var init_idiom = __esm({
27490
27491
  "../../core/ts/src/idiom.ts"() {
27491
- "use strict";
27492
27492
  init_define_HHP_CATALOG();
27493
27493
  IDIOM_CONTEXTS = {
27494
27494
  ios: { native: ["ios"] },
@@ -35766,11 +35766,17 @@ function parseBranchEntries(spec) {
35766
35766
  return entries;
35767
35767
  }
35768
35768
  function parseBranches(spec) {
35769
- const branches = {};
35769
+ const branches = /* @__PURE__ */ Object.create(null);
35770
35770
  for (const { key: key3, body } of parseBranchEntries(spec)) branches[key3] = body;
35771
35771
  return branches;
35772
35772
  }
35773
35773
  function formatMessage(pattern, args = {}, locale = "en") {
35774
+ return formatAt(pattern, args, locale, 0);
35775
+ }
35776
+ function ownArg(args, name) {
35777
+ return Object.prototype.hasOwnProperty.call(args, name) ? args[name] : void 0;
35778
+ }
35779
+ function formatAt(pattern, args, locale, nesting) {
35774
35780
  if (!pattern.includes("{") && !pattern.includes("''")) return pattern;
35775
35781
  let out2 = "";
35776
35782
  let i2 = 0;
@@ -35812,11 +35818,15 @@ function formatMessage(pattern, args = {}, locale = "en") {
35812
35818
  const body = pattern.slice(start, i2);
35813
35819
  i2++;
35814
35820
  const [name, kind, spec] = splitArg(body);
35815
- const value2 = args[name];
35821
+ const value2 = ownArg(args, name);
35816
35822
  if (!kind) {
35817
35823
  out2 += value2 === void 0 || value2 === null ? `{${name}}` : String(value2);
35818
35824
  continue;
35819
35825
  }
35826
+ if ((kind === "plural" || kind === "select") && spec !== void 0 && nesting >= MAX_NESTING) {
35827
+ out2 += "{" + body + "}";
35828
+ continue;
35829
+ }
35820
35830
  if (kind === "plural" && spec !== void 0) {
35821
35831
  const n2 = typeof value2 === "number" ? value2 : Number(value2);
35822
35832
  const branches = parseBranches(spec);
@@ -35826,7 +35836,7 @@ function formatMessage(pattern, args = {}, locale = "en") {
35826
35836
  out2 += "{" + body + "}";
35827
35837
  continue;
35828
35838
  }
35829
- out2 += formatMessage(chosen.replace(/#/g, Number.isFinite(n2) ? String(n2) : ""), args, locale);
35839
+ out2 += formatAt(chosen.replace(/#/g, Number.isFinite(n2) ? String(n2) : ""), args, locale, nesting + 1);
35830
35840
  continue;
35831
35841
  }
35832
35842
  if (kind === "select" && spec !== void 0) {
@@ -35836,7 +35846,7 @@ function formatMessage(pattern, args = {}, locale = "en") {
35836
35846
  out2 += "{" + body + "}";
35837
35847
  continue;
35838
35848
  }
35839
- out2 += formatMessage(chosen, args, locale);
35849
+ out2 += formatAt(chosen, args, locale, nesting + 1);
35840
35850
  continue;
35841
35851
  }
35842
35852
  out2 += value2 === void 0 || value2 === null ? `{${name}}` : String(value2);
@@ -35925,10 +35935,11 @@ function unsupportedConstructs(pattern) {
35925
35935
  walk2(pattern, false);
35926
35936
  return out2;
35927
35937
  }
35928
- var PLURAL_SELECTOR, SELECT_SELECTOR;
35938
+ var MAX_NESTING, PLURAL_SELECTOR, SELECT_SELECTOR;
35929
35939
  var init_message_format = __esm({
35930
35940
  "../../core/ts/src/message-format.ts"() {
35931
35941
  init_define_HHP_CATALOG();
35942
+ MAX_NESTING = 16;
35932
35943
  PLURAL_SELECTOR = /^(?:=(?:0|-?[1-9]\d*|-?(?:0|[1-9]\d*)\.\d*[1-9])|zero|one|two|few|many|other)$/;
35933
35944
  SELECT_SELECTOR = /^[\p{L}\p{N}_.-]+$/u;
35934
35945
  }
@@ -125191,6 +125202,12 @@ function renderNodeInner(node, ctx) {
125191
125202
  if (onAppear) out2 = /* @__PURE__ */ jsx11(NodeOnAppear, { action: onAppear, ctx, children: out2 });
125192
125203
  return out2;
125193
125204
  }
125205
+ function firedWithoutTap(action) {
125206
+ if (!action || typeof action !== "object") return action;
125207
+ const copy = { ...action };
125208
+ Object.defineProperty(copy, Symbol.for("himalaya.firedWithoutTap"), { value: true, enumerable: false });
125209
+ return copy;
125210
+ }
125194
125211
  function NodeOnAppear({ action, ctx, children }) {
125195
125212
  const fired = React16.useRef(false);
125196
125213
  const appearanceAction = React16.useContext(AppearanceActionContext);
@@ -125203,7 +125220,7 @@ function NodeOnAppear({ action, ctx, children }) {
125203
125220
  const needsProvider = needsWorker || [resolved2.params, resolved2.args].some((map) => map && Object.values(map).some((value2) => typeof value2 === "string" && isStateBinding(value2)));
125204
125221
  if (needsProvider && !ctx.provider || needsWorker && ctx.workerReady === false) return;
125205
125222
  fired.current = true;
125206
- onAction(resolved2);
125223
+ onAction(firedWithoutTap(resolved2));
125207
125224
  }, [action, ctx, onAction]);
125208
125225
  return /* @__PURE__ */ jsx11(Fragment4, { children });
125209
125226
  }
@@ -127342,7 +127359,7 @@ var init_renderNode = __esm({
127342
127359
  if (!live3 || !entries[entries.length - 1]?.isIntersecting) return;
127343
127360
  if (pages2.claim(cycle)) {
127344
127361
  workerTap.tapped();
127345
- ctx.onAction?.(action);
127362
+ ctx.onAction?.(firedWithoutTap(action));
127346
127363
  }
127347
127364
  }, { root, rootMargin: "0px 0px 320px 0px" });
127348
127365
  io2.observe(el2);
@@ -179937,43 +179954,43 @@ var init_preview_assets_generated = __esm({
179937
179954
  init_define_HHP_CATALOG();
179938
179955
  init_preview_assets_format();
179939
179956
  PREVIEW_ASSET_MANIFEST = [
179940
- { key: "assets/DashboardHost-B4m0pT_Y.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2971, sha256: "e8ab61fc2f9623a2effaee97c3da9110671f15c2b595c5264535fa5676ccb4cb" },
179941
- { key: "assets/DevDrawer-BloHcgBS.js", contentType: "application/javascript; charset=utf-8", offset: 2979, length: 16783, sha256: "c695c57dc75bb9bb6c7db1b913560268bc00de2682876993c55526e872d3de77" },
179942
- { key: "assets/IdiomCompare-r7HtUkQc.js", contentType: "application/javascript; charset=utf-8", offset: 19762, length: 1926, sha256: "cfb660b8139d9185b3f5b3518fcf611b28f81ae67c083e04f7705c9a0dd5e2c5" },
179943
- { key: "assets/LightboxViewer-DClKFeIU.js", contentType: "application/javascript; charset=utf-8", offset: 21688, length: 8171, sha256: "661e75a3fae135d46232aa0e1aae708d984b9e95eb7555e7aa3cdfc18ba9d399" },
179944
- { key: "assets/OfflineReadingBar-CRML8Gi_.js", contentType: "application/javascript; charset=utf-8", offset: 29859, length: 1707, sha256: "e41a4cef29888a1109f0b1c883a2ab779f5731405f25d75e4cea4bd2c0ea1b69" },
179945
- { key: "assets/PhonePreviewControl-OMrKr2Lk.js", contentType: "application/javascript; charset=utf-8", offset: 31566, length: 37768, sha256: "3eab1bb374bc843994031a946369b6d3b9ee830ab974fe9cd865a1f5b3b2ba43" },
179946
- { key: "assets/SchemeCompare-BPPDn5_E.js", contentType: "application/javascript; charset=utf-8", offset: 69334, length: 1858, sha256: "7944c3ed45b67a1305e8440b4b746dedf0e514ba9a24395fe6964bbda854c7d1" },
179947
- { key: "assets/WixFrogTelemetrySink-I_2ApJHR.js", contentType: "application/javascript; charset=utf-8", offset: 71192, length: 3165, sha256: "4a3b01796096e8b5cc8965ea0045d209d92e1f13f8cc8794d31cb0e826efa1ed" },
179957
+ { key: "assets/DashboardHost-D5t66Oub.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2971, sha256: "ffa446b44cde2af2125f3d53bec6972800db30121d05fd97b9b2cd53f2638127" },
179958
+ { key: "assets/DevDrawer-CEHYielq.js", contentType: "application/javascript; charset=utf-8", offset: 2979, length: 16783, sha256: "c3e8b5f3a3e102ef2edbfd6313191d8b919d2ab991ede28855d299d8912e17a4" },
179959
+ { key: "assets/IdiomCompare-DeprFlHd.js", contentType: "application/javascript; charset=utf-8", offset: 19762, length: 1926, sha256: "1d9f3a699e2a0614b6d71932d01fd7b97c10747998a0bc3f7794386040d79607" },
179960
+ { key: "assets/LightboxViewer-Bk-sDf47.js", contentType: "application/javascript; charset=utf-8", offset: 21688, length: 8171, sha256: "8dc123b4816891e9cbbf353b7229424f9dede848b7e705185e6e37ed32f02590" },
179961
+ { key: "assets/OfflineReadingBar-DpvBmxDl.js", contentType: "application/javascript; charset=utf-8", offset: 29859, length: 1707, sha256: "818909f5e07e6e92bd791cad3f7973edf61dce4c7b99af95451aa2977f33655c" },
179962
+ { key: "assets/PhonePreviewControl-BeiTAQzN.js", contentType: "application/javascript; charset=utf-8", offset: 31566, length: 37768, sha256: "ece25c6bde96c701ceedd82a57c43a4ae1d913a6d509cc5c19004bbd3267bc6d" },
179963
+ { key: "assets/SchemeCompare-_pryXCp1.js", contentType: "application/javascript; charset=utf-8", offset: 69334, length: 1858, sha256: "967691b9dda4f0bf17ebccf1feea05e346ef2faaf41478f1e97bb670f703e344" },
179964
+ { key: "assets/WixFrogTelemetrySink-C2qsbhrp.js", contentType: "application/javascript; charset=utf-8", offset: 71192, length: 3165, sha256: "31f6b9fc9d21fc9ea83a42b4bb9e9f92042e3aa4e157d1ff12124370475d0428" },
179948
179965
  { key: "assets/calendar-ics-BvfIYWjG.js", contentType: "application/javascript; charset=utf-8", offset: 74357, length: 2192, sha256: "1636167041e9829ceccd3544297b86b8475c38bd2f759c4dbc17c813dc6e9254" },
179949
179966
  { key: "assets/glassPreviewBrowser-DONaOehd.js", contentType: "application/javascript; charset=utf-8", offset: 76549, length: 6578, sha256: "4402c4cddd2a564e7466cdf1e12a0e0277c0400b288e1e5eda1d23e797599d31" },
179950
179967
  { key: "assets/image-preparation-Cj4gldm6.js", contentType: "application/javascript; charset=utf-8", offset: 83127, length: 2704, sha256: "32944ea587c2f3b84389b66b50a850437560238f1c8d33b6275973ee04eee865" },
179951
- { key: "assets/index-BLry1Jml.js", contentType: "application/javascript; charset=utf-8", offset: 85831, length: 1445015, sha256: "4a9231de3a4edd901a8adc07d440ad0d4e1cf8041441319f62c8831cbcf0f1d1" },
179952
- { key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset: 1530846, length: 7624, sha256: "29dfba5b56f79a0b84d6b04d84d87617454baeba03c225f682ab2ab7ae2d5016" },
179953
- { key: "assets/pdf-BcfvdZOa.js", contentType: "application/javascript; charset=utf-8", offset: 1538470, length: 488199, sha256: "698ef16eb9c5fcf7e6354d0a3b5662fd60d2909f17b8c641cbbed00cd0c48ad5" },
179954
- { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 2026669, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
179955
- { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 2026742, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
179956
- { key: "assets/pdfDocument-cxpR3JD2.js", contentType: "application/javascript; charset=utf-8", offset: 3343776, length: 3453, sha256: "a51b8d61834713f26be1db4a8e0d40a0c17db35206727dc9026ecf728a525a5d" },
179957
- { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3347229, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
179958
- { key: "assets/webviewBridgeHost-DEtRtAtt.js", contentType: "application/javascript; charset=utf-8", offset: 3349495, length: 9888, sha256: "49e4e6470a14ec1aff2cbe59817700ea5e2e0d3231f930140ba83604dc2b0012" },
179959
- { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3359383, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
179960
- { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3363993, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
179961
- { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3852577, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
179962
- { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3943501, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
179963
- { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 4034485, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
179964
- { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 4125465, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
179965
- { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4216337, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
179966
- { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4307317, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
179967
- { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4415953, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
179968
- { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4525037, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
179969
- { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4634085, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
179970
- { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4741785, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
179971
- { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4829893, length: 6818, sha256: "835250c3d8004f27c2b67f9b471984351ba6df07b916d97e33b43c691200a18c" },
179972
- { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4836711, length: 5037, sha256: "f603ac2b70b253c076a82e46ec83b7df190a1b68001d1f9659f0b4a94633505f" },
179973
- { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4841748, length: 10699, sha256: "f187c5a783ec41f90c0e49471ddc3ad5d3bb9c9c40feddad92e0ed9ef9b480f1" },
179974
- { key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4852447, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
179975
- { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4853618, length: 23047, sha256: "20d1459e3f896f344e478e613d0c979a0de02e81a929a45d3a0ef6a53af36441" },
179976
- { key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset: 4876665, length: 23064, sha256: "8655cfe9c74212ec5dafecb49d2fdeb48b19f1bd8a710091e3e55631f9b4ab06" }
179968
+ { key: "assets/index-CQzzRWDG.js", contentType: "application/javascript; charset=utf-8", offset: 85831, length: 1468864, sha256: "0bc80f6f02cfdefd097ab4db1f72a7f33595632c3ab3fb7ee2d56305d9b15c1d" },
179969
+ { key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset: 1554695, length: 7624, sha256: "29dfba5b56f79a0b84d6b04d84d87617454baeba03c225f682ab2ab7ae2d5016" },
179970
+ { key: "assets/pdf-B6E3y9zk.js", contentType: "application/javascript; charset=utf-8", offset: 1562319, length: 488199, sha256: "3cea4c27a01410f9fc0ac02cd2cff08b1a28c54e4b40dc585300be59e553fd59" },
179971
+ { key: "assets/pdf.worker.min-BQa_JDET.js", contentType: "application/javascript; charset=utf-8", offset: 2050518, length: 73, sha256: "41bcfda4f3c8c0a81c785ea87c69afc8e7d0ed8c333324aee94c273d881bb6aa" },
179972
+ { key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 2050591, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
179973
+ { key: "assets/pdfDocument-uUMefO3H.js", contentType: "application/javascript; charset=utf-8", offset: 3367625, length: 3453, sha256: "1a6addfedd7f380a33a47a0cbd2d9c2a9afb3b4f745b3813b1ae483271c2d1d8" },
179974
+ { key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3371078, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
179975
+ { key: "assets/webviewBridgeHost-UkYcty4p.js", contentType: "application/javascript; charset=utf-8", offset: 3373344, length: 9888, sha256: "176ce32603cd7420cb703807827c8582136d05cf82262be4fe21da7482bcc447" },
179976
+ { key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3383232, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
179977
+ { key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3387842, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
179978
+ { key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3876426, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
179979
+ { key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 3967350, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
179980
+ { key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 4058334, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
179981
+ { key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 4149314, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
179982
+ { key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4240186, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
179983
+ { key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4331166, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
179984
+ { key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4439802, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
179985
+ { key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4548886, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
179986
+ { key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4657934, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
179987
+ { key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4765634, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
179988
+ { key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4853742, length: 6818, sha256: "835250c3d8004f27c2b67f9b471984351ba6df07b916d97e33b43c691200a18c" },
179989
+ { key: "index.html", contentType: "text/html; charset=utf-8", offset: 4860560, length: 5037, sha256: "9052f9097fed1b92519da1b12458eb900f19e8db6e0599662ba061b5465d5376" },
179990
+ { key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4865597, length: 10699, sha256: "f187c5a783ec41f90c0e49471ddc3ad5d3bb9c9c40feddad92e0ed9ef9b480f1" },
179991
+ { key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4876296, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
179992
+ { key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4877467, length: 23047, sha256: "20d1459e3f896f344e478e613d0c979a0de02e81a929a45d3a0ef6a53af36441" },
179993
+ { key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset: 4900514, length: 23064, sha256: "8655cfe9c74212ec5dafecb49d2fdeb48b19f1bd8a710091e3e55631f9b4ab06" }
179977
179994
  ];
179978
179995
  }
179979
179996
  });
Binary file
@@ -146,6 +146,24 @@ with `copyOf` at descriptor-build time), and the worker reads them with the stas
146
146
  idiom (stash the appear params, then read them back) so a late arg-less `refresh()` can't lose
147
147
  them. Author new screens to this seam as the standard.
148
148
 
149
+ **Counts in copy are ICU, never concatenation.** "1 items", "2 item" and a Hebrew count that ignores
150
+ the dual all come from building the sentence in code. Put the count in a `Text` **`template`**
151
+ instead and let the renderer pick the grammatical form for the app's locale — web,
152
+ iOS/macOS and Android format it identically:
153
+
154
+ ```ts
155
+ // The pattern may be a `$t:` key; each param is a literal or an ordinary binding.
156
+ { type: "Text", props: { template: {
157
+ template: "{n, plural, =0 {Your bag is empty} one {# item} other {# items}}",
158
+ params: { n: "$service:cart.count" }, // live: the text re-renders when the count changes
159
+ } } }
160
+ ```
161
+
162
+ The subset is simple `{arg}`, `plural` (with `=N` and `#`) and `select`, nested; Hebrew has `one`,
163
+ `two` (the dual) and `other`. Anything outside it renders verbatim rather than failing, and a missing
164
+ argument shows its `{name}` placeholder. Only `plural` arguments are read as numbers, so an id like
165
+ `00042` in the same template keeps its padding.
166
+
149
167
  ### Light and dark are one design, not two
150
168
  Color tokens carry `{ light, dark, highContrast }` ([`ColorValue`](../core/ts/src/tokens.ts)). Design
151
169
  in both from the start — never hardcode a value that only reads in one scheme. `textOnAccent` exists so
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1587.0",
3
+ "version": "0.1588.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": [
@@ -72,5 +72,5 @@
72
72
  "artifactId": "himalaya-cli"
73
73
  }
74
74
  },
75
- "falconPackageHash": "02ee75f8ae816a483cf73adfb92ac39e19a8f5c9c6835280c85f6bf2"
75
+ "falconPackageHash": "a3bed80b2a4e25688568c64abde4f20cb215bf09a39585660bc2c2d1"
76
76
  }