@depict-ai/ui 4.10.12 → 4.10.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.
@@ -115,7 +115,7 @@ $parcel$export(module.exports, "BreadCrumbs", () => $335c02c1241a9ca8$export$5b7
115
115
  $parcel$export(module.exports, "QuickLinks", () => $335c02c1241a9ca8$export$de035477d6fef996);
116
116
  $parcel$export(module.exports, "CategoryPage", () => $c10e33c4681f8c9b$export$e2bf8ce7779e827e);
117
117
  /*! Depict.ai search and product listing SDK */
118
- const $aa1938dec50d6c12$export$83d89fbfd8236492 = "4.10.12";
118
+ const $aa1938dec50d6c12$export$83d89fbfd8236492 = "4.10.14";
119
119
  function $3e17e871e9d0911d$export$d9f36cf74e24d595(media_query) {
120
120
  const signal = $3hooq$solidjs.createSignal(false);
121
121
  $3hooq$solidjs.onCleanup($3hooq$depictaiutilishared.javascript_media_query(media_query, _ref => {
@@ -2311,13 +2311,15 @@ function $a904ccf883f60231$export$f21ab0717a89c77f(props) {
2311
2311
  height: "12"
2312
2312
  }), () => $3hooq$solidjsweb.ssr($a904ccf883f60231$var$_tmpl$), true);
2313
2313
  }
2314
- var $b0477e4d832f090e$var$_tmpl$ = ["<button", ' type="button" class="', '"><!--$-->', "<!--/--><span>", "</span></button>"];
2314
+ var $b0477e4d832f090e$var$_tmpl$ = ["<button", ' type="button" class="', '"', "><!--$-->", "<!--/--><span>", "</span></button>"];
2315
2315
  function $b0477e4d832f090e$export$ca21a16d65b3dd8(_ref) {
2316
2316
  let {
2317
2317
  show_extras_: [get_show_extras, set_show_extras],
2318
- i18n_: i18n_
2318
+ i18n_: i18n_,
2319
+ expanding_container_element_: expanding_container_element_
2319
2320
  } = _ref;
2320
- return $3hooq$solidjsweb.ssr($b0477e4d832f090e$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "expand-filter ".concat(get_show_extras() ? "expanded" : ""), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $a904ccf883f60231$export$f21ab0717a89c77f), {})), get_show_extras() ? $3hooq$solidjsweb.escape(i18n_.view_less_()) : $3hooq$solidjsweb.escape(i18n_.view_more_()));
2321
+ let button;
2322
+ return $3hooq$solidjsweb.ssr($b0477e4d832f090e$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "expand-filter ".concat(get_show_extras() ? "expanded" : ""), $3hooq$solidjsweb.ssrAttribute("aria-expanded", $3hooq$solidjsweb.escape(get_show_extras(), true), false), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $a904ccf883f60231$export$f21ab0717a89c77f), {})), get_show_extras() ? $3hooq$solidjsweb.escape(i18n_.view_less_()) : $3hooq$solidjsweb.escape(i18n_.view_more_()));
2321
2323
  }
2322
2324
  var $23c3f390dee33ff8$var$_tmpl$ = ["<span", ' class="highlighted-part">', "</span>"],
2323
2325
  $23c3f390dee33ff8$var$_tmpl$2 = ["<span", ' class="', '"', ">", "</span>"];
@@ -2478,7 +2480,8 @@ function $9b54b9c5381716eb$export$dd948f91abc3a1c4(_ref) {
2478
2480
  $3hooq$solidjs.createRenderEffect(() => {
2479
2481
  set_view_more_button_below_group_(togglable_rest() ? $3hooq$solidjsweb.createComponent((0, $b0477e4d832f090e$export$ca21a16d65b3dd8), {
2480
2482
  show_extras_: show_extras_signal,
2481
- i18n_: i18n_
2483
+ i18n_: i18n_,
2484
+ expanding_container_element_: expanding_container_els
2482
2485
  }) : []);
2483
2486
  });
2484
2487
  $3hooq$solidjs.onCleanup(() => set_view_more_button_below_group_());
@@ -2566,7 +2569,7 @@ function $d9239dad9a9d899b$export$430444115f70a734(_ref) {
2566
2569
  }
2567
2570
  })));
2568
2571
  }
