@neurodyn/react-ar 0.0.12 → 0.0.14

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/index.js CHANGED
@@ -7,9 +7,9 @@ import * as __rspack_external_react_i18next_05dede28 from "react-i18next";
7
7
  import * as __rspack_external_react_jsx_runtime_225474f2 from "react/jsx-runtime";
8
8
  import * as __rspack_external_three from "three";
9
9
  import * as __rspack_external_ua_parser_js_881bf303 from "ua-parser-js";
10
- import * as __rspack_external_react_shadow_67c1cf10 from "react-shadow";
11
- import * as __rspack_external_i18next from "i18next";
12
- import * as __rspack_external_i18next_browser_languagedetector_a0acd247 from "i18next-browser-languagedetector";
10
+ import react_shadow from "react-shadow";
11
+ import i18next from "i18next";
12
+ import i18next_browser_languagedetector from "i18next-browser-languagedetector";
13
13
  var __webpack_modules__ = {
14
14
  "./src/style.css?inline" (module, __webpack_exports__, __webpack_require__) {
15
15
  __webpack_require__.d(__webpack_exports__, {
@@ -140,6 +140,8 @@ var __webpack_modules__ = {
140
140
  --text-sm: 14px;
141
141
  --text-base: 16px;
142
142
  --text-lg: 18px;
143
+ --text-xl: 20px;
144
+ --text-xl--line-height: calc(1.75 / 1.25);
143
145
  --text-4xl: 36px;
144
146
  --text-4xl--line-height: calc(2.5 / 2.25);
145
147
  --font-weight-normal: 400;
@@ -151,9 +153,9 @@ var __webpack_modules__ = {
151
153
  --leading-normal: 1.5;
152
154
  --leading-relaxed: 1.625;
153
155
  --radius-md: calc(var(--radius) - 2px);
156
+ --radius-2xl: 16px;
154
157
  --radius-3xl: 24px;
155
158
  --radius-4xl: 32px;
156
- --drop-shadow-sm: 0 1px 2px #00000026;
157
159
  --ease-out: cubic-bezier(0, 0, .2, 1);
158
160
  --ease-in-out: cubic-bezier(.4, 0, .2, 1);
159
161
  --animate-spin: spin 1s linear infinite;
@@ -446,7 +448,7 @@ var __webpack_modules__ = {
446
448
  }
447
449
 
448
450
  .ar-catalog-media-frame {
449
- aspect-ratio: 10 / 7;
451
+ aspect-ratio: 1;
450
452
  background: #fff;
451
453
  border-radius: 6px;
452
454
  place-items: center;
@@ -457,7 +459,7 @@ var __webpack_modules__ = {
457
459
  }
458
460
 
459
461
  .ar-catalog-media-img {
460
- object-fit: contain;
462
+ object-fit: cover;
461
463
  width: 100%;
462
464
  height: 100%;
463
465
  display: block;
@@ -488,6 +490,10 @@ var __webpack_modules__ = {
488
490
  pointer-events: none;
489
491
  }
490
492
 
493
+ .collapse {
494
+ visibility: collapse;
495
+ }
496
+
491
497
  .invisible {
492
498
  visibility: hidden;
493
499
  }
@@ -536,6 +542,10 @@ var __webpack_modules__ = {
536
542
  inset-inline: calc(var(--spacing) * 0);
537
543
  }
538
544
 
545
+ .inset-x-5 {
546
+ inset-inline: calc(var(--spacing) * 5);
547
+ }
548
+
539
549
  .inset-x-6 {
540
550
  inset-inline: calc(var(--spacing) * 6);
541
551
  }
@@ -588,18 +598,10 @@ var __webpack_modules__ = {
588
598
  top: calc(var(--spacing) * 6);
589
599
  }
590
600
 
591
- .top-8 {
592
- top: calc(var(--spacing) * 8);
593
- }
594
-
595
601
  .top-\\[1px\\] {
596
602
  top: 1px;
597
603
  }
598
604
 
599
- .top-\\[9px\\] {
600
- top: 9px;
601
- }
602
-
603
605
  .top-\\[50\\%\\] {
604
606
  top: 50%;
605
607
  }
@@ -652,10 +654,18 @@ var __webpack_modules__ = {
652
654
  right: calc(var(--spacing) * 6);
653
655
  }
654
656
 
657
+ .right-full {
658
+ right: 100%;
659
+ }
660
+
655
661
  .-bottom-12 {
656
662
  bottom: calc(var(--spacing) * -12);
657
663
  }
658
664
 
665
+ .-bottom-px {
666
+ bottom: -1px;
667
+ }
668
+
659
669
  .bottom-0 {
660
670
  bottom: calc(var(--spacing) * 0);
661
671
  }
@@ -692,8 +702,8 @@ var __webpack_modules__ = {
692
702
  left: calc(var(--spacing) * 3);
693
703
  }
694
704
 
695
- .left-4 {
696
- left: calc(var(--spacing) * 4);
705
+ .left-6 {
706
+ left: calc(var(--spacing) * 6);
697
707
  }
698
708
 
699
709
  .left-\\[50\\%\\] {
@@ -744,6 +754,10 @@ var __webpack_modules__ = {
744
754
  grid-column: 1 / -1;
745
755
  }
746
756
 
757
+ .col-start-1 {
758
+ grid-column-start: 1;
759
+ }
760
+
747
761
  .col-start-2 {
748
762
  grid-column-start: 2;
749
763
  }
@@ -806,6 +820,14 @@ var __webpack_modules__ = {
806
820
  margin-inline: calc(var(--spacing) * -4);
807
821
  }
808
822
 
823
+ .-mx-5 {
824
+ margin-inline: calc(var(--spacing) * -5);
825
+ }
826
+
827
+ .-mx-8 {
828
+ margin-inline: calc(var(--spacing) * -8);
829
+ }
830
+
809
831
  .mx-2 {
810
832
  margin-inline: calc(var(--spacing) * 2);
811
833
  }
@@ -854,6 +876,10 @@ var __webpack_modules__ = {
854
876
  margin-top: calc(var(--spacing) * -4);
855
877
  }
856
878
 
879
+ .-mt-9 {
880
+ margin-top: calc(var(--spacing) * -9);
881
+ }
882
+
857
883
  .mt-0\\.5 {
858
884
  margin-top: calc(var(--spacing) * .5);
859
885
  }
@@ -1008,6 +1034,10 @@ var __webpack_modules__ = {
1008
1034
  field-sizing: content;
1009
1035
  }
1010
1036
 
1037
+ .aspect-\\[4\\/1\\] {
1038
+ aspect-ratio: 4;
1039
+ }
1040
+
1011
1041
  .aspect-\\[338\\/237\\] {
1012
1042
  aspect-ratio: 338 / 237;
1013
1043
  }
@@ -1095,6 +1125,11 @@ var __webpack_modules__ = {
1095
1125
  height: calc(var(--spacing) * 12);
1096
1126
  }
1097
1127
 
1128
+ .size-20 {
1129
+ width: calc(var(--spacing) * 20);
1130
+ height: calc(var(--spacing) * 20);
1131
+ }
1132
+
1098
1133
  .size-22 {
1099
1134
  width: calc(var(--spacing) * 22);
1100
1135
  height: calc(var(--spacing) * 22);
@@ -1115,11 +1150,6 @@ var __webpack_modules__ = {
1115
1150
  height: 30px;
1116
1151
  }
1117
1152
 
1118
- .size-\\[60px\\] {
1119
- width: 60px;
1120
- height: 60px;
1121
- }
1122
-
1123
1153
  .size-\\[72px\\] {
1124
1154
  width: 72px;
1125
1155
  height: 72px;
@@ -1147,6 +1177,10 @@ var __webpack_modules__ = {
1147
1177
  height: var(--radix-navigation-menu-viewport-height);
1148
1178
  }
1149
1179
 
1180
+ .h-0\\.5 {
1181
+ height: calc(var(--spacing) * .5);
1182
+ }
1183
+
1150
1184
  .h-1 {
1151
1185
  height: calc(var(--spacing) * 1);
1152
1186
  }
@@ -1235,18 +1269,10 @@ var __webpack_modules__ = {
1235
1269
  height: 30px;
1236
1270
  }
1237
1271
 
1238
- .h-\\[69px\\] {
1239
- height: 69px;
1240
- }
1241
-
1242
1272
  .h-\\[100svh\\] {
1243
1273
  height: 100svh;
1244
1274
  }
1245
1275
 
1246
- .h-\\[200px\\] {
1247
- height: 200px;
1248
- }
1249
-
1250
1276
  .h-\\[calc\\(--spacing\\(5\\.25\\)\\)\\] {
1251
1277
  height: calc(calc(var(--spacing) * 5.25));
1252
1278
  }
@@ -1335,6 +1361,10 @@ var __webpack_modules__ = {
1335
1361
  min-height: calc(var(--spacing) * 8);
1336
1362
  }
1337
1363
 
1364
+ .min-h-11 {
1365
+ min-height: calc(var(--spacing) * 11);
1366
+ }
1367
+
1338
1368
  .min-h-16 {
1339
1369
  min-height: calc(var(--spacing) * 16);
1340
1370
  }
@@ -1471,14 +1501,14 @@ var __webpack_modules__ = {
1471
1501
  width: 56px;
1472
1502
  }
1473
1503
 
1474
- .w-\\[76px\\] {
1475
- width: 76px;
1476
- }
1477
-
1478
1504
  .w-\\[100px\\] {
1479
1505
  width: 100px;
1480
1506
  }
1481
1507
 
1508
+ .w-\\[160\\%\\] {
1509
+ width: 160%;
1510
+ }
1511
+
1482
1512
  .w-\\[340px\\] {
1483
1513
  width: 340px;
1484
1514
  }
@@ -1523,6 +1553,10 @@ var __webpack_modules__ = {
1523
1553
  max-width: var(--container-2xl);
1524
1554
  }
1525
1555
 
1556
+ .max-w-32 {
1557
+ max-width: calc(var(--spacing) * 32);
1558
+ }
1559
+
1526
1560
  .max-w-61 {
1527
1561
  max-width: calc(var(--spacing) * 61);
1528
1562
  }
@@ -1535,10 +1569,6 @@ var __webpack_modules__ = {
1535
1569
  max-width: calc(var(--spacing) * 80);
1536
1570
  }
1537
1571
 
1538
- .max-w-\\[13rem\\] {
1539
- max-width: 208px;
1540
- }
1541
-
1542
1572
  .max-w-\\[80\\%\\] {
1543
1573
  max-width: 80%;
1544
1574
  }
@@ -1547,6 +1577,10 @@ var __webpack_modules__ = {
1547
1577
  max-width: 386px;
1548
1578
  }
1549
1579
 
1580
+ .max-w-\\[calc\\(100\\%\\+4rem\\)\\] {
1581
+ max-width: calc(100% + 64px);
1582
+ }
1583
+
1550
1584
  .max-w-\\[calc\\(100\\%-2rem\\)\\] {
1551
1585
  max-width: calc(100% - 32px);
1552
1586
  }
@@ -1643,6 +1677,10 @@ var __webpack_modules__ = {
1643
1677
  flex: 1;
1644
1678
  }
1645
1679
 
1680
+ .shrink {
1681
+ flex-shrink: 1;
1682
+ }
1683
+
1646
1684
  .shrink-0 {
1647
1685
  flex-shrink: 0;
1648
1686
  }
@@ -1872,10 +1910,6 @@ var __webpack_modules__ = {
1872
1910
  grid-auto-rows: min-content;
1873
1911
  }
1874
1912
 
1875
- .grid-cols-2 {
1876
- grid-template-columns: repeat(2, minmax(0, 1fr));
1877
- }
1878
-
1879
1913
  .grid-cols-3 {
1880
1914
  grid-template-columns: repeat(3, minmax(0, 1fr));
1881
1915
  }
@@ -1888,6 +1922,10 @@ var __webpack_modules__ = {
1888
1922
  grid-template-columns: 112px minmax(0, 1fr);
1889
1923
  }
1890
1924
 
1925
+ .grid-cols-\\[minmax\\(0\\,1fr\\)\\] {
1926
+ grid-template-columns: minmax(0, 1fr);
1927
+ }
1928
+
1891
1929
  .grid-rows-\\[auto_1fr\\] {
1892
1930
  grid-template-rows: auto 1fr;
1893
1931
  }
@@ -2088,6 +2126,10 @@ var __webpack_modules__ = {
2088
2126
  border-radius: var(--cell-radius);
2089
2127
  }
2090
2128
 
2129
+ .rounded-2xl {
2130
+ border-radius: var(--radius-2xl);
2131
+ }
2132
+
2091
2133
  .rounded-3xl {
2092
2134
  border-radius: var(--radius-3xl);
2093
2135
  }
@@ -2116,6 +2158,10 @@ var __webpack_modules__ = {
2116
2158
  border-radius: 8px;
2117
2159
  }
2118
2160
 
2161
+ .rounded-\\[11px\\] {
2162
+ border-radius: 11px;
2163
+ }
2164
+
2119
2165
  .rounded-\\[12px\\] {
2120
2166
  border-radius: 12px;
2121
2167
  }
@@ -2230,6 +2276,11 @@ var __webpack_modules__ = {
2230
2276
  border-width: 1.5px;
2231
2277
  }
2232
2278
 
2279
+ .border-\\[3px\\] {
2280
+ border-style: var(--tw-border-style);
2281
+ border-width: 3px;
2282
+ }
2283
+
2233
2284
  .border-y {
2234
2285
  border-block-style: var(--tw-border-style);
2235
2286
  border-block-width: 1px;
@@ -2368,13 +2419,13 @@ var __webpack_modules__ = {
2368
2419
  border-color: var(--color-white);
2369
2420
  }
2370
2421
 
2371
- .border-white\\/70 {
2372
- border-color: #ffffffb3;
2422
+ .border-white\\/45 {
2423
+ border-color: #ffffff73;
2373
2424
  }
2374
2425
 
2375
2426
  @supports (color: color-mix(in lab, red, red)) {
2376
- .border-white\\/70 {
2377
- border-color: color-mix(in oklab, var(--color-white) 70%, transparent);
2427
+ .border-white\\/45 {
2428
+ border-color: color-mix(in oklab, var(--color-white) 45%, transparent);
2378
2429
  }
2379
2430
  }
2380
2431
 
@@ -2382,16 +2433,20 @@ var __webpack_modules__ = {
2382
2433
  background-color: var(--color-bg);
2383
2434
  }
2384
2435
 
2436
+ .bg-\\[\\#5B6BFF\\] {
2437
+ background-color: #5b6bff;
2438
+ }
2439
+
2385
2440
  .bg-\\[\\#4796ff\\] {
2386
2441
  background-color: #4796ff;
2387
2442
  }
2388
2443
 
2389
- .bg-\\[\\#212124\\] {
2390
- background-color: #212124;
2444
+ .bg-\\[\\#17171b\\] {
2445
+ background-color: #17171b;
2391
2446
  }
2392
2447
 
2393
- .bg-\\[\\#212124\\]\\/40 {
2394
- background-color: oklab(24.8988% .00154556 -.0053955 / .4);
2448
+ .bg-\\[\\#212124\\] {
2449
+ background-color: #212124;
2395
2450
  }
2396
2451
 
2397
2452
  .bg-\\[\\#212124\\]\\/50 {
@@ -2402,6 +2457,10 @@ var __webpack_modules__ = {
2402
2457
  background-color: oklab(24.8988% .00154556 -.0053955 / .6);
2403
2458
  }
2404
2459
 
2460
+ .bg-\\[\\#c9c9d2\\] {
2461
+ background-color: #c9c9d2;
2462
+ }
2463
+
2405
2464
  .bg-\\[\\#d9d9d9\\] {
2406
2465
  background-color: #d9d9d9;
2407
2466
  }
@@ -2410,6 +2469,10 @@ var __webpack_modules__ = {
2410
2469
  background-color: #dadae0;
2411
2470
  }
2412
2471
 
2472
+ .bg-\\[\\#e7e7ea\\] {
2473
+ background-color: #e7e7ea;
2474
+ }
2475
+
2413
2476
  .bg-\\[\\#ededed\\] {
2414
2477
  background-color: #ededed;
2415
2478
  }
@@ -2434,10 +2497,6 @@ var __webpack_modules__ = {
2434
2497
  background-color: var(--color-background-red-transparent);
2435
2498
  }
2436
2499
 
2437
- .bg-\\[var\\(--v-backgrounds-green\\)\\] {
2438
- background-color: var(--v-backgrounds-green);
2439
- }
2440
-
2441
2500
  .bg-accent {
2442
2501
  background-color: var(--accent);
2443
2502
  }
@@ -2502,13 +2561,13 @@ var __webpack_modules__ = {
2502
2561
  }
2503
2562
  }
2504
2563
 
2505
- .bg-black\\/65 {
2506
- background-color: #000000a6;
2564
+ .bg-black\\/55 {
2565
+ background-color: #0000008c;
2507
2566
  }
2508
2567
 
2509
2568
  @supports (color: color-mix(in lab, red, red)) {
2510
- .bg-black\\/65 {
2511
- background-color: color-mix(in oklab, var(--color-black) 65%, transparent);
2569
+ .bg-black\\/55 {
2570
+ background-color: color-mix(in oklab, var(--color-black) 55%, transparent);
2512
2571
  }
2513
2572
  }
2514
2573
 
@@ -2648,13 +2707,13 @@ var __webpack_modules__ = {
2648
2707
  background-color: var(--color-white);
2649
2708
  }
2650
2709
 
2651
- .bg-white\\/20 {
2652
- background-color: #fff3;
2710
+ .bg-white\\/10 {
2711
+ background-color: #ffffff1a;
2653
2712
  }
2654
2713
 
2655
2714
  @supports (color: color-mix(in lab, red, red)) {
2656
- .bg-white\\/20 {
2657
- background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
2715
+ .bg-white\\/10 {
2716
+ background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
2658
2717
  }
2659
2718
  }
2660
2719
 
@@ -2668,6 +2727,16 @@ var __webpack_modules__ = {
2668
2727
  }
2669
2728
  }
2670
2729
 
2730
+ .bg-white\\/85 {
2731
+ background-color: #ffffffd9;
2732
+ }
2733
+
2734
+ @supports (color: color-mix(in lab, red, red)) {
2735
+ .bg-white\\/85 {
2736
+ background-color: color-mix(in oklab, var(--color-white) 85%, transparent);
2737
+ }
2738
+ }
2739
+
2671
2740
  .bg-radial {
2672
2741
  --tw-gradient-position: in oklab;
2673
2742
  background-image: radial-gradient(var(--tw-gradient-stops));
@@ -2677,14 +2746,14 @@ var __webpack_modules__ = {
2677
2746
  background-image: radial-gradient(50% 50%, #4796ff 0%, #3f73ed 100%);
2678
2747
  }
2679
2748
 
2680
- .\\[background-image\\:var\\(--v-backgrounds-green-gradient\\)\\] {
2681
- background-image: var(--v-backgrounds-green-gradient);
2682
- }
2683
-
2684
2749
  .bg-\\[linear-gradient\\(to_right\\,\\#ff0000_0\\%\\,\\#ffff00_16\\.66\\%\\,\\#00ff00_33\\.33\\%\\,\\#00ffff_50\\%\\,\\#0000ff_66\\.66\\%\\,\\#ff00ff_83\\.33\\%\\,\\#ff0000_100\\%\\)\\] {
2685
2750
  background-image: linear-gradient(90deg, red 0%, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, red 100%);
2686
2751
  }
2687
2752
 
2753
+ .bg-\\[radial-gradient\\(circle\\,rgba\\(255\\,255\\,255\\,0\\.15\\)_0\\%\\,rgba\\(255\\,255\\,255\\,0\\.06\\)_45\\%\\,transparent_72\\%\\)\\] {
2754
+ background-image: radial-gradient(circle, #ffffff26 0%, #ffffff0f 45%, #0000 72%);
2755
+ }
2756
+
2688
2757
  .from-background-containers {
2689
2758
  --tw-gradient-from: var(--v-backgrounds-containers);
2690
2759
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
@@ -2863,8 +2932,8 @@ var __webpack_modules__ = {
2863
2932
  padding-block: calc(var(--spacing) * 3);
2864
2933
  }
2865
2934
 
2866
- .py-5 {
2867
- padding-block: calc(var(--spacing) * 5);
2935
+ .py-4 {
2936
+ padding-block: calc(var(--spacing) * 4);
2868
2937
  }
2869
2938
 
2870
2939
  .py-6 {
@@ -2907,6 +2976,10 @@ var __webpack_modules__ = {
2907
2976
  padding-top: calc(var(--spacing) * 4);
2908
2977
  }
2909
2978
 
2979
+ .pt-5 {
2980
+ padding-top: calc(var(--spacing) * 5);
2981
+ }
2982
+
2910
2983
  .pt-\\[max\\(1rem\\,env\\(safe-area-inset-top\\)\\)\\] {
2911
2984
  padding-top: max(16px, env(safe-area-inset-top));
2912
2985
  }
@@ -2967,6 +3040,10 @@ var __webpack_modules__ = {
2967
3040
  padding-bottom: calc(var(--spacing) * 4);
2968
3041
  }
2969
3042
 
3043
+ .pb-6 {
3044
+ padding-bottom: calc(var(--spacing) * 6);
3045
+ }
3046
+
2970
3047
  .pb-\\[0\\.3125rem\\] {
2971
3048
  padding-bottom: 5px;
2972
3049
  }
@@ -3156,6 +3233,11 @@ var __webpack_modules__ = {
3156
3233
  line-height: var(--leading-relaxed);
3157
3234
  }
3158
3235
 
3236
+ .text-xl {
3237
+ font-size: var(--text-xl);
3238
+ line-height: var(--tw-leading, var(--text-xl--line-height));
3239
+ }
3240
+
3159
3241
  .text-xs {
3160
3242
  font-size: var(--text-xs);
3161
3243
  line-height: var(--tw-leading, 1.6);
@@ -3165,10 +3247,22 @@ var __webpack_modules__ = {
3165
3247
  font-size: 12.8px;
3166
3248
  }
3167
3249
 
3250
+ .text-\\[10px\\] {
3251
+ font-size: 10px;
3252
+ }
3253
+
3254
+ .text-\\[11px\\] {
3255
+ font-size: 11px;
3256
+ }
3257
+
3168
3258
  .text-\\[12px\\] {
3169
3259
  font-size: 12px;
3170
3260
  }
3171
3261
 
3262
+ .text-\\[13px\\] {
3263
+ font-size: 13px;
3264
+ }
3265
+
3172
3266
  .leading-\\[1\\.3\\] {
3173
3267
  --tw-leading: 1.3;
3174
3268
  line-height: 1.3;
@@ -3249,6 +3343,11 @@ var __webpack_modules__ = {
3249
3343
  letter-spacing: -.05em;
3250
3344
  }
3251
3345
 
3346
+ .tracking-wide {
3347
+ --tw-tracking: .01em;
3348
+ letter-spacing: .01em;
3349
+ }
3350
+
3252
3351
  .tracking-widest {
3253
3352
  --tw-tracking: .03em;
3254
3353
  letter-spacing: .03em;
@@ -3278,6 +3377,10 @@ var __webpack_modules__ = {
3278
3377
  white-space: pre-line;
3279
3378
  }
3280
3379
 
3380
+ .text-\\[\\#44444c\\] {
3381
+ color: #44444c;
3382
+ }
3383
+
3281
3384
  .text-\\[\\#64646c\\] {
3282
3385
  color: #64646c;
3283
3386
  }
@@ -3426,6 +3529,36 @@ var __webpack_modules__ = {
3426
3529
  color: var(--color-white);
3427
3530
  }
3428
3531
 
3532
+ .text-white\\/55 {
3533
+ color: #ffffff8c;
3534
+ }
3535
+
3536
+ @supports (color: color-mix(in lab, red, red)) {
3537
+ .text-white\\/55 {
3538
+ color: color-mix(in oklab, var(--color-white) 55%, transparent);
3539
+ }
3540
+ }
3541
+
3542
+ .text-white\\/70 {
3543
+ color: #ffffffb3;
3544
+ }
3545
+
3546
+ @supports (color: color-mix(in lab, red, red)) {
3547
+ .text-white\\/70 {
3548
+ color: color-mix(in oklab, var(--color-white) 70%, transparent);
3549
+ }
3550
+ }
3551
+
3552
+ .text-white\\/75 {
3553
+ color: #ffffffbf;
3554
+ }
3555
+
3556
+ @supports (color: color-mix(in lab, red, red)) {
3557
+ .text-white\\/75 {
3558
+ color: color-mix(in oklab, var(--color-white) 75%, transparent);
3559
+ }
3560
+ }
3561
+
3429
3562
  .text-white\\/80 {
3430
3563
  color: #fffc;
3431
3564
  }
@@ -3436,6 +3569,16 @@ var __webpack_modules__ = {
3436
3569
  }
3437
3570
  }
3438
3571
 
3572
+ .text-white\\/90 {
3573
+ color: #ffffffe6;
3574
+ }
3575
+
3576
+ @supports (color: color-mix(in lab, red, red)) {
3577
+ .text-white\\/90 {
3578
+ color: color-mix(in oklab, var(--color-white) 90%, transparent);
3579
+ }
3580
+ }
3581
+
3439
3582
  .uppercase {
3440
3583
  text-transform: uppercase;
3441
3584
  }
@@ -3478,6 +3621,10 @@ var __webpack_modules__ = {
3478
3621
  opacity: .6;
3479
3622
  }
3480
3623
 
3624
+ .opacity-65 {
3625
+ opacity: .65;
3626
+ }
3627
+
3481
3628
  .opacity-80 {
3482
3629
  opacity: .8;
3483
3630
  }
@@ -3504,11 +3651,6 @@ var __webpack_modules__ = {
3504
3651
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3505
3652
  }
3506
3653
 
3507
- .shadow-\\[0_0_0_1px_rgba\\(0\\,0\\,0\\,0\\.12\\)\\,0_4px_12px_rgba\\(0\\,0\\,0\\,0\\.3\\)\\] {
3508
- --tw-shadow: 0 0 0 1px var(--tw-shadow-color, #0000001f), 0 4px 12px var(--tw-shadow-color, #0000004d);
3509
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3510
- }
3511
-
3512
3654
  .shadow-\\[0_0_0_1px_var\\(--sidebar-border\\)\\] {
3513
3655
  --tw-shadow: 0 0 0 1px var(--tw-shadow-color, var(--sidebar-border));
3514
3656
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -3519,6 +3661,11 @@ var __webpack_modules__ = {
3519
3661
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3520
3662
  }
3521
3663
 
3664
+ .shadow-\\[0_2px_10px_rgba\\(0\\,0\\,0\\,0\\.25\\)\\] {
3665
+ --tw-shadow: 0 2px 10px var(--tw-shadow-color, #00000040);
3666
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3667
+ }
3668
+
3522
3669
  .shadow-\\[0_4px_12px_rgba\\(51\\,51\\,65\\,0\\.12\\)\\] {
3523
3670
  --tw-shadow: 0 4px 12px var(--tw-shadow-color, #3333411f);
3524
3671
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -3589,11 +3736,15 @@ var __webpack_modules__ = {
3589
3736
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3590
3737
  }
3591
3738
 
3592
- .ring-3 {
3739
+ .ring-3, .ring-\\[3px\\] {
3593
3740
  --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
3594
3741
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3595
3742
  }
3596
3743
 
3744
+ .ring-\\[\\#5B6BFF\\] {
3745
+ --tw-ring-color: #5b6bff;
3746
+ }
3747
+
3597
3748
  .ring-background {
3598
3749
  --tw-ring-color: var(--background);
3599
3750
  }
@@ -3626,6 +3777,11 @@ var __webpack_modules__ = {
3626
3777
  --tw-ring-color: var(--sidebar-ring);
3627
3778
  }
3628
3779
 
3780
+ .ring-offset-0 {
3781
+ --tw-ring-offset-width: 0px;
3782
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
3783
+ }
3784
+
3629
3785
  .ring-offset-background {
3630
3786
  --tw-ring-offset-color: var(--background);
3631
3787
  }
@@ -3667,12 +3823,6 @@ var __webpack_modules__ = {
3667
3823
  filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
3668
3824
  }
3669
3825
 
3670
- .drop-shadow-sm {
3671
- --tw-drop-shadow-size: drop-shadow(0 1px 2px var(--tw-drop-shadow-color, #00000026));
3672
- --tw-drop-shadow: drop-shadow(var(--drop-shadow-sm));
3673
- filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
3674
- }
3675
-
3676
3826
  .filter {
3677
3827
  filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
3678
3828
  }
@@ -3904,6 +4054,14 @@ var __webpack_modules__ = {
3904
4054
  scrollbar-width: none;
3905
4055
  }
3906
4056
 
4057
+ .\\[text-shadow\\:0_1px_4px_rgba\\(0\\,0\\,0\\,\\.6\\)\\] {
4058
+ text-shadow: 0 1px 4px #0009;
4059
+ }
4060
+
4061
+ .paused {
4062
+ animation-play-state: paused;
4063
+ }
4064
+
3907
4065
  .running {
3908
4066
  animation-play-state: running;
3909
4067
  }
@@ -5049,6 +5207,10 @@ var __webpack_modules__ = {
5049
5207
  background-color: #e3e3e8;
5050
5208
  }
5051
5209
 
5210
+ .hover\\:bg-\\[\\#f3f3f5\\]:hover {
5211
+ background-color: #f3f3f5;
5212
+ }
5213
+
5052
5214
  .hover\\:bg-\\[color-mix\\(in_oklch\\,var\\(--secondary\\)\\,var\\(--foreground\\)_5\\%\\)\\]:hover {
5053
5215
  background-color: var(--secondary);
5054
5216
  }
@@ -5137,16 +5299,6 @@ var __webpack_modules__ = {
5137
5299
  }
5138
5300
  }
5139
5301
 
5140
- .hover\\:bg-primary\\/90:hover {
5141
- background-color: var(--primary);
5142
- }
5143
-
5144
- @supports (color: color-mix(in lab, red, red)) {
5145
- .hover\\:bg-primary\\/90:hover {
5146
- background-color: color-mix(in oklab, var(--primary) 90%, transparent);
5147
- }
5148
- }
5149
-
5150
5302
  .hover\\:bg-secondary--hover:hover {
5151
5303
  background-color: var(--secondary--hover);
5152
5304
  }
@@ -5155,6 +5307,16 @@ var __webpack_modules__ = {
5155
5307
  background-color: var(--sidebar-accent);
5156
5308
  }
5157
5309
 
5310
+ .hover\\:bg-white\\/20:hover {
5311
+ background-color: #fff3;
5312
+ }
5313
+
5314
+ @supports (color: color-mix(in lab, red, red)) {
5315
+ .hover\\:bg-white\\/20:hover {
5316
+ background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
5317
+ }
5318
+ }
5319
+
5158
5320
  .hover\\:text-accent-foreground:hover {
5159
5321
  color: var(--accent-foreground);
5160
5322
  }
@@ -5436,6 +5598,10 @@ var __webpack_modules__ = {
5436
5598
  border-color: var(--v-button-white);
5437
5599
  }
5438
5600
 
5601
+ .active\\:bg-\\[\\#ededed\\]:active {
5602
+ background-color: #ededed;
5603
+ }
5604
+
5439
5605
  .active\\:bg-background-base-3:active {
5440
5606
  background-color: var(--v-backgrounds-base-3);
5441
5607
  }
@@ -5474,6 +5640,16 @@ var __webpack_modules__ = {
5474
5640
  background-color: var(--sidebar-accent);
5475
5641
  }
5476
5642
 
5643
+ .active\\:bg-white\\/25:active {
5644
+ background-color: #ffffff40;
5645
+ }
5646
+
5647
+ @supports (color: color-mix(in lab, red, red)) {
5648
+ .active\\:bg-white\\/25:active {
5649
+ background-color: color-mix(in oklab, var(--color-white) 25%, transparent);
5650
+ }
5651
+ }
5652
+
5477
5653
  .active\\:text-icons-blue:active {
5478
5654
  color: var(--v-icons-blue);
5479
5655
  }
@@ -7057,20 +7233,20 @@ var __webpack_modules__ = {
7057
7233
  height: 24px;
7058
7234
  }
7059
7235
 
7060
- .data-\\[size\\=default\\]\\:h-\\[18\\.4px\\][data-size="default"] {
7061
- height: 18.4px;
7236
+ .data-\\[size\\=default\\]\\:h-\\[calc\\(var\\(--spacing\\)\\*4\\.6\\)\\][data-size="default"] {
7237
+ height: calc(var(--spacing) * 4.6);
7062
7238
  }
7063
7239
 
7064
7240
  .data-\\[size\\=default\\]\\:min-h-20[data-size="default"] {
7065
7241
  min-height: calc(var(--spacing) * 20);
7066
7242
  }
7067
7243
 
7068
- .data-\\[size\\=default\\]\\:w-\\[2\\.25rem\\][data-size="default"] {
7069
- width: 36px;
7244
+ .data-\\[size\\=default\\]\\:w-8[data-size="default"] {
7245
+ width: calc(var(--spacing) * 8);
7070
7246
  }
7071
7247
 
7072
- .data-\\[size\\=default\\]\\:w-\\[32px\\][data-size="default"] {
7073
- width: 32px;
7248
+ .data-\\[size\\=default\\]\\:w-\\[2\\.25rem\\][data-size="default"] {
7249
+ width: 36px;
7074
7250
  }
7075
7251
 
7076
7252
  .data-\\[size\\=default\\]\\:max-w-xs[data-size="default"] {
@@ -7150,6 +7326,10 @@ var __webpack_modules__ = {
7150
7326
  height: calc(var(--spacing) * 6);
7151
7327
  }
7152
7328
 
7329
+ .data-\\[size\\=sm\\]\\:h-3\\.5[data-size="sm"] {
7330
+ height: calc(var(--spacing) * 3.5);
7331
+ }
7332
+
7153
7333
  .data-\\[size\\=sm\\]\\:h-7[data-size="sm"] {
7154
7334
  height: calc(var(--spacing) * 7);
7155
7335
  }
@@ -7162,20 +7342,16 @@ var __webpack_modules__ = {
7162
7342
  height: 30px;
7163
7343
  }
7164
7344
 
7165
- .data-\\[size\\=sm\\]\\:h-\\[14px\\][data-size="sm"] {
7166
- height: 14px;
7167
- }
7168
-
7169
7345
  .data-\\[size\\=sm\\]\\:min-h-\\[3\\.75rem\\][data-size="sm"] {
7170
7346
  min-height: 60px;
7171
7347
  }
7172
7348
 
7173
- .data-\\[size\\=sm\\]\\:w-\\[1\\.75rem\\][data-size="sm"] {
7174
- width: 28px;
7349
+ .data-\\[size\\=sm\\]\\:w-6[data-size="sm"] {
7350
+ width: calc(var(--spacing) * 6);
7175
7351
  }
7176
7352
 
7177
- .data-\\[size\\=sm\\]\\:w-\\[24px\\][data-size="sm"] {
7178
- width: 24px;
7353
+ .data-\\[size\\=sm\\]\\:w-\\[1\\.75rem\\][data-size="sm"] {
7354
+ width: 28px;
7179
7355
  }
7180
7356
 
7181
7357
  .data-\\[size\\=sm\\]\\:max-w-xs[data-size="sm"] {
@@ -9788,6 +9964,46 @@ var __webpack_modules__ = {
9788
9964
  --v-backgrounds-green-gradient: radial-gradient(ellipse 50% 50% at 50% 50%, var(--v-backgrounds-green) 0%, var(--v-backgrounds-green-gradient-end) 100%);
9789
9965
  }
9790
9966
 
9967
+ @keyframes ar-panel-in {
9968
+ 0% {
9969
+ opacity: 0;
9970
+ transform: translateY(12px);
9971
+ }
9972
+
9973
+ to {
9974
+ opacity: 1;
9975
+ transform: none;
9976
+ }
9977
+ }
9978
+
9979
+ @keyframes ar-panel-out {
9980
+ 0% {
9981
+ opacity: 1;
9982
+ transform: none;
9983
+ }
9984
+
9985
+ to {
9986
+ opacity: 0;
9987
+ transform: translateY(16px);
9988
+ }
9989
+ }
9990
+
9991
+ .ar-panel[data-state="entering"] {
9992
+ animation: .22s cubic-bezier(0, 0, .2, 1) .12s both ar-panel-in;
9993
+ }
9994
+
9995
+ .ar-panel[data-state="exiting"] {
9996
+ pointer-events: none;
9997
+ animation: .15s cubic-bezier(.4, 0, 1, 1) both ar-panel-out;
9998
+ }
9999
+
10000
+ @media (prefers-reduced-motion: reduce) {
10001
+ .ar-panel[data-state] {
10002
+ animation-duration: 1ms;
10003
+ animation-delay: 0s;
10004
+ }
10005
+ }
10006
+
9791
10007
  @property --tw-translate-x {
9792
10008
  syntax: "*";
9793
10009
  inherits: false;
@@ -10277,7 +10493,7 @@ var __webpack_modules__ = {
10277
10493
  Uu: ()=>createArWidgetSession,
10278
10494
  a4: ()=>getHandoffTokenDigest
10279
10495
  });
10280
- var _vizbl_api_node__rspack_import_0 = __webpack_require__("../api/dist/gen/node/index.js");
10496
+ var _vizbl_api__rspack_import_0 = __webpack_require__("../api/dist/gen/index.js");
10281
10497
  const WIDGET_SESSION_TOKEN_HEADER = 'x-widget-session-token';
10282
10498
  const DEFAULT_REFRESH_THRESHOLD_MS = 30000;
10283
10499
  const ALLOWED_PRODUCT_TYPES = new Set([
@@ -10300,7 +10516,7 @@ var __webpack_modules__ = {
10300
10516
  this.continued = options.continued ?? false;
10301
10517
  this.apiBaseUrl = options.apiBaseUrl;
10302
10518
  this.apiKey = options.apiKey;
10303
- this.issueWidgetToken = options.issueWidgetToken ?? _vizbl_api_node__rspack_import_0.MNX;
10519
+ this.issueWidgetToken = options.issueWidgetToken ?? _vizbl_api__rspack_import_0.MNX;
10304
10520
  this.now = options.now ?? Date.now;
10305
10521
  this.refreshThresholdMs = options.refreshThresholdMs ?? DEFAULT_REFRESH_THRESHOLD_MS;
10306
10522
  this.session = this.toSnapshot(activationData);
@@ -10371,7 +10587,7 @@ var __webpack_modules__ = {
10371
10587
  };
10372
10588
  const normalizedInitialToken = initialWidgetSessionToken?.trim();
10373
10589
  if (normalizedInitialToken) try {
10374
- const refreshed = await (0, _vizbl_api_node__rspack_import_0.MNX)({
10590
+ const refreshed = await (0, _vizbl_api__rspack_import_0.MNX)({
10375
10591
  mode: 'ar-viewer',
10376
10592
  token: normalizedInitialToken
10377
10593
  }, requestConfig);
@@ -10383,7 +10599,7 @@ var __webpack_modules__ = {
10383
10599
  } catch (error) {
10384
10600
  if (signal?.aborted) throw error;
10385
10601
  }
10386
- const activation = await (0, _vizbl_api_node__rspack_import_0.tOZ)({
10602
+ const activation = await (0, _vizbl_api__rspack_import_0.tOZ)({
10387
10603
  mode: 'ar-viewer'
10388
10604
  }, requestConfig);
10389
10605
  if ('string' != typeof activation.productType || !ALLOWED_PRODUCT_TYPES.has(activation.productType)) throw new TypeError('The API key is not enabled for Core AR');
@@ -10439,10 +10655,58 @@ var __webpack_modules__ = {
10439
10655
  return session;
10440
10656
  }
10441
10657
  },
10658
+ "./src/ar/runtime-failure.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
10659
+ __webpack_require__.d(__webpack_exports__, {
10660
+ W: ()=>classifyArRuntimeFailure
10661
+ });
10662
+ function classifyArRuntimeFailure(error) {
10663
+ if (error && 'object' == typeof error && 'name' in error) {
10664
+ const name = error.name;
10665
+ if ('NotAllowedError' === name || 'SecurityError' === name) return 'camera-denied';
10666
+ if ('NotSupportedError' === name) return 'unsupported';
10667
+ }
10668
+ return 'error';
10669
+ }
10670
+ },
10671
+ "./src/ar/session-prewarm.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
10672
+ __webpack_require__.d(__webpack_exports__, {
10673
+ YP: ()=>prewarmArSession,
10674
+ oP: ()=>requestArMotionPermission
10675
+ });
10676
+ var platform = __webpack_require__("./src/lib/platform.ts");
10677
+ var backend_policy = __webpack_require__("./src/ar/tracker/backend-policy.ts");
10678
+ let prewarmed = false;
10679
+ function requestArMotionPermission() {
10680
+ const motionEvent = globalThis.DeviceMotionEvent;
10681
+ if ('function' != typeof motionEvent?.requestPermission) return;
10682
+ try {
10683
+ motionEvent.requestPermission().catch(()=>void 0);
10684
+ } catch {}
10685
+ }
10686
+ function prewarmArSession({ backend } = {}) {
10687
+ if ("u" < typeof window || prewarmed) return;
10688
+ if ('desktop' === (0, platform.U_)()) return;
10689
+ prewarmed = true;
10690
+ Promise.all([
10691
+ __webpack_require__.e("191"),
10692
+ __webpack_require__.e("552")
10693
+ ]).then(__webpack_require__.bind(__webpack_require__, "./src/root.tsx")).catch(()=>void 0);
10694
+ willRunEighthWall(backend ?? null).then((eighthWall)=>{
10695
+ if (!eighthWall) return;
10696
+ return Promise.resolve().then(__webpack_require__.bind(__webpack_require__, "./src/ar/tracker/eighth-wall-surface-tracker.ts")).then(({ loadEighthWallEngine })=>loadEighthWallEngine());
10697
+ }).catch(()=>void 0);
10698
+ }
10699
+ async function willRunEighthWall(backend) {
10700
+ if (backend) return '8thwall' === backend;
10701
+ if ((0, platform.N0)()) return false;
10702
+ return !await (0, backend_policy.f)();
10703
+ }
10704
+ },
10442
10705
  "./src/ar/tracker/auto-surface-tracker.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
10443
10706
  __webpack_require__.d(__webpack_exports__, {
10444
10707
  f: ()=>AutoSurfaceTracker
10445
10708
  });
10709
+ var runtime_failure = __webpack_require__("./src/ar/runtime-failure.ts");
10446
10710
  var tracker_backend = __webpack_require__("./src/ar/tracker/tracker-backend.ts");
10447
10711
  class AutoSurfaceTracker {
10448
10712
  options;
@@ -10459,11 +10723,17 @@ var __webpack_modules__ = {
10459
10723
  }
10460
10724
  }
10461
10725
  async startSession(options) {
10462
- const tracker = await this.resolve();
10463
- return tracker.startSession(options);
10726
+ const trackers = await this.resolve();
10727
+ for(let index = 0; index < trackers.length; index += 1)try {
10728
+ return await trackers[index].startSession(options);
10729
+ } catch (error) {
10730
+ if (index === trackers.length - 1 || 'camera-denied' === (0, runtime_failure.W)(error)) throw error;
10731
+ this.resolution = Promise.resolve(trackers.slice(index + 1));
10732
+ }
10733
+ throw new Error('AR is not available on this device.');
10464
10734
  }
10465
10735
  resolve() {
10466
- if (!this.resolution) this.resolution = (0, tracker_backend.U4)(this.options).catch((error)=>{
10736
+ if (!this.resolution) this.resolution = (0, tracker_backend.Tn)(this.options).catch((error)=>{
10467
10737
  this.resolution = null;
10468
10738
  throw error;
10469
10739
  });
@@ -10473,21 +10743,23 @@ var __webpack_modules__ = {
10473
10743
  },
10474
10744
  "./src/ar/tracker/backend-policy.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
10475
10745
  __webpack_require__.d(__webpack_exports__, {
10476
- AY: ()=>AR_TRACKING_BACKENDS,
10477
- HE: ()=>preferredArBackend,
10478
- yR: ()=>isAndroidChromeOrEdge
10746
+ A: ()=>AR_TRACKING_BACKENDS,
10747
+ f: ()=>supportsImmersiveAr
10479
10748
  });
10480
10749
  const AR_TRACKING_BACKENDS = [
10481
10750
  'webxr',
10482
10751
  '8thwall'
10483
10752
  ];
10484
- function isAndroidChromeOrEdge(userAgent = navigator?.userAgent ?? '') {
10485
- if (!/Android/i.test(userAgent)) return false;
10486
- if (/SamsungBrowser|OPR\/|Opera|Firefox|FxiOS|UCBrowser|MiuiBrowser|YaBrowser|DuckDuckGo/i.test(userAgent)) return false;
10487
- return /EdgA|Chrome\//i.test(userAgent);
10753
+ function getNavigatorXr() {
10754
+ if ("u" < typeof navigator) return;
10755
+ return navigator.xr;
10488
10756
  }
10489
- function preferredArBackend(userAgent) {
10490
- return isAndroidChromeOrEdge(userAgent) ? 'webxr' : '8thwall';
10757
+ async function supportsImmersiveAr(xr = getNavigatorXr()) {
10758
+ try {
10759
+ return await xr?.isSessionSupported('immersive-ar') ?? false;
10760
+ } catch {
10761
+ return false;
10762
+ }
10491
10763
  }
10492
10764
  },
10493
10765
  "./src/ar/tracker/eighth-wall-hit.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -10698,6 +10970,7 @@ var __webpack_modules__ = {
10698
10970
  var external_three_ = __webpack_require__("three");
10699
10971
  var platform = __webpack_require__("./src/lib/platform.ts");
10700
10972
  var eighth_wall_hit = __webpack_require__("./src/ar/tracker/eighth-wall-hit.ts");
10973
+ var surface_tracker = __webpack_require__("./src/ar/tracker/surface-tracker.ts");
10701
10974
  const EIGHTH_WALL_ENGINE_URL = 'https://8wall.vizbl.com/external/xr/xr.js';
10702
10975
  const ENGINE_LOAD_TIMEOUT_MS = 30000;
10703
10976
  const CAMERA_FEED_Z_INDEX = 2147482000;
@@ -10708,7 +10981,11 @@ var __webpack_modules__ = {
10708
10981
  'DETECTED_SURFACE'
10709
10982
  ];
10710
10983
  let enginePromise = null;
10711
- function loadEighthWallEngine(url = EIGHTH_WALL_ENGINE_URL, timeoutMs = ENGINE_LOAD_TIMEOUT_MS) {
10984
+ function resolveEighthWallEngineUrl() {
10985
+ if ("u" < typeof window) return EIGHTH_WALL_ENGINE_URL;
10986
+ return window.XR8_ENGINE_URL ?? EIGHTH_WALL_ENGINE_URL;
10987
+ }
10988
+ function loadEighthWallEngine(url = resolveEighthWallEngineUrl(), timeoutMs = ENGINE_LOAD_TIMEOUT_MS) {
10712
10989
  if ("u" < typeof window) return Promise.reject(new Error('The 8th Wall engine needs a browser.'));
10713
10990
  const engineWindow = window;
10714
10991
  if (engineWindow.XR8) return Promise.resolve(engineWindow.XR8);
@@ -10739,24 +11016,6 @@ var __webpack_modules__ = {
10739
11016
  });
10740
11017
  return enginePromise;
10741
11018
  }
10742
- function copyPose(pose) {
10743
- return {
10744
- orientation: {
10745
- ...pose.orientation
10746
- },
10747
- position: {
10748
- ...pose.position
10749
- }
10750
- };
10751
- }
10752
- function createWorldLockedAnchor(hit) {
10753
- const pose = copyPose(hit.pose);
10754
- return {
10755
- delete: ()=>void 0,
10756
- getPose: ()=>pose,
10757
- pose
10758
- };
10759
- }
10760
11019
  class EighthWallTrackingSession {
10761
11020
  nativeSession;
10762
11021
  canvas;
@@ -10775,6 +11034,7 @@ var __webpack_modules__ = {
10775
11034
  threeScene = null;
10776
11035
  tracking = false;
10777
11036
  bridge = null;
11037
+ guessesWalls = true;
10778
11038
  constructor(nativeSession, canvas, mechanic, onResize){
10779
11039
  this.nativeSession = nativeSession;
10780
11040
  this.canvas = canvas;
@@ -10875,7 +11135,7 @@ var __webpack_modules__ = {
10875
11135
  return this.engaged && this.tracking;
10876
11136
  }
10877
11137
  async createAnchor(hit) {
10878
- return createWorldLockedAnchor(hit);
11138
+ return (0, surface_tracker.em)(hit.pose);
10879
11139
  }
10880
11140
  captureGlobalThree(hadGlobalThree, previousGlobalThree) {
10881
11141
  this.hadGlobalThree = hadGlobalThree;
@@ -10919,7 +11179,7 @@ var __webpack_modules__ = {
10919
11179
  async startSession(options = {}) {
10920
11180
  const engineWindow = window;
10921
11181
  const load = this.options.loadEngine ?? loadEighthWallEngine;
10922
- const xr8 = await load(this.options.engineUrl ?? engineWindow.XR8_ENGINE_URL ?? EIGHTH_WALL_ENGINE_URL);
11182
+ const xr8 = await load(this.options.engineUrl ?? resolveEighthWallEngineUrl());
10923
11183
  await xr8.loadChunk?.('slam').catch(()=>void 0);
10924
11184
  if (!xr8.Threejs?.pipelineModule) throw new Error('The 8th Wall build is missing its three.js module.');
10925
11185
  const hadGlobalThree = 'THREE' in engineWindow;
@@ -10976,8 +11236,30 @@ var __webpack_modules__ = {
10976
11236
  "./src/ar/tracker/surface-tracker.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
10977
11237
  __webpack_require__.d(__webpack_exports__, {
10978
11238
  Q3: ()=>classifySurfaceByNormal,
10979
- aq: ()=>isVerticalWallHit
11239
+ aq: ()=>isVerticalWallHit,
11240
+ em: ()=>createWorldLockedAnchor,
11241
+ gD: ()=>replaceDetachedAnchor
10980
11242
  });
11243
+ function createWorldLockedAnchor(at) {
11244
+ const pose = {
11245
+ orientation: {
11246
+ ...at.orientation
11247
+ },
11248
+ position: {
11249
+ ...at.position
11250
+ }
11251
+ };
11252
+ return {
11253
+ delete: ()=>void 0,
11254
+ getPose: ()=>pose,
11255
+ pose
11256
+ };
11257
+ }
11258
+ function replaceDetachedAnchor(anchor, lastPose) {
11259
+ if (!anchor.isDetached?.()) return null;
11260
+ anchor.delete();
11261
+ return createWorldLockedAnchor(lastPose ?? anchor.pose);
11262
+ }
10981
11263
  const WALL_VERTICAL_NORMAL_MAX_Y = 0.25;
10982
11264
  function isVerticalWallHit(hit) {
10983
11265
  return hit?.kind === 'wall' && Math.abs(hit.normal.y) <= WALL_VERTICAL_NORMAL_MAX_Y;
@@ -10990,17 +11272,18 @@ var __webpack_modules__ = {
10990
11272
  },
10991
11273
  "./src/ar/tracker/tracker-backend.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
10992
11274
  __webpack_require__.d(__webpack_exports__, {
11275
+ Tn: ()=>resolveArTrackers,
10993
11276
  Sf: ()=>detectSupportedArBackends,
10994
11277
  U4: ()=>createArTracker,
10995
11278
  rZ: ()=>createArTrackerRegistry
10996
11279
  });
10997
- var _backend_policy__rspack_import_2 = __webpack_require__("./src/ar/tracker/backend-policy.ts");
10998
- var _eighth_wall_surface_tracker__rspack_import_0 = __webpack_require__("./src/ar/tracker/eighth-wall-surface-tracker.ts");
10999
- var _webxr_surface_tracker__rspack_import_1 = __webpack_require__("./src/ar/tracker/webxr-surface-tracker.ts");
11280
+ var backend_policy = __webpack_require__("./src/ar/tracker/backend-policy.ts");
11281
+ var eighth_wall_surface_tracker = __webpack_require__("./src/ar/tracker/eighth-wall-surface-tracker.ts");
11282
+ var webxr_surface_tracker = __webpack_require__("./src/ar/tracker/webxr-surface-tracker.ts");
11000
11283
  function createArTrackerRegistry() {
11001
11284
  return {
11002
- '8thwall': new _eighth_wall_surface_tracker__rspack_import_0.VU(),
11003
- webxr: new _webxr_surface_tracker__rspack_import_1.c()
11285
+ '8thwall': new eighth_wall_surface_tracker.VU(),
11286
+ webxr: new webxr_surface_tracker.c()
11004
11287
  };
11005
11288
  }
11006
11289
  async function detectSupportedArBackends(registry = createArTrackerRegistry()) {
@@ -11013,30 +11296,34 @@ var __webpack_modules__ = {
11013
11296
  webxr: webxr
11014
11297
  };
11015
11298
  }
11016
- async function createArTracker({ backend, registry = createArTrackerRegistry(), userAgent } = {}) {
11017
- const preferred = backend ?? (0, _backend_policy__rspack_import_2.HE)(userAgent);
11299
+ async function resolveArTrackers({ backend, registry = createArTrackerRegistry(), webview = false } = {}) {
11018
11300
  const order = backend ? [
11019
11301
  backend
11020
- ] : [
11021
- preferred,
11022
- ..._backend_policy__rspack_import_2.AY.filter((id)=>id !== preferred)
11023
- ];
11302
+ ] : webview ? [
11303
+ 'webxr'
11304
+ ] : backend_policy.A;
11305
+ const supported = [];
11024
11306
  for (const id of order){
11025
11307
  const tracker = registry[id];
11026
- const supported = await tracker.isSupported().catch(()=>false);
11027
- if (supported) return tracker;
11308
+ if (await tracker.isSupported().catch(()=>false)) supported.push(tracker);
11028
11309
  }
11310
+ if (supported.length) return supported;
11029
11311
  if ("u" > typeof window && !window.isSecureContext) throw new Error('AR needs a secure connection. Open this page over HTTPS or localhost.');
11030
11312
  throw new Error('AR is not available on this device.');
11031
11313
  }
11314
+ async function createArTracker(options = {}) {
11315
+ const [tracker] = await resolveArTrackers(options);
11316
+ return tracker;
11317
+ }
11032
11318
  },
11033
11319
  "./src/ar/tracker/webxr-surface-tracker.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
11034
11320
  __webpack_require__.d(__webpack_exports__, {
11035
- Y: ()=>asXrFrame,
11036
- c: ()=>WebXrSurfaceTracker
11321
+ c: ()=>WebXrSurfaceTracker,
11322
+ Y: ()=>asXrFrame
11037
11323
  });
11038
- var _lib_debug_flags__rspack_import_1 = __webpack_require__("./src/lib/debug-flags.ts");
11039
- var _surface_tracker__rspack_import_0 = __webpack_require__("./src/ar/tracker/surface-tracker.ts");
11324
+ var debug_flags = __webpack_require__("./src/lib/debug-flags.ts");
11325
+ var backend_policy = __webpack_require__("./src/ar/tracker/backend-policy.ts");
11326
+ var surface_tracker = __webpack_require__("./src/ar/tracker/surface-tracker.ts");
11040
11327
  function asXrFrame(frame) {
11041
11328
  return frame;
11042
11329
  }
@@ -11077,7 +11364,7 @@ var __webpack_modules__ = {
11077
11364
  z: matrix[6] ?? 0
11078
11365
  });
11079
11366
  const surfaceHit = {
11080
- kind: (0, _surface_tracker__rspack_import_0.Q3)(normal),
11367
+ kind: (0, surface_tracker.Q3)(normal),
11081
11368
  nativeHit: hit,
11082
11369
  normal,
11083
11370
  pose: {
@@ -11085,16 +11372,17 @@ var __webpack_modules__ = {
11085
11372
  position: copyVector3(position)
11086
11373
  }
11087
11374
  };
11088
- if ('wall' === surfaceHit.kind && !(0, _surface_tracker__rspack_import_0.aq)(surfaceHit)) return null;
11375
+ if ('wall' === surfaceHit.kind && !(0, surface_tracker.aq)(surfaceHit)) return null;
11089
11376
  return surfaceHit;
11090
11377
  }
11091
11378
  let reportedPoseFailure = false;
11092
- function readPose(frame, readSpace, baseSpace) {
11379
+ function readPose(frame, readSpace, baseSpace, onDetached) {
11093
11380
  if (!frame.getPose) return null;
11094
11381
  try {
11095
11382
  return frame.getPose(readSpace(), baseSpace) ?? null;
11096
11383
  } catch (error) {
11097
- if ((0, _lib_debug_flags__rspack_import_1.Q0)() && !reportedPoseFailure) {
11384
+ onDetached?.();
11385
+ if ((0, debug_flags.Q0)() && !reportedPoseFailure) {
11098
11386
  reportedPoseFailure = true;
11099
11387
  console.warn('[react-ar] a WebXR space stopped answering; treating it as lost tracking.', error);
11100
11388
  }
@@ -11104,7 +11392,7 @@ var __webpack_modules__ = {
11104
11392
  function matchesMechanic(hit, mechanic) {
11105
11393
  switch(mechanic){
11106
11394
  case 'wall':
11107
- return (0, _surface_tracker__rspack_import_0.aq)(hit);
11395
+ return (0, surface_tracker.aq)(hit);
11108
11396
  case 'ceiling':
11109
11397
  return 'ceiling' === hit.kind;
11110
11398
  case 'floor':
@@ -11168,6 +11456,7 @@ var __webpack_modules__ = {
11168
11456
  const nativeHit = hit.nativeHit;
11169
11457
  if (!nativeHit?.createAnchor) throw new Error('WebXR anchors are unavailable.');
11170
11458
  const nativeAnchor = await nativeHit.createAnchor();
11459
+ let detached = false;
11171
11460
  return {
11172
11461
  delete: ()=>{
11173
11462
  try {
@@ -11175,9 +11464,13 @@ var __webpack_modules__ = {
11175
11464
  } catch {}
11176
11465
  },
11177
11466
  getPose: (frame)=>{
11178
- const anchorPose = readPose(frame, ()=>nativeAnchor.anchorSpace, this.floorSpace);
11467
+ if (detached) return null;
11468
+ const anchorPose = readPose(frame, ()=>nativeAnchor.anchorSpace, this.floorSpace, ()=>{
11469
+ detached = true;
11470
+ });
11179
11471
  return anchorPose ? poseFromTransform(anchorPose.transform) : null;
11180
11472
  },
11473
+ isDetached: ()=>detached,
11181
11474
  nativeAnchor,
11182
11475
  pose: copyPose(hit.pose)
11183
11476
  };
@@ -11207,7 +11500,7 @@ var __webpack_modules__ = {
11207
11500
  this.xrSystem = xrSystem;
11208
11501
  }
11209
11502
  async isSupported() {
11210
- return this.xrSystem?.isSessionSupported('immersive-ar') ?? false;
11503
+ return (0, backend_policy.f)(this.xrSystem);
11211
11504
  }
11212
11505
  async startSession(options = {}) {
11213
11506
  if (!this.xrSystem) throw new Error('WebXR immersive AR is not supported.');
@@ -11247,8 +11540,7 @@ var __webpack_modules__ = {
11247
11540
  hs: ()=>resolveArBrand
11248
11541
  });
11249
11542
  const env = {
11250
- API_BASE_URL: "https://api.neurodyn.ai/v1/",
11251
- NODE_API_BASE_URL: "https://api.neurodyn.ai/",
11543
+ API_BASE_URL: "https://api.neurodyn.ai/",
11252
11544
  TENANTS: {
11253
11545
  arizo: {
11254
11546
  VIEWER_URL: "https://integrations.arizo.ru/room-viewer"
@@ -11261,12 +11553,10 @@ var __webpack_modules__ = {
11261
11553
  const DEFAULT_DEV_TENANT_ORIGINS = {
11262
11554
  arizo: {
11263
11555
  apiOrigin: 'https://api-dev.arizo.ru',
11264
- legacyApiOrigin: 'https://api-dev.arizo.ru/v1',
11265
11556
  viewerOrigin: 'https://integrations-dev.arizo.ru/room-viewer'
11266
11557
  },
11267
11558
  vizbl: {
11268
11559
  apiOrigin: 'https://api-dev.vizbl.com',
11269
- legacyApiOrigin: 'https://api-dev.vizbl.com/v1',
11270
11560
  viewerOrigin: 'https://integrations-dev.vizbl.com/room-viewer'
11271
11561
  }
11272
11562
  };
@@ -11285,7 +11575,7 @@ var __webpack_modules__ = {
11285
11575
  }
11286
11576
  }
11287
11577
  function resolveShowcaseHost(brand) {
11288
- const isDev = Boolean(false) || isPreviewOrigin(env.API_BASE_URL) || isPreviewOrigin(env.NODE_API_BASE_URL) || isPreviewOrigin(env.TENANTS[brand].VIEWER_URL);
11578
+ const isDev = Boolean(false) || isPreviewOrigin(env.API_BASE_URL) || isPreviewOrigin(env.TENANTS[brand].VIEWER_URL);
11289
11579
  if ('arizo' === brand) return isDev ? 'go-dev.arizo.ru' : 'go.arizo.ru';
11290
11580
  return isDev ? 'go-dev.vizbl.com' : 'go.vizbl.com';
11291
11581
  }
@@ -11295,9 +11585,8 @@ var __webpack_modules__ = {
11295
11585
  function createArTenantConfig(brand) {
11296
11586
  const defaults = DEFAULT_DEV_TENANT_ORIGINS[brand];
11297
11587
  return {
11298
- apiOrigin: withDevelopmentFallback(env.NODE_API_BASE_URL, defaults.apiOrigin),
11588
+ apiOrigin: withDevelopmentFallback(env.API_BASE_URL, defaults.apiOrigin),
11299
11589
  brand,
11300
- legacyApiOrigin: withDevelopmentFallback(env.API_BASE_URL, defaults.legacyApiOrigin),
11301
11590
  showcaseHost: resolveShowcaseHost(brand),
11302
11591
  viewerOrigin: withDevelopmentFallback(env.TENANTS[brand].VIEWER_URL, defaults.viewerOrigin)
11303
11592
  };
@@ -11602,11 +11891,11 @@ var __webpack_modules__ = {
11602
11891
  },
11603
11892
  "./src/lib/debug-flags.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
11604
11893
  __webpack_require__.d(__webpack_exports__, {
11605
- Bo: ()=>readArDebugOverride,
11606
11894
  Q0: ()=>isArDebugEnabled,
11607
- R5: ()=>isArDebugPanelRequested
11895
+ R5: ()=>isArDebugPanelRequested,
11896
+ Bo: ()=>readArDebugOverride
11608
11897
  });
11609
- var _ar_tracker_tracker_backend__rspack_import_0 = __webpack_require__("./src/ar/tracker/backend-policy.ts");
11898
+ var backend_policy = __webpack_require__("./src/ar/tracker/backend-policy.ts");
11610
11899
  const AR_DEBUG_PARAM = 'ar-force-webar';
11611
11900
  const AR_DEBUG_PANEL_PARAM = 'ar-debug-panel';
11612
11901
  const NO_OVERRIDE = {
@@ -11629,7 +11918,7 @@ var __webpack_modules__ = {
11629
11918
  if (!isArDebugEnabled()) return NO_OVERRIDE;
11630
11919
  const value = new URLSearchParams(search).get(AR_DEBUG_PARAM);
11631
11920
  if (null === value) return NO_OVERRIDE;
11632
- const backend = _ar_tracker_tracker_backend__rspack_import_0.AY.find((id)=>id === value.trim().toLowerCase());
11921
+ const backend = backend_policy.A.find((id)=>id === value.trim().toLowerCase());
11633
11922
  return {
11634
11923
  backend,
11635
11924
  forcesInPageSession: true
@@ -11729,12 +12018,13 @@ var __webpack_modules__ = {
11729
12018
  },
11730
12019
  "./src/lib/platform.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
11731
12020
  __webpack_require__.d(__webpack_exports__, {
12021
+ N0: ()=>isArWebView,
12022
+ Tw: ()=>getIosMajorVersion,
11732
12023
  U_: ()=>detectArPlatform,
11733
12024
  nc: ()=>supportsArAppClip,
11734
- N0: ()=>isArWebView,
11735
- wz: ()=>resolveArPlatformRoute,
11736
- Tw: ()=>getIosMajorVersion
12025
+ wz: ()=>resolveArPlatformRoute
11737
12026
  });
12027
+ var ua_parser_js__rspack_import_0 = __webpack_require__("ua-parser-js");
11738
12028
  function getNavigatorInfo() {
11739
12029
  if ("u" < typeof navigator) return null;
11740
12030
  return {
@@ -11745,7 +12035,7 @@ var __webpack_modules__ = {
11745
12035
  }
11746
12036
  function detectArPlatform(navigatorInfo = getNavigatorInfo()) {
11747
12037
  if (!navigatorInfo) return 'desktop';
11748
- const osName = new __rspack_external_ua_parser_js_881bf303.UAParser(navigatorInfo.userAgent).getOS().name;
12038
+ const osName = new ua_parser_js__rspack_import_0.UAParser(navigatorInfo.userAgent).getOS().name;
11749
12039
  const isDesktopClassIPad = 'MacIntel' === navigatorInfo.platform && navigatorInfo.maxTouchPoints > 1;
11750
12040
  if ('iOS' === osName || isDesktopClassIPad) return 'ios';
11751
12041
  return 'Android' === osName ? 'android' : 'desktop';
@@ -12033,6 +12323,9 @@ var __webpack_modules__ = {
12033
12323
  three (module) {
12034
12324
  module.exports = __rspack_external_three;
12035
12325
  },
12326
+ "ua-parser-js" (module) {
12327
+ module.exports = __rspack_external_ua_parser_js_881bf303;
12328
+ },
12036
12329
  "../../node_modules/.pnpm/@rsbuild+core@1.7.1/node_modules/@rsbuild/core/compiled/css-loader/api.js" (module) {
12037
12330
  module.exports = function(cssWithMappingToString) {
12038
12331
  var list = [];
@@ -12186,7 +12479,8 @@ var __webpack_modules__ = {
12186
12479
  },
12187
12480
  "../../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs" (__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
12188
12481
  __webpack_require__.d(__webpack_exports__, {
12189
- QP: ()=>twMerge
12482
+ QP: ()=>twMerge,
12483
+ zu: ()=>extendTailwindMerge
12190
12484
  });
12191
12485
  const concatArrays = (array1, array2)=>{
12192
12486
  const combinedArray = new Array(array1.length + array2.length);
@@ -15636,11 +15930,52 @@ var __webpack_modules__ = {
15636
15930
  ]
15637
15931
  };
15638
15932
  };
15933
+ const mergeConfigs = (baseConfig, { cacheSize, prefix, experimentalParseClassName, extend = {}, override = {} })=>{
15934
+ overrideProperty(baseConfig, 'cacheSize', cacheSize);
15935
+ overrideProperty(baseConfig, 'prefix', prefix);
15936
+ overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);
15937
+ overrideConfigProperties(baseConfig.theme, override.theme);
15938
+ overrideConfigProperties(baseConfig.classGroups, override.classGroups);
15939
+ overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);
15940
+ overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);
15941
+ overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);
15942
+ mergeConfigProperties(baseConfig.theme, extend.theme);
15943
+ mergeConfigProperties(baseConfig.classGroups, extend.classGroups);
15944
+ mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);
15945
+ mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);
15946
+ mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');
15947
+ return baseConfig;
15948
+ };
15949
+ const overrideProperty = (baseObject, overrideKey, overrideValue)=>{
15950
+ if (void 0 !== overrideValue) baseObject[overrideKey] = overrideValue;
15951
+ };
15952
+ const overrideConfigProperties = (baseObject, overrideObject)=>{
15953
+ if (overrideObject) for(const key in overrideObject)overrideProperty(baseObject, key, overrideObject[key]);
15954
+ };
15955
+ const mergeConfigProperties = (baseObject, mergeObject)=>{
15956
+ if (mergeObject) for(const key in mergeObject)mergeArrayProperties(baseObject, mergeObject, key);
15957
+ };
15958
+ const mergeArrayProperties = (baseObject, mergeObject, key)=>{
15959
+ const mergeValue = mergeObject[key];
15960
+ if (void 0 !== mergeValue) baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;
15961
+ };
15962
+ const extendTailwindMerge = (configExtension, ...createConfig)=>'function' == typeof configExtension ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(()=>mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);
15639
15963
  const twMerge = /*#__PURE__*/ createTailwindMerge(getDefaultConfig);
15640
15964
  },
15641
- "../api/dist/client-runtime-factory.js" (__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
15965
+ "../api/dist/gen/index.js" (__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
15642
15966
  __webpack_require__.d(__webpack_exports__, {
15643
- q: ()=>createApiClientRuntime
15967
+ T07: ()=>publicApiControllerReadObjectCategories,
15968
+ DFU: ()=>userControllerReadPublicUserProfile,
15969
+ adr: ()=>objectDictionaryControllerReadUserObjectCategories,
15970
+ c03: ()=>publicApiControllerReadObjectTags,
15971
+ qgy: ()=>readPublicObjects,
15972
+ _8U: ()=>objectTagControllerReadObjectTags,
15973
+ Ago: ()=>readObject,
15974
+ b6: ()=>layoutControllerReadLayoutConfig,
15975
+ MNX: ()=>publicApiControllerIssueWidgetToken,
15976
+ ytc: ()=>publicApiControllerReadObjectByTinuuid,
15977
+ avi: ()=>publicApiControllerGetPublicObjects,
15978
+ tOZ: ()=>publicApiControllerActivateCoreAR
15644
15979
  });
15645
15980
  var common_utils_namespaceObject = {};
15646
15981
  __webpack_require__.r(common_utils_namespaceObject);
@@ -18107,20 +18442,9 @@ var __webpack_modules__ = {
18107
18442
  addResponseInterceptorRuntime
18108
18443
  };
18109
18444
  }
18110
- },
18111
- "../api/dist/gen/node/index.js" (__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
18112
- __webpack_require__.d(__webpack_exports__, {
18113
- hov: ()=>legacyAccountControllerSearch,
18114
- b6: ()=>layoutControllerReadLayoutConfig,
18115
- MNX: ()=>publicApiControllerIssueWidgetToken,
18116
- ytc: ()=>publicApiControllerReadObjectByTinuuid,
18117
- avi: ()=>publicApiControllerGetPublicObjects,
18118
- tOZ: ()=>publicApiControllerActivateCoreAR
18119
- });
18120
- var client_runtime_factory = __webpack_require__("../api/dist/client-runtime-factory.js");
18121
- const runtime = (0, client_runtime_factory.q)({
18122
- clientName: 'API node client',
18123
- configureFunctionName: 'configureNodeApiClient',
18445
+ const runtime = createApiClientRuntime({
18446
+ clientName: 'API client',
18447
+ configureFunctionName: 'configureApiClient',
18124
18448
  defaultBaseURL: "https://api.vizbl.com"
18125
18449
  });
18126
18450
  runtime.configureClientRuntime;
@@ -18130,39 +18454,70 @@ var __webpack_modules__ = {
18130
18454
  runtime.isClientConfiguredRuntime;
18131
18455
  runtime.assertClientConfiguredRuntime;
18132
18456
  runtime.resetClientForTestsRuntime;
18133
- const requestNodeRuntime = runtime.requestRuntime;
18457
+ const client_runtime_requestRuntime = runtime.requestRuntime;
18134
18458
  runtime.requestWithoutUnauthorizedRecovery;
18135
18459
  runtime.addResponseInterceptorRuntime;
18136
- async function node_client_node_client(config) {
18137
- return requestNodeRuntime(config);
18460
+ async function client_client(config) {
18461
+ return client_runtime_requestRuntime(config);
18138
18462
  }
18139
18463
  __webpack_require__("@tanstack/react-query");
18140
- async function layoutControllerReadLayoutConfig(headers, config = {}) {
18141
- const { client: request = node_client_node_client, ...requestConfig } = config;
18464
+ async function objectDictionaryControllerReadUserObjectCategories(params, config = {}) {
18465
+ const { client: request = client_client, ...requestConfig } = config;
18466
+ const res = await request({
18467
+ method: "GET",
18468
+ url: "/catalog/obj/user-object-categories",
18469
+ params,
18470
+ ...requestConfig
18471
+ });
18472
+ return res.data;
18473
+ }
18474
+ async function objectTagControllerReadObjectTags(params, config = {}) {
18475
+ const { client: request = client_client, ...requestConfig } = config;
18476
+ const res = await request({
18477
+ method: "GET",
18478
+ url: "/catalog/obj/object-tags",
18479
+ params,
18480
+ ...requestConfig
18481
+ });
18482
+ return res.data;
18483
+ }
18484
+ async function readObject(data, config = {}) {
18485
+ const { client: request = client_client, ...requestConfig } = config;
18486
+ const requestData = data;
18142
18487
  const res = await request({
18143
18488
  method: "POST",
18144
- url: "/layout/GetConfig",
18145
- ...requestConfig,
18146
- headers: {
18147
- ...headers,
18148
- ...requestConfig.headers
18149
- }
18489
+ url: "/catalog/object",
18490
+ data: requestData,
18491
+ ...requestConfig
18150
18492
  });
18151
18493
  return res.data;
18152
18494
  }
18153
- async function legacyAccountControllerSearch(data, config = {}) {
18154
- const { client: request = node_client_node_client, ...requestConfig } = config;
18495
+ async function readPublicObjects(data, config = {}) {
18496
+ const { client: request = client_client, ...requestConfig } = config;
18155
18497
  const requestData = data;
18156
18498
  const res = await request({
18157
18499
  method: "POST",
18158
- url: "/legacy/account/Search",
18500
+ url: "/catalog/objects/public",
18159
18501
  data: requestData,
18160
18502
  ...requestConfig
18161
18503
  });
18162
18504
  return res.data;
18163
18505
  }
18506
+ async function layoutControllerReadLayoutConfig(headers, config = {}) {
18507
+ const { client: request = client_client, ...requestConfig } = config;
18508
+ const res = await request({
18509
+ method: "POST",
18510
+ url: "/layout/GetConfig",
18511
+ ...requestConfig,
18512
+ headers: {
18513
+ ...headers,
18514
+ ...requestConfig.headers
18515
+ }
18516
+ });
18517
+ return res.data;
18518
+ }
18164
18519
  async function publicApiControllerActivateCoreAR(params, config = {}) {
18165
- const { client: request = node_client_node_client, ...requestConfig } = config;
18520
+ const { client: request = client_client, ...requestConfig } = config;
18166
18521
  const res = await request({
18167
18522
  method: "POST",
18168
18523
  url: "/public/widget/activate-core",
@@ -18172,7 +18527,7 @@ var __webpack_modules__ = {
18172
18527
  return res.data;
18173
18528
  }
18174
18529
  async function publicApiControllerGetPublicObjects(data, params, config = {}) {
18175
- const { client: request = node_client_node_client, ...requestConfig } = config;
18530
+ const { client: request = client_client, ...requestConfig } = config;
18176
18531
  const requestData = data;
18177
18532
  const res = await request({
18178
18533
  method: "POST",
@@ -18184,7 +18539,7 @@ var __webpack_modules__ = {
18184
18539
  return res.data;
18185
18540
  }
18186
18541
  async function publicApiControllerIssueWidgetToken(data, config = {}) {
18187
- const { client: request = node_client_node_client, ...requestConfig } = config;
18542
+ const { client: request = client_client, ...requestConfig } = config;
18188
18543
  const requestData = data;
18189
18544
  const res = await request({
18190
18545
  method: "POST",
@@ -18195,7 +18550,7 @@ var __webpack_modules__ = {
18195
18550
  return res.data;
18196
18551
  }
18197
18552
  async function publicApiControllerReadObjectByTinuuid({ tinuuid }, params, config = {}) {
18198
- const { client: request = node_client_node_client, ...requestConfig } = config;
18553
+ const { client: request = client_client, ...requestConfig } = config;
18199
18554
  const res = await request({
18200
18555
  method: "GET",
18201
18556
  url: `/public/objects/by-tinuuid/${tinuuid}`,
@@ -18204,6 +18559,34 @@ var __webpack_modules__ = {
18204
18559
  });
18205
18560
  return res.data;
18206
18561
  }
18562
+ async function publicApiControllerReadObjectCategories(config = {}) {
18563
+ const { client: request = client_client, ...requestConfig } = config;
18564
+ const res = await request({
18565
+ method: "GET",
18566
+ url: "/public/object-categories",
18567
+ ...requestConfig
18568
+ });
18569
+ return res.data;
18570
+ }
18571
+ async function publicApiControllerReadObjectTags(config = {}) {
18572
+ const { client: request = client_client, ...requestConfig } = config;
18573
+ const res = await request({
18574
+ method: "GET",
18575
+ url: "/public/object-tags",
18576
+ ...requestConfig
18577
+ });
18578
+ return res.data;
18579
+ }
18580
+ async function userControllerReadPublicUserProfile(params, config = {}) {
18581
+ const { client: request = client_client, ...requestConfig } = config;
18582
+ const res = await request({
18583
+ method: "GET",
18584
+ url: "/user/public-profile",
18585
+ params,
18586
+ ...requestConfig
18587
+ });
18588
+ return res.data;
18589
+ }
18207
18590
  }
18208
18591
  };
18209
18592
  var __webpack_module_cache__ = {};
@@ -18244,8 +18627,8 @@ __webpack_require__.m = __webpack_modules__;
18244
18627
  })();
18245
18628
  (()=>{
18246
18629
  __webpack_require__.u = (chunkId)=>"" + chunkId + "." + ({
18247
- 110: "f02405b69058e0d1",
18248
- 191: "b62a8c99d7285005"
18630
+ 191: "b62a8c99d7285005",
18631
+ 552: "94e8bfc9fb13509c"
18249
18632
  })[chunkId] + ".js";
18250
18633
  })();
18251
18634
  (()=>{
@@ -18318,32 +18701,12 @@ __webpack_require__.m = __webpack_modules__;
18318
18701
  }
18319
18702
  };
18320
18703
  })();
18321
- var lib_platform = __webpack_require__("./src/lib/platform.ts");
18322
- var backend_policy = __webpack_require__("./src/ar/tracker/backend-policy.ts");
18323
- let prewarmed = false;
18324
- function requestArMotionPermission() {
18325
- const motionEvent = globalThis.DeviceMotionEvent;
18326
- if ('function' != typeof motionEvent?.requestPermission) return;
18327
- try {
18328
- motionEvent.requestPermission().catch(()=>void 0);
18329
- } catch {}
18330
- }
18331
- function prewarmArSession({ backend } = {}) {
18332
- if ("u" < typeof window || prewarmed) return;
18333
- if ('desktop' === (0, lib_platform.U_)() || (0, lib_platform.N0)()) return;
18334
- prewarmed = true;
18335
- requestArMotionPermission();
18336
- Promise.all([
18337
- __webpack_require__.e("191"),
18338
- __webpack_require__.e("110")
18339
- ]).then(__webpack_require__.bind(__webpack_require__, "./src/root.tsx")).catch(()=>void 0);
18340
- if ((backend ?? (0, backend_policy.HE)()) !== '8thwall') return;
18341
- Promise.resolve().then(__webpack_require__.bind(__webpack_require__, "./src/ar/tracker/eighth-wall-surface-tracker.ts")).then(({ loadEighthWallEngine })=>loadEighthWallEngine()).catch(()=>void 0);
18342
- }
18704
+ var session_prewarm = __webpack_require__("./src/ar/session-prewarm.ts");
18343
18705
  var auto_surface_tracker = __webpack_require__("./src/ar/tracker/auto-surface-tracker.ts");
18344
18706
  var eighth_wall_hit = __webpack_require__("./src/ar/tracker/eighth-wall-hit.ts");
18345
18707
  var eighth_wall_surface_tracker = __webpack_require__("./src/ar/tracker/eighth-wall-surface-tracker.ts");
18346
18708
  var surface_tracker = __webpack_require__("./src/ar/tracker/surface-tracker.ts");
18709
+ var backend_policy = __webpack_require__("./src/ar/tracker/backend-policy.ts");
18347
18710
  var tracker_backend = __webpack_require__("./src/ar/tracker/tracker-backend.ts");
18348
18711
  var webxr_surface_tracker = __webpack_require__("./src/ar/tracker/webxr-surface-tracker.ts");
18349
18712
  var jsx_runtime_ = __webpack_require__("react/jsx-runtime");
@@ -18390,112 +18753,155 @@ var external_react_i18next_ = __webpack_require__("react-i18next");
18390
18753
  var config = __webpack_require__("./src/config.ts");
18391
18754
  var use_visual_viewport = __webpack_require__("./src/hooks/use-visual-viewport.ts");
18392
18755
  const ns1 = {
18393
- title: 'Augmented reality',
18394
- comingSoon: 'AR preview is coming soon.',
18756
+ title: 'Try-on',
18757
+ comingSoon: 'Try-on is coming soon.',
18395
18758
  close: 'Close',
18396
- loadingModel: 'Loading model… {{progress}}%',
18759
+ cancelPlacement: 'Cancel',
18760
+ deleteObject: 'Take the object away',
18761
+ linkCopied: 'Link copied',
18762
+ share: 'Share',
18763
+ variant: 'Variant',
18764
+ addObject: 'Add an object',
18765
+ preparingObject: 'Getting the object ready… {{progress}}%',
18766
+ loadingModel: 'Loading… {{progress}}%',
18767
+ scan: {
18768
+ help: 'Nothing yet? Try more light, or step back'
18769
+ },
18770
+ intro: {
18771
+ action: 'Turn on camera',
18772
+ body: 'We’ll turn on the camera, and you’ll see it right in your room.',
18773
+ privacy: 'The camera runs only while you’re trying it on.',
18774
+ starting: 'Starting…',
18775
+ title: 'Try this one in your room'
18776
+ },
18397
18777
  android: {
18398
- description: 'Place the resource in your room.',
18399
- title: 'Live AR'
18778
+ description: 'Put the object in your room.',
18779
+ title: 'Try it on in your room'
18400
18780
  },
18401
18781
  all: {
18402
- anchorError: 'Could not anchor the object. Move your phone and try again.',
18782
+ found: 'Great, surface found',
18783
+ anchorError: 'That did not settle. Sweep your phone around and try again.',
18784
+ catalog: 'Tap the plus to add another',
18403
18785
  done: 'Done',
18404
- gestures: 'Drag the object along its surface. Drag outside to rotate.',
18405
- preview: 'Aim at any surface and confirm the position.',
18406
- relocalizing: 'Point your phone at the room again.',
18407
- searching: 'Move your phone slowly to find a floor, wall, or ceiling.',
18408
- select: 'Tap the object to adjust it.',
18409
- start: 'Start AR',
18410
- starting: 'Starting…'
18786
+ finish: 'Tap away from the object to finish',
18787
+ gestures: 'Drag the object to move it. Drag beside it to turn it.',
18788
+ move: 'Drag the object to move it',
18789
+ place: 'Place here',
18790
+ preview: 'Aim at any surface',
18791
+ relocalizing: 'Show the room again',
18792
+ rotate: 'Drag beside the object to turn it',
18793
+ scanMove: 'Move your phone to scan it',
18794
+ searching: 'Point your phone at a surface',
18795
+ select: 'Tap the object to select it'
18411
18796
  },
18412
18797
  catalog: {
18413
- selectVariant: 'Select variant',
18798
+ selectVariant: 'Pick a variant',
18414
18799
  all: 'All',
18415
18800
  clear: 'Clear',
18416
- description: 'Choose a product to place it in your room.',
18417
- empty: 'No products are available in this catalog.',
18418
- loadingMore: 'Loading more products…',
18419
- noResults: 'No results for “{{search}}”',
18420
- noResultsHint: 'Try a different search or browse all categories',
18421
- open: 'Open product catalog',
18422
- placementFailed: 'Could not load the selected material. Try again.',
18801
+ description: 'Pick something to try on.',
18802
+ empty: 'Nothing to try on here yet.',
18803
+ loadingMore: 'Loading more…',
18804
+ noResults: 'Nothing found for “{{search}}”',
18805
+ noResultsHint: 'Try another word, or browse every category',
18806
+ open: 'Add another object',
18807
+ placementFailed: 'That variant did not load. Try again.',
18423
18808
  placing: 'Placing…',
18424
- productDetails: 'Product details',
18809
+ productDetails: 'About this one',
18425
18810
  searchPlaceholder: 'Search',
18426
- showAllItems: 'Show all items',
18427
- title: 'Product catalog',
18428
- tryInRoom: 'Try it in your room',
18811
+ showAllItems: 'Show all',
18812
+ title: 'What else to try',
18813
+ tryInRoom: 'Try it on',
18429
18814
  unnamedProduct: 'Unnamed product',
18430
- unnamedOwner: 'Product catalog',
18431
- viewOnSite: 'View on site'
18815
+ unnamedOwner: 'Catalogue',
18816
+ viewOnSite: 'Open on the site'
18432
18817
  },
18433
18818
  floor: {
18434
- anchorError: 'Could not anchor the object. Move your phone and try again.',
18435
- deleteObject: 'Delete object',
18819
+ found: 'Great, floor found',
18820
+ anchorError: 'That did not settle. Sweep your phone around and try again.',
18821
+ catalog: 'Tap the plus to add another',
18436
18822
  done: 'Done',
18437
- gestures: 'Drag the object to move it. Drag outside to rotate.',
18438
- preview: 'Move your phone to choose a position.',
18439
- relocalizing: 'Point your phone at the room again.',
18440
- searching: 'Move your phone slowly to find the floor.',
18441
- select: 'Tap the object to adjust it.',
18442
- start: 'Start AR',
18443
- starting: 'Starting…'
18823
+ finish: 'Tap away from the object to finish',
18824
+ gestures: 'Drag the object to move it. Drag beside it to turn it.',
18825
+ move: 'Drag the object to move it',
18826
+ place: 'Place here',
18827
+ preview: 'Aim where it should stand',
18828
+ relocalizing: 'Show the room again',
18829
+ rotate: 'Drag beside the object to turn it',
18830
+ scanMove: 'Move your phone to scan it',
18831
+ searching: 'Point your phone at the floor',
18832
+ select: 'Tap the object to select it'
18444
18833
  },
18445
18834
  ceiling: {
18446
- anchorError: 'Could not anchor the object. Move your phone and try again.',
18447
- calibrating: 'Drag anywhere to move',
18835
+ found: 'Great, found the floor below it',
18836
+ anchorError: 'That did not settle. Sweep your phone around and try again.',
18837
+ calibrating: 'Fine-tune the height with the slider',
18838
+ catalog: 'Tap the plus to add another',
18448
18839
  done: 'Done',
18449
- gestures: 'Use the floor control or object to move. Drag outside to rotate.',
18840
+ finish: 'Tap away from the object to finish',
18841
+ floorReady: 'Pick the spot it will hang above',
18842
+ gestures: 'Drag the object to move it. Drag beside it to turn it.',
18843
+ move: 'Drag the object to move it',
18844
+ place: 'Done',
18845
+ heightValue: '{{height}} m',
18450
18846
  measuredHeight: 'Ceiling {{height}} m',
18451
- measureHeight: 'Swipe up to measure',
18452
- preview: 'The saved ceiling height is applied. Confirm the position.',
18453
- relocalizing: 'Point your phone at the room again.',
18454
- searching: 'Step 1 of 3: aim at the floor below the suspension point, or at a tracked ceiling.',
18455
- select: 'Tap the object or floor control to adjust it.',
18456
- setFloor: 'Set floor point',
18457
- setHeight: 'Set ceiling height',
18458
- start: 'Start AR',
18459
- starting: 'Starting…'
18847
+ measureHeight: 'Swipe up to set the height',
18848
+ preview: 'We kept the height from last time — check it',
18849
+ relocalizing: 'Show the room again',
18850
+ rotate: 'Drag beside the object to turn it',
18851
+ scanMove: 'Sweep it slowly: the height is measured from the floor',
18852
+ searching: 'Point your phone at the floor below where it will hang',
18853
+ select: 'Tap the object to select it',
18854
+ setFloor: 'Place here',
18855
+ setHeight: 'Set the height'
18460
18856
  },
18461
18857
  wall: {
18462
- anchorError: 'Could not anchor the resource. Move your phone and try again.',
18858
+ found: 'Great, wall found',
18859
+ anchorError: 'That did not settle. Sweep your phone around and try again.',
18860
+ catalog: 'Tap the plus to add another',
18463
18861
  done: 'Done',
18464
- gestures: 'Drag the resource to move it along the wall, or drag outside to rotate.',
18465
- preview: 'Aim at a wall. Drag to rotate, then confirm the position.',
18466
- relocalizing: 'Point your phone at the room again.',
18467
- searching: 'Move your phone slowly to find the floor or a wall.',
18468
- select: 'Tap the resource to adjust it.',
18469
- start: 'Start AR',
18470
- startError: 'Could not start AR. Check camera access and try again.',
18471
- starting: 'Starting…',
18472
- unsupported: 'Live AR is not supported on this device.'
18862
+ finish: 'Tap away from the object to finish',
18863
+ gestures: 'Drag the object to slide it along the wall. Drag the circle on the floor to move it down the room. Drag beside them to turn it.',
18864
+ move: 'Drag the object along the wall. The circle on the floor moves it down the room',
18865
+ place: 'Hang here',
18866
+ preview: 'Aim at the wall. Drag to turn it.',
18867
+ relocalizing: 'Show the room again',
18868
+ rotate: 'Drag beside the object to turn it',
18869
+ scanMove: 'Move your phone to scan it',
18870
+ searching: 'Point your phone at the wall',
18871
+ select: 'Tap the object to select it',
18872
+ startError: 'Try-on did not open. Check camera access and try again.',
18873
+ unsupported: 'Try-on does not work on this phone.'
18473
18874
  },
18474
18875
  accessError: {
18475
- 'not-found': 'Object not found',
18476
- unauthorized: 'Invalid API key',
18477
- unavailable: 'Viewer temporarily unavailable'
18876
+ 'not-found': 'No such object',
18877
+ unauthorized: 'Try-on is not set up here',
18878
+ unavailable: 'Try-on is unavailable right now'
18478
18879
  },
18479
18880
  runtimeState: {
18480
18881
  cameraDenied: {
18481
- body: 'Allow camera access in your browser settings, then try again.',
18482
- title: 'Camera access is blocked'
18882
+ body: 'Allow the camera in your browser settings, then open try-on again.',
18883
+ path: {
18884
+ chrome: 'Tap the icon left of the address → Permissions → Camera',
18885
+ firefox: 'Tap the lock icon left of the address → Camera',
18886
+ safari: 'Settings → Safari → Camera → Allow'
18887
+ },
18888
+ title: 'The camera is off'
18483
18889
  },
18484
18890
  error: {
18485
- body: 'Close AR and try again later.',
18486
- title: 'Something went wrong'
18891
+ body: 'Close try-on and open it again.',
18892
+ title: 'Try-on did not open'
18487
18893
  },
18488
18894
  rescan: {
18489
- body: 'Point your phone at the room. Your placed items will return when tracking recovers.',
18490
- title: 'Scan the room again'
18895
+ body: 'Point your phone around the room — everything you placed will come back.',
18896
+ title: 'Show the room again'
18491
18897
  },
18492
18898
  unsupported: {
18493
- body: 'This device or browser does not support live AR.',
18494
- title: 'AR is not supported'
18899
+ body: 'This phone or browser does not support it.',
18900
+ title: 'Try-on does not work here'
18495
18901
  },
18496
18902
  webview: {
18497
- body: 'Open this page in Chrome or Safari to use AR.',
18498
- title: 'Open in your browser'
18903
+ body: 'Open this page in Chrome or Safari: the camera is out of reach inside an app.',
18904
+ title: 'Open it in a browser'
18499
18905
  }
18500
18906
  },
18501
18907
  data: {
@@ -18513,112 +18919,155 @@ const ns1 = {
18513
18919
  };
18514
18920
  const en_ns1 = ns1;
18515
18921
  const ns1_ns1 = {
18516
- title: 'Дополненная реальность',
18517
- comingSoon: 'AR-просмотр скоро появится.',
18922
+ title: 'Примерка',
18923
+ comingSoon: 'Примерка скоро появится.',
18518
18924
  close: 'Закрыть',
18519
- loadingModel: 'Загрузка модели… {{progress}}%',
18925
+ cancelPlacement: 'Отменить',
18926
+ deleteObject: 'Убрать объект',
18927
+ linkCopied: 'Ссылка скопирована',
18928
+ share: 'Поделиться',
18929
+ variant: 'Вариант',
18930
+ addObject: 'Добавить объект',
18931
+ preparingObject: 'Подготавливаем объект… {{progress}}%',
18932
+ loadingModel: 'Загружаем… {{progress}}%',
18933
+ scan: {
18934
+ help: 'Не находится? Посветите ярче или отойдите на шаг'
18935
+ },
18936
+ intro: {
18937
+ action: 'Включить камеру',
18938
+ body: 'Включим камеру, и вы увидите его прямо в комнате.',
18939
+ privacy: 'Камера работает только во время примерки.',
18940
+ starting: 'Включаем…',
18941
+ title: 'Примерьте этот объект у себя'
18942
+ },
18520
18943
  android: {
18521
- description: 'Разместите объект в своей комнате.',
18522
- title: 'Живая AR'
18944
+ description: 'Поставьте объект у себя в комнате.',
18945
+ title: 'Примерка в комнате'
18523
18946
  },
18524
18947
  all: {
18525
- anchorError: 'Не удалось закрепить объект. Переместите телефон и попробуйте снова.',
18948
+ found: 'Отлично, поверхность найдена',
18949
+ anchorError: 'Объект не встал на место. Поводите телефоном и попробуйте ещё раз.',
18950
+ catalog: 'Нажмите «плюс», чтобы добавить ещё',
18526
18951
  done: 'Готово',
18527
- gestures: 'Двигайте объект по его поверхности, пустоту — для поворота.',
18528
- preview: 'Наведите на любую поверхность и подтвердите положение.',
18529
- relocalizing: 'Снова наведите телефон на комнату.',
18530
- searching: 'Медленно перемещайте телефон, чтобы найти пол, стену или потолок.',
18531
- select: 'Коснитесь объекта, чтобы настроить его.',
18532
- start: 'Запустить AR',
18533
- starting: 'Запуск…'
18952
+ finish: 'Коснитесь мимо объекта, чтобы закончить',
18953
+ gestures: 'Тяните объект, чтобы подвинуть. Проведите рядом с ним, чтобы повернуть.',
18954
+ move: 'Тяните объект, чтобы подвинуть',
18955
+ place: 'Разместить здесь',
18956
+ preview: 'Наведите на любую поверхность',
18957
+ relocalizing: 'Покажите комнату ещё раз',
18958
+ rotate: 'Проведите рядом с объектом, чтобы повернуть',
18959
+ scanMove: 'Медленно поводите по комнате',
18960
+ searching: 'Наведите камеру на поверхность',
18961
+ select: 'Коснитесь объекта, чтобы выбрать'
18534
18962
  },
18535
18963
  catalog: {
18536
18964
  selectVariant: 'Выберите вариант',
18537
18965
  all: 'Все',
18538
18966
  clear: 'Очистить',
18539
- description: 'Выберите товар, чтобы разместить его в комнате.',
18540
- empty: 'В этом каталоге пока нет товаров.',
18541
- loadingMore: 'Загружаем ещё товары…',
18542
- noResults: 'Нет результатов для «{{search}}»',
18543
- noResultsHint: 'Попробуйте другой поиск или посмотрите все категории',
18544
- open: 'Открыть каталог товаров',
18545
- placementFailed: 'Не удалось загрузить выбранный материал. Попробуйте ещё раз.',
18546
- placing: 'Размещаем…',
18547
- productDetails: 'Детали товара',
18967
+ description: 'Выберите, что примерить.',
18968
+ empty: 'Здесь пока нечего примерить.',
18969
+ loadingMore: 'Загружаем ещё…',
18970
+ noResults: 'Ничего не нашли по запросу «{{search}}»',
18971
+ noResultsHint: 'Попробуйте другое слово или посмотрите все категории',
18972
+ open: 'Добавить ещё объект',
18973
+ placementFailed: 'Этот вариант не загрузился. Попробуйте ещё раз.',
18974
+ placing: 'Ставим…',
18975
+ productDetails: 'О товаре',
18548
18976
  searchPlaceholder: 'Поиск',
18549
- showAllItems: 'Показать все товары',
18550
- title: 'Каталог товаров',
18551
- tryInRoom: 'Посмотреть в комнате',
18977
+ showAllItems: 'Показать все',
18978
+ title: 'Что ещё примерить',
18979
+ tryInRoom: 'Примерить',
18552
18980
  unnamedProduct: 'Товар без названия',
18553
- unnamedOwner: 'Каталог товаров',
18981
+ unnamedOwner: 'Каталог',
18554
18982
  viewOnSite: 'Открыть на сайте'
18555
18983
  },
18556
18984
  floor: {
18557
- anchorError: 'Не удалось закрепить объект. Переместите телефон и попробуйте снова.',
18558
- deleteObject: 'Удалить объект',
18985
+ found: 'Отлично, пол найден',
18986
+ anchorError: 'Объект не встал на место. Поводите телефоном и попробуйте ещё раз.',
18987
+ catalog: 'Нажмите «плюс», чтобы добавить ещё',
18559
18988
  done: 'Готово',
18560
- gestures: 'Тяните объект для перемещения, вне объекта — для поворота.',
18561
- preview: 'Перемещайте телефон, чтобы выбрать место.',
18562
- relocalizing: 'Снова наведите телефон на комнату.',
18563
- searching: 'Медленно перемещайте телефон, чтобы найти пол.',
18564
- select: 'Коснитесь объекта, чтобы настроить его.',
18565
- start: 'Запустить AR',
18566
- starting: 'Запуск…'
18989
+ finish: 'Коснитесь мимо объекта, чтобы закончить',
18990
+ gestures: 'Тяните объект, чтобы подвинуть. Проведите рядом с ним, чтобы повернуть.',
18991
+ move: 'Тяните объект, чтобы подвинуть',
18992
+ place: 'Поставить здесь',
18993
+ preview: 'Наведите, куда поставить',
18994
+ relocalizing: 'Покажите комнату ещё раз',
18995
+ rotate: 'Проведите рядом с объектом, чтобы повернуть',
18996
+ scanMove: 'Медленно поводите по полу',
18997
+ searching: 'Наведите камеру на пол',
18998
+ select: 'Коснитесь объекта, чтобы выбрать'
18567
18999
  },
18568
19000
  ceiling: {
18569
- anchorError: 'Не удалось закрепить объект. Переместите телефон и попробуйте снова.',
18570
- calibrating: 'Проведите где угодно, чтобы переместить',
19001
+ found: 'Отлично, пол под объектом найден',
19002
+ anchorError: 'Объект не встал на место. Поводите телефоном и попробуйте ещё раз.',
19003
+ calibrating: 'Уточните высоту ползунком',
19004
+ catalog: 'Нажмите «плюс», чтобы добавить ещё',
18571
19005
  done: 'Готово',
18572
- gestures: 'Двигайте напольный контрол или объект, пустоту — для поворота.',
19006
+ finish: 'Коснитесь мимо объекта, чтобы закончить',
19007
+ floorReady: 'Укажите место, над которым будет висеть объект',
19008
+ gestures: 'Тяните объект, чтобы подвинуть. Проведите рядом с ним, чтобы повернуть.',
19009
+ move: 'Тяните объект, чтобы подвинуть',
19010
+ place: 'Готово',
19011
+ heightValue: '{{height}} м',
18573
19012
  measuredHeight: 'Потолок {{height}} м',
18574
- measureHeight: 'Проведите вверх для измерения',
18575
- preview: 'Сохранённая высота потолка применена. Подтвердите позицию.',
18576
- relocalizing: 'Снова наведите телефон на комнату.',
18577
- searching: 'Шаг 1 из 3: наведите на пол под точкой подвеса или на распознанный потолок.',
18578
- select: 'Коснитесь объекта или напольного контрола, чтобы настроить его.',
18579
- setFloor: 'Задать точку на полу',
18580
- setHeight: 'Задать высоту потолка',
18581
- start: 'Запустить AR',
18582
- starting: 'Запуск…'
19013
+ measureHeight: 'Проведите вверх, чтобы задать высоту',
19014
+ preview: 'Высоту взяли из прошлого раза — проверьте её',
19015
+ relocalizing: 'Покажите комнату ещё раз',
19016
+ rotate: 'Проведите рядом с объектом, чтобы повернуть',
19017
+ scanMove: 'Медленно поводите по полу: от него отмерим высоту',
19018
+ searching: 'Наведите камеру на пол под местом, где повесите объект',
19019
+ select: 'Коснитесь объекта, чтобы выбрать',
19020
+ setFloor: 'Разместить здесь',
19021
+ setHeight: 'Задать высоту'
18583
19022
  },
18584
19023
  wall: {
18585
- anchorError: 'Не удалось закрепить ресурс. Переместите телефон и попробуйте снова.',
19024
+ found: 'Отлично, стена найдена',
19025
+ anchorError: 'Объект не встал на место. Поводите телефоном и попробуйте ещё раз.',
19026
+ catalog: 'Нажмите «плюс», чтобы добавить ещё',
18586
19027
  done: 'Готово',
18587
- gestures: 'Тяните ресурс, чтобы двигать его по стене, пустое место — чтобы повернуть.',
18588
- preview: 'Наведите на стену. Потяните для поворота, затем подтвердите положение.',
18589
- relocalizing: 'Снова наведите телефон на комнату.',
18590
- searching: 'Медленно перемещайте телефон, чтобы найти пол или стену.',
18591
- select: 'Коснитесь ресурса, чтобы настроить его.',
18592
- start: 'Запустить AR',
18593
- startError: 'Не удалось запустить AR. Проверьте доступ к камере и попробуйте снова.',
18594
- starting: 'Запуск…',
18595
- unsupported: 'Живая AR не поддерживается на этом устройстве.'
19028
+ finish: 'Коснитесь мимо объекта, чтобы закончить',
19029
+ gestures: 'Тяните объект, чтобы двигать по стене. Круг на полу — чтобы перенести по комнате. Проведите рядом, чтобы повернуть.',
19030
+ move: 'Тяните объект вдоль стены. Круг на полу перенесёт его по комнате',
19031
+ place: 'Повесить здесь',
19032
+ preview: 'Наведите на стену. Потяните, чтобы повернуть.',
19033
+ relocalizing: 'Покажите комнату ещё раз',
19034
+ rotate: 'Проведите рядом с объектом, чтобы повернуть',
19035
+ scanMove: 'Медленно поводите по стене',
19036
+ searching: 'Наведите камеру на стену',
19037
+ select: 'Коснитесь объекта, чтобы выбрать',
19038
+ startError: 'Примерка не открылась. Проверьте доступ к камере и попробуйте ещё раз.',
19039
+ unsupported: 'На этом телефоне примерка не работает.'
18596
19040
  },
18597
19041
  accessError: {
18598
- 'not-found': 'Объект не найден',
18599
- unauthorized: 'Неверный API-ключ',
18600
- unavailable: 'Просмотр временно недоступен'
19042
+ 'not-found': 'Такого объекта нет',
19043
+ unauthorized: 'Здесь примерка не настроена',
19044
+ unavailable: 'Примерка временно недоступна'
18601
19045
  },
18602
19046
  runtimeState: {
18603
19047
  cameraDenied: {
18604
- body: 'Разрешите доступ к камере в настройках браузера и попробуйте снова.',
18605
- title: 'Доступ к камере заблокирован'
19048
+ body: 'Разрешите камеру в настройках браузера и откройте примерку заново.',
19049
+ path: {
19050
+ chrome: 'Нажмите значок слева от адреса → «Разрешения» → «Камера»',
19051
+ firefox: 'Нажмите значок замка слева от адреса → «Камера»',
19052
+ safari: 'Настройки → Safari → «Камера» → «Разрешить»'
19053
+ },
19054
+ title: 'Камера выключена'
18606
19055
  },
18607
19056
  error: {
18608
- body: 'Закройте AR и попробуйте снова позже.',
18609
- title: 'Что-то пошло не так'
19057
+ body: 'Закройте примерку и откройте её заново.',
19058
+ title: 'Примерка не открылась'
18610
19059
  },
18611
19060
  rescan: {
18612
- body: 'Наведите телефон на комнату. Размещённые товары вернутся после восстановления трекинга.',
18613
- title: 'Отсканируйте комнату заново'
19061
+ body: 'Наведите телефон на комнату — всё, что вы поставили, вернётся на место.',
19062
+ title: 'Покажите комнату ещё раз'
18614
19063
  },
18615
19064
  unsupported: {
18616
- body: 'Это устройство или браузер не поддерживает живую AR.',
18617
- title: 'AR не поддерживается'
19065
+ body: 'Этот телефон или браузер её не поддерживает.',
19066
+ title: 'Здесь примерка не работает'
18618
19067
  },
18619
19068
  webview: {
18620
- body: 'Откройте эту страницу в Chrome или Safari, чтобы использовать AR.',
18621
- title: 'Откройте во внешнем браузере'
19069
+ body: 'Откройте эту страницу в Chrome или Safari: внутри приложения камера недоступна.',
19070
+ title: 'Откройте в браузере'
18622
19071
  }
18623
19072
  },
18624
19073
  data: {
@@ -18643,8 +19092,8 @@ const resources = {
18643
19092
  translation: ru_ns1
18644
19093
  }
18645
19094
  };
18646
- const arI18n = __rspack_external_i18next["default"].createInstance();
18647
- arI18n.use(__rspack_external_i18next_browser_languagedetector_a0acd247["default"]).use(external_react_i18next_.initReactI18next).init({
19095
+ const arI18n = i18next.createInstance();
19096
+ arI18n.use(i18next_browser_languagedetector).use(external_react_i18next_.initReactI18next).init({
18648
19097
  debug: false,
18649
19098
  detection: {
18650
19099
  caches: []
@@ -18699,6 +19148,7 @@ function performArAppClipHandoff({ hid, language, object, onAnalyticsEvent, redi
18699
19148
  redirect(tinuuid, language);
18700
19149
  }
18701
19150
  var debug_flags = __webpack_require__("./src/lib/debug-flags.ts");
19151
+ var lib_platform = __webpack_require__("./src/lib/platform.ts");
18702
19152
  const PROPERTY_BLOCK_RE = /@property\s+(--[^{\s]+)\s*\{([^}]*)\}/g;
18703
19153
  const INITIAL_VALUE_RE = /initial-value:([^;}]+)/i;
18704
19154
  const NON_INHERITING_RE = /inherits:\s*false(?:\s*;|\s*$)/i;
@@ -18729,7 +19179,7 @@ const shadowRootCssText = createShadowRootCssText(styleinline.A);
18729
19179
  const ArExperience = /*#__PURE__*/ (0, external_react_.lazy)(async ()=>({
18730
19180
  default: (await Promise.all([
18731
19181
  __webpack_require__.e("191"),
18732
- __webpack_require__.e("110")
19182
+ __webpack_require__.e("552")
18733
19183
  ]).then(__webpack_require__.bind(__webpack_require__, "./src/root.tsx"))).ArExperience
18734
19184
  }));
18735
19185
  const ModelViewerDialog = /*#__PURE__*/ (0, external_react_.lazy)(async ()=>({
@@ -18784,7 +19234,7 @@ function ArDialog({ apiKey, hid, initialWidgetSessionToken, name, language, onAn
18784
19234
  onOpenChange
18785
19235
  ]);
18786
19236
  (0, external_react_.useLayoutEffect)(()=>{
18787
- if (effectiveOpen && 'ar' === route) prewarmArSession({
19237
+ if (effectiveOpen && 'ar' === route) (0, session_prewarm.YP)({
18788
19238
  backend: debugOverride.backend
18789
19239
  });
18790
19240
  }, [
@@ -18854,7 +19304,6 @@ function ArDialog({ apiKey, hid, initialWidgetSessionToken, name, language, onAn
18854
19304
  defaultOpen: defaultOpen,
18855
19305
  hid: hid,
18856
19306
  initialWidgetSessionToken: initialWidgetSessionToken ?? void 0,
18857
- legacyApiBaseUrl: tenant.legacyApiOrigin,
18858
19307
  onOpenChange: handleOpenChange,
18859
19308
  open: open,
18860
19309
  tinuuid: normalizedTinuuid
@@ -18866,7 +19315,7 @@ function ArDialog({ apiKey, hid, initialWidgetSessionToken, name, language, onAn
18866
19315
  /*#__PURE__*/ (0, external_react_dom_.createPortal)(/*#__PURE__*/ (0, jsx_runtime_.jsx)("style", {
18867
19316
  children: fontsinline.A
18868
19317
  }), document.head),
18869
- /*#__PURE__*/ (0, external_react_dom_.createPortal)(/*#__PURE__*/ (0, jsx_runtime_.jsxs)(__rspack_external_react_shadow_67c1cf10["default"].div, {
19318
+ /*#__PURE__*/ (0, external_react_dom_.createPortal)(/*#__PURE__*/ (0, jsx_runtime_.jsxs)(react_shadow.div, {
18870
19319
  style: {
18871
19320
  display: 'block',
18872
19321
  inset: 0,
@@ -18933,7 +19382,7 @@ function ArDialog({ apiKey, hid, initialWidgetSessionToken, name, language, onAn
18933
19382
  ]
18934
19383
  });
18935
19384
  }
18936
- var __webpack_exports__AR_TRACKING_BACKENDS = backend_policy.AY;
19385
+ var __webpack_exports__AR_TRACKING_BACKENDS = backend_policy.A;
18937
19386
  var __webpack_exports__AutoSurfaceTracker = auto_surface_tracker.f;
18938
19387
  var __webpack_exports__EIGHTH_WALL_ENGINE_URL = eighth_wall_surface_tracker.Uy;
18939
19388
  var __webpack_exports__EighthWallSurfaceTracker = eighth_wall_surface_tracker.VU;
@@ -18946,10 +19395,11 @@ var __webpack_exports__detectArPlatform = lib_platform.U_;
18946
19395
  var __webpack_exports__detectSupportedArBackends = tracker_backend.Sf;
18947
19396
  var __webpack_exports__emitArAnalyticsEvent = analytics.lA;
18948
19397
  var __webpack_exports__getIosMajorVersion = lib_platform.Tw;
18949
- var __webpack_exports__isAndroidChromeOrEdge = backend_policy.yR;
18950
19398
  var __webpack_exports__loadEighthWallEngine = eighth_wall_surface_tracker.loadEighthWallEngine;
18951
- var __webpack_exports__preferredArBackend = backend_policy.HE;
19399
+ var __webpack_exports__prewarmArSession = session_prewarm.YP;
19400
+ var __webpack_exports__readArDebugOverride = debug_flags.Bo;
18952
19401
  var __webpack_exports__resolveArPlatformRoute = lib_platform.wz;
18953
19402
  var __webpack_exports__resolveEighthWallReticleHit = eighth_wall_hit.hj;
18954
19403
  var __webpack_exports__supportsArAppClip = lib_platform.nc;
18955
- export { ArDialog, buildAppClipUrl, openAppClip, performArAppClipHandoff, prewarmArSession, resolveAppClipRegion, sendAppClipWidgetEvent, __webpack_exports__AR_TRACKING_BACKENDS as AR_TRACKING_BACKENDS, __webpack_exports__AutoSurfaceTracker as AutoSurfaceTracker, __webpack_exports__EIGHTH_WALL_ENGINE_URL as EIGHTH_WALL_ENGINE_URL, __webpack_exports__EighthWallSurfaceTracker as EighthWallSurfaceTracker, __webpack_exports__MIN_WALL_HEIGHT as MIN_WALL_HEIGHT, __webpack_exports__WebXrSurfaceTracker as WebXrSurfaceTracker, __webpack_exports__classifySurfaceByNormal as classifySurfaceByNormal, __webpack_exports__createArTracker as createArTracker, __webpack_exports__createArTrackerRegistry as createArTrackerRegistry, __webpack_exports__detectArPlatform as detectArPlatform, __webpack_exports__detectSupportedArBackends as detectSupportedArBackends, __webpack_exports__emitArAnalyticsEvent as emitArAnalyticsEvent, __webpack_exports__getIosMajorVersion as getIosMajorVersion, __webpack_exports__isAndroidChromeOrEdge as isAndroidChromeOrEdge, __webpack_exports__loadEighthWallEngine as loadEighthWallEngine, __webpack_exports__preferredArBackend as preferredArBackend, __webpack_exports__resolveArPlatformRoute as resolveArPlatformRoute, __webpack_exports__resolveEighthWallReticleHit as resolveEighthWallReticleHit, __webpack_exports__supportsArAppClip as supportsArAppClip };
19404
+ var __webpack_exports__supportsImmersiveAr = backend_policy.f;
19405
+ export { ArDialog, buildAppClipUrl, openAppClip, performArAppClipHandoff, resolveAppClipRegion, sendAppClipWidgetEvent, __webpack_exports__AR_TRACKING_BACKENDS as AR_TRACKING_BACKENDS, __webpack_exports__AutoSurfaceTracker as AutoSurfaceTracker, __webpack_exports__EIGHTH_WALL_ENGINE_URL as EIGHTH_WALL_ENGINE_URL, __webpack_exports__EighthWallSurfaceTracker as EighthWallSurfaceTracker, __webpack_exports__MIN_WALL_HEIGHT as MIN_WALL_HEIGHT, __webpack_exports__WebXrSurfaceTracker as WebXrSurfaceTracker, __webpack_exports__classifySurfaceByNormal as classifySurfaceByNormal, __webpack_exports__createArTracker as createArTracker, __webpack_exports__createArTrackerRegistry as createArTrackerRegistry, __webpack_exports__detectArPlatform as detectArPlatform, __webpack_exports__detectSupportedArBackends as detectSupportedArBackends, __webpack_exports__emitArAnalyticsEvent as emitArAnalyticsEvent, __webpack_exports__getIosMajorVersion as getIosMajorVersion, __webpack_exports__loadEighthWallEngine as loadEighthWallEngine, __webpack_exports__prewarmArSession as prewarmArSession, __webpack_exports__readArDebugOverride as readArDebugOverride, __webpack_exports__resolveArPlatformRoute as resolveArPlatformRoute, __webpack_exports__resolveEighthWallReticleHit as resolveEighthWallReticleHit, __webpack_exports__supportsArAppClip as supportsArAppClip, __webpack_exports__supportsImmersiveAr as supportsImmersiveAr };