2569
- var $0257c760a99bfacb$var$_tmpl$ = ["<div", ' class="', '"><div class="input-group"><div class="field"><input', ' type="number"', '></div><div class="separator">-</div><div class="field"><input', ' type="number"', "></div></div><!--$-->", '<!--/--><div class="value-text"><span class="min"><!--$-->', "<!--/--><!--$-->", "<!--/--><!--$-->", '<!--/--></span><span class="max"><!--$-->', "<!--/--><!--$-->", "<!--/--><!--$-->", "<!--/--></span></div></div>"],
2572
+ var $0257c760a99bfacb$var$_tmpl$ = ["<div", ' class="', '"><div class="input-group"><div class="field"><input', ' type="number"', '></div><div class="separator" aria-hidden="true">-</div><div class="field"><input', ' type="number"', "></div></div><!--$-->", '<!--/--><div class="value-text"><span class="min"><!--$-->', "<!--/--><!--$-->", "<!--/--><!--$-->", '<!--/--></span><span class="max"><!--$-->', "<!--/--><!--$-->", "<!--/--><!--$-->", "<!--/--></span></div></div>"],
2570
2573
  $0257c760a99bfacb$var$_tmpl$2 = ["<div", ' class="slider"><div class="progress" style="', '"></div></div>'],
2571
2574
  $0257c760a99bfacb$var$_tmpl$3 = ["<div", ' class="range-group"><input', ' type="range"', ' step="any"><input', ' type="range"', ' step="any"></div>'];
2572
2575
  function $0257c760a99bfacb$export$e0d834a0ad870cda(_ref) {
@@ -2665,7 +2668,8 @@ function $0257c760a99bfacb$var$RangeSelector(_ref3) {
2665
2668
  min_: min_,
2666
2669
  current_range_: current_range_,
2667
2670
  i18n_: i18n_,
2668
- should_be_disabled_: should_be_disabled_
2671
+ should_be_disabled_: should_be_disabled_,
2672
+ priceFormatting_: price_formatting_
2669
2673
  })), $3hooq$solidjsweb.escape(pre_price()), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $f38f2e64ebe2da86$export$a71e92cfbb498adc), {
2670
2674
  get price_() {
2671
2675
  return min_();
@@ -2688,7 +2692,8 @@ function $0257c760a99bfacb$var$ExponentialSlider(_ref4) {
2688
2692
  min_: min_,
2689
2693
  i18n_: i18n_,
2690
2694
  max_: max_,
2691
- should_be_disabled_: should_be_disabled_
2695
+ should_be_disabled_: should_be_disabled_,
2696
+ priceFormatting_: priceFormatting_
2692
2697
  } = _ref4;
2693
2698
  // inspired by https://observablehq.com/@mbostock/nonlinear-slider
2694
2699
  const transform_linear_to_nonlinear = _ref5 => {
@@ -2725,7 +2730,8 @@ function $0257c760a99bfacb$var$ExponentialSlider(_ref4) {
2725
2730
  max_: modified_max,
2726
2731
  offset_value_calculator_: offset_value_calculator_,
2727
2732
  i18n_: i18n_,
2728
- should_be_disabled_: should_be_disabled_
2733
+ should_be_disabled_: should_be_disabled_,
2734
+ priceFormatting_: priceFormatting_
2729
2735
  });
2730
2736
  }
2731
2737
  function $0257c760a99bfacb$var$LinearSlider(_ref6) {
@@ -2735,12 +2741,17 @@ function $0257c760a99bfacb$var$LinearSlider(_ref6) {
2735
2741
  current_range_: current_range_,
2736
2742
  offset_value_calculator_: offset_value_calculator_,
2737
2743
  i18n_: i18n_,
2738
- should_be_disabled_: should_be_disabled_
2744
+ should_be_disabled_: should_be_disabled_,
2745
+ priceFormatting_: priceFormatting_
2739
2746
  } = _ref6;
2740
2747
  let range_input_1;
2741
2748
  let range_input_2;
2742
2749
  let clickable_slider;
2743
2750
  const [get_current_range, set_current_range] = current_range_;
2751
+ const formatRealPrice = value => {
2752
+ const priceFormatting = priceFormatting_();
2753
+ return priceFormatting.pre_ + $3hooq$depictaiutilishared.standard_price_format(value, priceFormatting.places_after_comma_, priceFormatting.decimal_places_delimiter_, priceFormatting.thousands_delimiter_) + priceFormatting.post_;
2754
+ };
2744
2755
  const progress_styling = $3hooq$solidjs.createMemo(() => {
2745
2756
  const min = min_();
2746
2757
  const span = max_() - min;
@@ -2759,13 +2770,13 @@ function $0257c760a99bfacb$var$LinearSlider(_ref6) {
2759
2770
  el.value = get_current_range()[index];
2760
2771
  });
2761
2772
  };
2762
- return [$3hooq$solidjsweb.ssr($0257c760a99bfacb$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrStyle(progress_styling())), $3hooq$solidjsweb.ssr($0257c760a99bfacb$var$_tmpl$3, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrAttribute("disabled", should_be_disabled_(), true), $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape(i18n_.range_filter_low_point_aria_label_(), true), false) + $3hooq$solidjsweb.ssrAttribute("min", $3hooq$solidjsweb.escape(min_(), true), false) + $3hooq$solidjsweb.ssrAttribute("max", $3hooq$solidjsweb.escape(max_(), true), false) + $3hooq$solidjsweb.ssrAttribute("value", $3hooq$solidjsweb.escape($3hooq$solidjs.createMemo(() => {
2773
+ return [$3hooq$solidjsweb.ssr($0257c760a99bfacb$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrStyle(progress_styling())), $3hooq$solidjsweb.ssr($0257c760a99bfacb$var$_tmpl$3, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrAttribute("disabled", should_be_disabled_(), true), $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape(i18n_.range_filter_low_point_aria_label_(), true), false) + $3hooq$solidjsweb.ssrAttribute("aria-valuetext", $3hooq$solidjsweb.escape(formatRealPrice(get_current_range()[0]), true), false) + $3hooq$solidjsweb.ssrAttribute("min", $3hooq$solidjsweb.escape(min_(), true), false) + $3hooq$solidjsweb.ssrAttribute("max", $3hooq$solidjsweb.escape(max_(), true), false) + $3hooq$solidjsweb.ssrAttribute("value", $3hooq$solidjsweb.escape($3hooq$solidjs.createMemo(() => {
2763
2774
  min_();
2764
2775
  max_();
2765
2776
  return get_current_range()[0];
2766
2777
  }, undefined, {
2767
2778
  equals: false
2768
- })(), true), false), $3hooq$solidjsweb.ssrAttribute("disabled", should_be_disabled_(), true) + $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape(i18n_.range_filter_high_point_aria_label_(), true), false), $3hooq$solidjsweb.ssrAttribute("min", $3hooq$solidjsweb.escape(min_(), true), false) + $3hooq$solidjsweb.ssrAttribute("max", $3hooq$solidjsweb.escape(max_(), true), false))];
2779
+ })(), true), false), $3hooq$solidjsweb.ssrAttribute("disabled", should_be_disabled_(), true) + $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape(i18n_.range_filter_high_point_aria_label_(), true), false) + $3hooq$solidjsweb.ssrAttribute("aria-valuetext", $3hooq$solidjsweb.escape(formatRealPrice(get_current_range()[1]), true), false), $3hooq$solidjsweb.ssrAttribute("min", $3hooq$solidjsweb.escape(min_(), true), false) + $3hooq$solidjsweb.ssrAttribute("max", $3hooq$solidjsweb.escape(max_(), true), false))];
2769
2780
  }
2770
2781
  function $0257c760a99bfacb$var$set_range_with_sanitation(min_, max_, current_range_signal, index, target_el) {
2771
2782
  let get_offset_value = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : (value, how_many) => value + how_many;
@@ -3187,7 +3198,8 @@ function $9c1d49181fb3002a$export$a32086fa6616eafd(_ref) {
3187
3198
  $3hooq$solidjs.createRenderEffect(() => {
3188
3199
  set_view_more_button_below_group(some_top_level_are_hidden() ? $3hooq$solidjsweb.createComponent((0, $b0477e4d832f090e$export$ca21a16d65b3dd8), {
3189
3200
  show_extras_: show_extras,
3190
- i18n_: i18n_
3201
+ i18n_: i18n_,
3202
+ expanding_container_element_: expanding_container_els
3191
3203
  }) : []);
3192
3204
  });
3193
3205
  $3hooq$solidjs.onCleanup(() => set_view_more_button_below_group());
@@ -3633,6 +3645,13 @@ const $cd0e5524f9476f9b$export$414f6a19d38e655c = _ref => {
3633
3645
  const label = $3hooq$solidjs.createMemo(() => value().name_ || value().value_ + "");
3634
3646
  const count_zero = $3hooq$solidjs.createMemo(() => value().count_ === 0);
3635
3647
  return $3hooq$solidjsweb.ssrElement("button", $3hooq$solidjsweb.mergeProps(attributes, {
3648
+ type: "button",
3649
+ get ["aria-pressed"]() {
3650
+ return is_selected();
3651
+ },
3652
+ get ["aria-label"]() {
3653
+ return value().count_ != undefined ? "".concat(label(), ", ").concat(value().count_) : label();
3654
+ },
3636
3655
  get disabled() {
3637
3656
  return count_zero() && !is_selected();
3638
3657
  },
@@ -3811,7 +3830,14 @@ function $476a3dc36afc1938$export$82ed4b28ecb67608(_ref) {
3811
3830
  return !!(data !== null && data !== void 0 && data.some(item => $e2d74bb03cc5252e$export$325f75597868c4f0(item) === value));
3812
3831
  });
3813
3832
  const value = $3hooq$solidjs.createMemo(() => checkbox().value_);
3814
- const label_text = $3hooq$solidjs.createMemo(() => checkbox().name_ || value() + "");
3833
+ const label_text = $3hooq$solidjs.createMemo(() => {
3834
+ const name = checkbox().name_;
3835
+ if (name) return name;
3836
+ const value_string = value() + "";
3837
+ if (backendFilterV2()) return value_string;
3838
+ // Legacy values are "Name;#hex" - split is used to get the name so that screen readers don't announce the hex code
3839
+ return value_string.split(";")[0] || value_string;
3840
+ });
3815
3841
  const count = $3hooq$solidjs.createMemo(() => checkbox().count_);
3816
3842
  const colorNameDatasetValue = $3hooq$solidjs.createMemo(() => {
3817
3843
  var _split2;
@@ -3899,7 +3925,8 @@ function $476a3dc36afc1938$export$82ed4b28ecb67608(_ref) {
3899
3925
  $3hooq$solidjs.createRenderEffect(() => {
3900
3926
  set_view_more_button_below_group_(togglable_rest() ? $3hooq$solidjsweb.createComponent((0, $b0477e4d832f090e$export$ca21a16d65b3dd8), {
3901
3927
  show_extras_: show_extras_signal,
3902
- i18n_: i18n_
3928
+ i18n_: i18n_,
3929
+ expanding_container_element_: expanding_container_els
3903
3930
  }) : []);
3904
3931
  });
3905
3932
  $3hooq$solidjs.onCleanup(() => set_view_more_button_below_group_());
@@ -4239,9 +4266,9 @@ function $8e7ac26c00243687$var$find_str_arr_in_str_arr_arr(operation, haystack,
4239
4266
  var $164d474fea221d77$var$_tmpl$ = ["<div", ' class="filter-collapsible">', "</div>"],
4240
4267
  $164d474fea221d77$var$_tmpl$2 = ["<button", ' class="clear-group"><!--$-->', "<!--/--><span>", "</span></button>"],
4241
4268
  $164d474fea221d77$var$_tmpl$3 = ["<div", ' class="view-more-clear"><!--$-->', "<!--/--><!--$-->", "<!--/--></div>"],
4242
- $164d474fea221d77$var$_tmpl$4 = ["<div", ' class="filter-collapsible-body"><div class="filter-part"><!--$-->', "<!--/--><!--$-->", "<!--/--></div><!--$-->", "<!--/--></div>"],
4269
+ $164d474fea221d77$var$_tmpl$4 = ["<div", ' class="filter-collapsible-body"><fieldset class="filter-part"', "><!--$-->", "<!--/--><!--$-->", "<!--/--></fieldset><!--$-->", "<!--/--></div>"],
4243
4270
  $164d474fea221d77$var$_tmpl$5 = ["<details", ' class="filter-collapsible"', "></details>"],
4244
- $164d474fea221d77$var$_tmpl$6 = ["<summary", ' class="filter-group-summary"><div class="summary"><span>', '</span><div class="selected-w-sign"><!--$-->', "<!--/--><!--$-->", "<!--/--></div></div></summary>"],
4271
+ $164d474fea221d77$var$_tmpl$6 = ["<summary", ' class="filter-group-summary"><div class="summary"><span', ">", '</span><div class="selected-w-sign"><!--$-->', "<!--/--><!--$-->", "<!--/--></div></div></summary>"],
4245
4272
  $164d474fea221d77$var$_tmpl$7 = ["<div", ' class="ungrouped">', "</div>"],
4246
4273
  $164d474fea221d77$var$_tmpl$8 = ["<button", ' class="clear-all-filters major">', "</button>"];
4247
4274
  function $164d474fea221d77$export$3f1a388cc0d8fed7(props) {
@@ -4338,13 +4365,14 @@ function $164d474fea221d77$var$ActualFilterBody(props) {
4338
4365
  var _get_details_width;
4339
4366
  return get_details_width === null || get_details_width === void 0 ? void 0 : (_get_details_width = get_details_width()) === null || _get_details_width === void 0 ? void 0 : _get_details_width();
4340
4367
  });
4368
+ const title_id = $3hooq$depictaiutilishared.make_random_classname();
4341
4369
  return $3hooq$solidjsweb.createComponent((0, $4cfe8400ed3f92c4$export$6c6d7a51fa9aa15d), {
4342
4370
  is_open_: is_open,
4343
4371
  get details_() {
4344
4372
  return $3hooq$solidjsweb.ssr($164d474fea221d77$var$_tmpl$5, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrAttribute("data-group-title", $3hooq$solidjsweb.escape(section_, true), false));
4345
4373
  },
4346
4374
  get summary_() {
4347
- return $3hooq$solidjsweb.ssr($164d474fea221d77$var$_tmpl$6, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape(section_), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
4375
+ return $3hooq$solidjsweb.ssr($164d474fea221d77$var$_tmpl$6, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrAttribute("id", $3hooq$solidjsweb.escape(title_id, true), false), $3hooq$solidjsweb.escape(section_), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
4348
4376
  get when() {
4349
4377
  return a_filter_is_selected();
4350
4378
  },
@@ -4366,7 +4394,7 @@ function $164d474fea221d77$var$ActualFilterBody(props) {
4366
4394
  })));
4367
4395
  },
4368
4396
  get children() {
4369
- return $3hooq$solidjsweb.ssr($164d474fea221d77$var$_tmpl$4, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent(SearchThisFilterGroup_, {})), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Index), {
4397
+ return $3hooq$solidjsweb.ssr($164d474fea221d77$var$_tmpl$4, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrAttribute("aria-labelledby", $3hooq$solidjsweb.escape(title_id, true), false), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent(SearchThisFilterGroup_, {})), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Index), {
4370
4398
  get each() {
4371
4399
  return searched_filter_array_();
4372
4400
  },
@@ -4981,8 +5009,8 @@ var $ae261a5687fe84f4$var$_tmpl$ = ["<svg", ' xmlns="http://www.w3.org/2000/svg"
4981
5009
  function $ae261a5687fe84f4$export$cb808a3c41736d8e() {
4982
5010
  return $3hooq$solidjsweb.ssr($ae261a5687fe84f4$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey());
4983
5011
  }
4984
- var $f70cc6dfcadf0fd5$var$_tmpl$ = ["<div", ' class="filters"><div class="body">', "</div></div>"],
4985
- $f70cc6dfcadf0fd5$var$_tmpl$2 = ["<div", ' class="sorting"><div class="body">', "</div></div>"],
5012
+ var $f70cc6dfcadf0fd5$var$_tmpl$ = ["<section", ' class="filters"', '><div class="body">', "</div></section>"],
5013
+ $f70cc6dfcadf0fd5$var$_tmpl$2 = ["<section", ' class="sorting"', '><div class="body">', "</div></section>"],
4986
5014
  $f70cc6dfcadf0fd5$var$_tmpl$3 = ["<div", ' class="sort-and-filter-buttons"><div class="outer"><div class="inner"><!--$-->', "<!--/--><!--$-->", "<!--/--><!--$-->", "<!--/--></div></div></div>"],
4987
5015
  $f70cc6dfcadf0fd5$var$_tmpl$4 = ["<span", ' class="num-filters" style="', '">', "</span>"],
4988
5016
  $f70cc6dfcadf0fd5$var$_tmpl$5 = ["<div", ' class="open-filters-button-container" style="', '"><!--$-->', "<!--/--><button", ' class="', '" type="button"', ' style="', '"><!--$-->', "<!--/--><span>", "</span></button></div>"],
@@ -5059,6 +5087,27 @@ function $f70cc6dfcadf0fd5$export$d7841e452f2e59a8(_ref) {
5059
5087
  available_sortings_: available_sortings_,
5060
5088
  meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
5061
5089
  };
5090
+ // Keyboard accessibility for the desktop panels (rendered after the product grid in the DOM): when the user
5091
+ // opens a panel we move focus into it, and restore focus to the toggle button on close. Intent is tracked with
5092
+ // a plain flag set in the buttons' click handlers - `filters_open`/`sorting_open` also change programmatically
5093
+ // (undo toast, history-state restore, SDK consumers), and those must not steal focus.
5094
+ let user_opened_panel = false;
5095
+ let filter_toggle_button;
5096
+ let sort_toggle_button;
5097
+ let current_panel;
5098
+ let current_panel_toggle_button;
5099
+ const focus_panel_when_in_dom = panel => $3hooq$depictaiutilishared.catchify(async () => {
5100
+ // Bounded wait: if the panel never lands in the DOM (e.g. it's superseded by a rapid re-render before
5101
+ // insertion), the timeout lets this promise resolve instead of keeping `panel` - and the observer
5102
+ // listener it registers - referenced forever.
5103
+ await (0, $3hooq$depictaiutilishared.observer).wait_for_element(panel, 4000);
5104
+ if (panel.isConnected) panel.focus();
5105
+ })();
5106
+ const register_desktop_panel = (el, toggle_button, should_focus) => {
5107
+ current_panel = el;
5108
+ current_panel_toggle_button = toggle_button;
5109
+ if (should_focus) focus_panel_when_in_dom(el);
5110
+ };
5062
5111
  const make_open_filters_button = function () {
5063
5112
  let adhere_to_width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5064
5113
  let is_tabbable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@@ -5069,7 +5118,9 @@ function $f70cc6dfcadf0fd5$export$d7841e452f2e59a8(_ref) {
5069
5118
  search_sorting_open_: search_sorting_open_,
5070
5119
  number_of_rendered_selected_filters_items_: number_of_rendered_selected_filters_items_,
5071
5120
  filter_button_width_: adhere_to_width ? filter_button_width_ : undefined,
5072
- hide_button_: hide_filters
5121
+ hide_button_: hide_filters,
5122
+ on_user_open_: () => user_opened_panel = true,
5123
+ button_ref_: is_tabbable ? el => filter_toggle_button = el : undefined
5073
5124
  });
5074
5125
  };
5075
5126
  const make_open_sorting_button = function () {
@@ -5083,7 +5134,9 @@ function $f70cc6dfcadf0fd5$export$d7841e452f2e59a8(_ref) {
5083
5134
  search_sorting_open_: search_sorting_open_,
5084
5135
  available_sortings_: available_sortings_,
5085
5136
  sort_button_width_: adhere_to_width ? sort_button_width_ : undefined,
5086
- meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
5137
+ meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
5138
+ on_user_open_: () => user_opened_panel = true,
5139
+ button_ref_: is_tabbable ? el => sort_toggle_button = el : undefined
5087
5140
  });
5088
5141
  };
5089
5142
  let open_modal_;
@@ -5103,10 +5156,35 @@ function $f70cc6dfcadf0fd5$export$d7841e452f2e59a8(_ref) {
5103
5156
  grid_is_in_original_state = true;
5104
5157
  }
5105
5158
  });
5159
+ // Restore focus to the relevant toggle button when a desktop panel is torn down while focus is still inside it.
5160
+ const restore_focus_to_toggle_on_close = () => {
5161
+ const button_to_restore = current_panel_toggle_button;
5162
+ const focus_was_in_panel = !!current_panel && current_panel.contains(document.activeElement);
5163
+ current_panel = undefined;
5164
+ current_panel_toggle_button = undefined;
5165
+ if (focus_was_in_panel) button_to_restore === null || button_to_restore === void 0 || button_to_restore.focus();
5166
+ };
5167
+ // `<section>` + `aria-label` so the panel announces itself ("Filters"/"Sort") when we move focus to it; the bare
5168
+ // tabindex=-1 container would otherwise give screen readers nothing to read on focus. A semantic <section> avoids
5169
+ // an ARIA role and the UA styling pitfalls of <fieldset>; the existing CSS targets the `.filters`/`.sorting` class.
5170
+ const FiltersPanel = should_focus => $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
5171
+ get when() {
5172
+ return !hide_filters();
5173
+ },
5174
+ get children() {
5175
+ return $3hooq$solidjsweb.ssr($f70cc6dfcadf0fd5$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrAttribute("tabindex", -1, false) + $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape(i18n_.filters_(), true), false), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $164d474fea221d77$export$3f1a388cc0d8fed7), filter_options)));
5176
+ }
5177
+ });
5178
+ const SortingPanel = should_focus => $3hooq$solidjsweb.ssr($f70cc6dfcadf0fd5$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrAttribute("tabindex", -1, false) + $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape(i18n_.sorting_text_(), true), false), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3bd211c857f81dfd$export$1f1775a58da589b5), sorting_options)));
5106
5179
  $3hooq$solidjs.createEffect(() => {
5180
+ // Consume the user-intent flag once per run, in every branch, so a stale flag can't leak into a later
5181
+ // resize-triggered re-render and steal focus.
5182
+ const should_focus_panel = user_opened_panel;
5183
+ user_opened_panel = false;
5107
5184
  if (!filters_open() && !sorting_open()) {
5108
5185
  var _close_modal_;
5109
5186
  (_close_modal_ = close_modal_) === null || _close_modal_ === void 0 || _close_modal_();
5187
+ restore_focus_to_toggle_on_close();
5110
5188
  set_extra_els_in_results_container_("");
5111
5189
  } else if (isSmall()()) {
5112
5190
  var _open_modal_;
@@ -5116,19 +5194,15 @@ function $f70cc6dfcadf0fd5$export$d7841e452f2e59a8(_ref) {
5116
5194
  set_sorting_open(false);
5117
5195
  return;
5118
5196
  }
5197
+ // The modal manages its own focus; just drop the desktop panel reference.
5198
+ current_panel = undefined;
5199
+ current_panel_toggle_button = undefined;
5119
5200
  (_open_modal_ = open_modal_) === null || _open_modal_ === void 0 || _open_modal_();
5120
5201
  set_extra_els_in_results_container_("");
5121
5202
  } else {
5122
5203
  var _close_modal_2;
5123
5204
  (_close_modal_2 = close_modal_) === null || _close_modal_2 === void 0 || _close_modal_2();
5124
- if (filters_open()) set_extra_els_in_results_container_(() => $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
5125
- get when() {
5126
- return !hide_filters();
5127
- },
5128
- get children() {
5129
- return $3hooq$solidjsweb.ssr($f70cc6dfcadf0fd5$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $164d474fea221d77$export$3f1a388cc0d8fed7), filter_options)));
5130
- }
5131
- }));else set_extra_els_in_results_container_($3hooq$solidjsweb.ssr($f70cc6dfcadf0fd5$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3bd211c857f81dfd$export$1f1775a58da589b5), sorting_options))));
5205
+ if (filters_open()) set_extra_els_in_results_container_(() => FiltersPanel(should_focus_panel));else set_extra_els_in_results_container_(SortingPanel(should_focus_panel));
5132
5206
  }
5133
5207
  });
5134
5208
  $3hooq$depictaiutilishared.catchify(async () => {
@@ -5179,7 +5253,9 @@ function $f70cc6dfcadf0fd5$var$OpenFiltersButton(_ref3) {
5179
5253
  filter_button_width_: filter_button_width_,
5180
5254
  tabindex_: tabindex_,
5181
5255
  number_of_rendered_selected_filters_items_: [num_selected_filters],
5182
- hide_button_: hide_button_
5256
+ hide_button_: hide_button_,
5257
+ on_user_open_: on_user_open_,
5258
+ button_ref_: button_ref_
5183
5259
  } = _ref3;
5184
5260
  const filters_closed = $3hooq$solidjs.createMemo(() => !search_filters_open_[0]());
5185
5261
  // We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
@@ -5192,7 +5268,7 @@ function $f70cc6dfcadf0fd5$var$OpenFiltersButton(_ref3) {
5192
5268
  get children() {
5193
5269
  return $3hooq$solidjsweb.ssr($f70cc6dfcadf0fd5$var$_tmpl$4, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrStyle(filters_closed() ? "" : "opacity:0"), $3hooq$solidjsweb.escape(num_selected_filters()));
5194
5270
  }
5195
- })), $3hooq$solidjsweb.ssrAttribute("tabindex", $3hooq$solidjsweb.escape(tabindex_, true), false), "".concat(!filters_closed() ? "major" : "", " ").concat(filters_closed() ? "minor" : "").concat("filter toggle-button major-minor-transition" + ((0, $3hooq$solidjsweb.isServer) ? " minor" : "")), $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape((filters_closed() ? i18n_.open_filters_ : i18n_.close_filters_)(), true), false), $3hooq$solidjsweb.ssrStyle(filter_button_width_ !== null && filter_button_width_ !== void 0 && filter_button_width_() ? {
5271
+ })), $3hooq$solidjsweb.ssrAttribute("tabindex", $3hooq$solidjsweb.escape(tabindex_, true), false), "".concat(!filters_closed() ? "major" : "", " ").concat(filters_closed() ? "minor" : "").concat("filter toggle-button major-minor-transition" + ((0, $3hooq$solidjsweb.isServer) ? " minor" : "")), $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape((filters_closed() ? i18n_.open_filters_ : i18n_.close_filters_)(), true), false) + $3hooq$solidjsweb.ssrAttribute("aria-expanded", !filters_closed(), false), $3hooq$solidjsweb.ssrStyle(filter_button_width_ !== null && filter_button_width_ !== void 0 && filter_button_width_() ? {
5196
5272
  width: filter_button_width_() + "px"
5197
5273
  } : {}), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
5198
5274
  get when() {
@@ -5216,11 +5292,13 @@ function $f70cc6dfcadf0fd5$var$OpenSortingButton(_ref4) {
5216
5292
  search_sorting_open_: search_sorting_open_,
5217
5293
  sort_button_width_: sort_button_width_,
5218
5294
  tabindex_: tabindex_,
5219
- meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_
5295
+ meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_,
5296
+ on_user_open_: on_user_open_,
5297
+ button_ref_: button_ref_
5220
5298
  } = _ref4;
5221
5299
  const sorting_closed = $3hooq$solidjs.createMemo(() => !search_sorting_open_[0]());
5222
5300
  // We assume in embedded_num_products that this is a single HTMLElement so pls change there if you change it here
5223
- return $3hooq$solidjsweb.ssr($f70cc6dfcadf0fd5$var$_tmpl$6, $3hooq$solidjsweb.ssrHydrationKey(), "".concat(!sorting_closed() ? "major" : "", " ").concat(sorting_closed() ? "minor" : "", " toggle-button for-sorting major-minor-transition"), $3hooq$solidjsweb.ssrAttribute("tabindex", $3hooq$solidjsweb.escape(tabindex_, true), false) + $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape((sorting_closed() ? i18n_.open_sorting_ : i18n_.close_sorting_)(), true), false), $3hooq$solidjsweb.ssrStyle(sort_button_width_ !== null && sort_button_width_ !== void 0 && sort_button_width_() ? {
5301
+ return $3hooq$solidjsweb.ssr($f70cc6dfcadf0fd5$var$_tmpl$6, $3hooq$solidjsweb.ssrHydrationKey(), "".concat(!sorting_closed() ? "major" : "", " ").concat(sorting_closed() ? "minor" : "", " toggle-button for-sorting major-minor-transition"), $3hooq$solidjsweb.ssrAttribute("tabindex", $3hooq$solidjsweb.escape(tabindex_, true), false) + $3hooq$solidjsweb.ssrAttribute("aria-label", $3hooq$solidjsweb.escape((sorting_closed() ? i18n_.open_sorting_ : i18n_.close_sorting_)(), true), false) + $3hooq$solidjsweb.ssrAttribute("aria-expanded", !sorting_closed(), false), $3hooq$solidjsweb.ssrStyle(sort_button_width_ !== null && sort_button_width_ !== void 0 && sort_button_width_() ? {
5224
5302
  width: sort_button_width_() + "px"
5225
5303
  } : {}),
5226
5304
  // Show the title of the currently selected sorting when the sorting is closed, if there's currently a sorting selected
@@ -11,7 +11,7 @@ import { GetListingRequest } from "@depict-ai/types/api/GetListingRequest";
11
11
  import { BaseSearchRequestV3 } from "@depict-ai/types/api/BaseSearchRequestV3";
12
12
  import { FeaturedInDisplay } from "@depict-ai/types/api/FeaturedInResponseV3";
13
13
  import { SearchFilter as _SearchFilter3 } from "@depict-ai/types/api/SearchRequestV2";
14
- export const version = "4.10.12";
14
+ export const version = "4.10.14";
15
15
  /**
16
16
  * Use `javascript_media_query` but return a reactive accessor instead of taking a callback function
17
17
  */