@depict-ai/ui 2.0.1 → 2.0.3

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.
@@ -1,6 +1,6 @@
1
1
  var $5vyXB$depictaiutilishared = require("@depict-ai/utilishared/latest");
2
- var $5vyXB$solidjsweb = require("solid-js/web");
3
2
  var $5vyXB$solidjs = require("solid-js");
3
+ var $5vyXB$solidjsweb = require("solid-js/web");
4
4
  require("../../multi_import_deduplicator.cjs").register_es_version("ui", "latest");
5
5
  function $parcel$export(e, n, v, s) {
6
6
  Object.defineProperty(e, n, {
@@ -10,6 +10,7 @@ function $parcel$export(e, n, v, s) {
10
10
  configurable: true
11
11
  });
12
12
  }
13
+ $parcel$export(module.exports, "make_accurate_size_accessor", () => $e5f442fb78c98741$export$9f191182275e9ef);
13
14
  $parcel$export(module.exports, "RecommendationSlider", () => $72f96c4782db0b1b$export$9574e176201e5e8d);
14
15
  $parcel$export(module.exports, "RecommendationGrid", () => $1f8dbf7e28b3eff2$export$9756467d34d91cdb);
15
16
  $parcel$export(module.exports, "ShopifyResponsiveImg", () => $19950faaac026e09$export$6e5611bc7e57e477);
@@ -60,7 +61,22 @@ $parcel$export(module.exports, "defaultColsAtSize", () => $a3280f0aad997933$expo
60
61
  $parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $a3280f0aad997933$export$7bf543b9d9be2c22);
61
62
  $parcel$export(module.exports, "version", () => $b757f75811f3261f$export$83d89fbfd8236492);
62
63
  /*! Depict.ai search and product listing SDK */
63
- const $b757f75811f3261f$export$83d89fbfd8236492 = "2.0.1";
64
+ const $b757f75811f3261f$export$83d89fbfd8236492 = "2.0.3";
65
+
66
+ /** @jsxImportSource solid-js */
67
+
68
+ function $e5f442fb78c98741$export$9f191182275e9ef(what_to_watch) {
69
+ const [size, setSize] = $5vyXB$solidjs.createSignal();
70
+ const resizeObserver = new ResizeObserver($5vyXB$depictaiutilishared.catchify(records => {
71
+ for (let j = 0; j < records.length; j++) {
72
+ const width = records[j].borderBoxSize?.[0]?.inlineSize ?? what_to_watch.getBoundingClientRect().width;
73
+ setSize(width);
74
+ }
75
+ }));
76
+ resizeObserver.observe(what_to_watch);
77
+ $5vyXB$solidjs.onCleanup(() => resizeObserver.disconnect());
78
+ return size;
79
+ }
64
80
  const $4e04be41243c3d80$var$transform_elements = sorted_cols_at_size => {
65
81
  const cols_at_size = [];
66
82
  for (let i = 0; i < sorted_cols_at_size.length; i++) {
@@ -1061,9 +1077,9 @@ function $235a2771a44e28e9$export$fecbb157621501bd({
1061
1077
  }));
1062
1078
  return outmost_element;
1063
1079
  }
1064
- const $b3cf6ca8dc0e9998$var$_tmpl$ = ["<span", ' class="count">', "</span>"],
1065
- $b3cf6ca8dc0e9998$var$_tmpl$2 = ["<label", ' class="', '"', '><div class="left"><input type="checkbox"', "", "", '><span class="custom-indicator"></span><span class="text line-clamp">', "</span></div><!--#-->", "<!--/--></label>"];
1066
- const $b3cf6ca8dc0e9998$export$48513f6b9f8ce62d = props => {
1080
+ const $1c63082b2da848ad$var$_tmpl$ = ["<span", ' class="count">', "</span>"],
1081
+ $1c63082b2da848ad$var$_tmpl$2 = ["<label", ' class="', '"', '><div class="left"><input type="checkbox"', "", "", '><span class="custom-indicator"></span><span class="text line-clamp">', "</span></div><!--#-->", "<!--/--></label>"];
1082
+ const $1c63082b2da848ad$export$48513f6b9f8ce62d = props => {
1067
1083
  // It seems like there's no diffing without memos here (since we often just have computations in the getters above that update to the same result often because their dependencies change with unrelated changes often), so put memos here to avoid unneeded DOM changes
1068
1084
  const count = $5vyXB$solidjs.createMemo(() => props.count_);
1069
1085
  const label = $5vyXB$solidjs.createMemo(() => props.label_);
@@ -1071,12 +1087,12 @@ const $b3cf6ca8dc0e9998$export$48513f6b9f8ce62d = props => {
1071
1087
  const value = $5vyXB$solidjs.createMemo(() => props.value_);
1072
1088
  const is_count_zero = $5vyXB$solidjs.createMemo(() => props.is_count_zero_ || count() === 0);
1073
1089
  const id = $5vyXB$depictaiutilishared.make_random_classname();
1074
- return (/* We can't use actual margin because ExpandingContainer gets messed up */$5vyXB$solidjsweb.ssr($b3cf6ca8dc0e9998$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `input-row ${is_count_zero() ? "count-0" : ""}`, $5vyXB$solidjsweb.ssrAttribute("for", $5vyXB$solidjsweb.escape(id, true), false), $5vyXB$solidjsweb.ssrAttribute("name", $5vyXB$solidjsweb.escape(value(), true), false) + $5vyXB$solidjsweb.ssrAttribute("id", $5vyXB$solidjsweb.escape(id, true), false), $5vyXB$solidjsweb.ssrAttribute("checked", checked(), true), $5vyXB$solidjsweb.ssrAttribute("disabled", !checked() && is_count_zero(), true), $5vyXB$solidjsweb.escape(label()) || $5vyXB$solidjsweb.escape(value()), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
1090
+ return (/* We can't use actual margin because ExpandingContainer gets messed up */$5vyXB$solidjsweb.ssr($1c63082b2da848ad$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `input-row ${is_count_zero() ? "count-0" : ""}`, $5vyXB$solidjsweb.ssrAttribute("for", $5vyXB$solidjsweb.escape(id, true), false), $5vyXB$solidjsweb.ssrAttribute("name", $5vyXB$solidjsweb.escape(value(), true), false) + $5vyXB$solidjsweb.ssrAttribute("id", $5vyXB$solidjsweb.escape(id, true), false), $5vyXB$solidjsweb.ssrAttribute("checked", checked(), true), $5vyXB$solidjsweb.ssrAttribute("disabled", !checked() && is_count_zero(), true), $5vyXB$solidjsweb.escape(label()) || $5vyXB$solidjsweb.escape(value()), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
1075
1091
  get when() {
1076
1092
  return count() != undefined;
1077
1093
  },
1078
1094
  get children() {
1079
- return $5vyXB$solidjsweb.ssr($b3cf6ca8dc0e9998$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(count()));
1095
+ return $5vyXB$solidjsweb.ssr($1c63082b2da848ad$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(count()));
1080
1096
  }
1081
1097
  })))
1082
1098
  );
@@ -1127,7 +1143,7 @@ function $d94869c80e337a3d$export$dd948f91abc3a1c4({
1127
1143
  });
1128
1144
  const render_checkbox = checkbox => {
1129
1145
  // Checkbox always calls the getters in props, so we don't wrap these values into memos
1130
- return $5vyXB$solidjsweb.createComponent((0, $b3cf6ca8dc0e9998$export$48513f6b9f8ce62d), {
1146
+ return $5vyXB$solidjsweb.createComponent((0, $1c63082b2da848ad$export$48513f6b9f8ce62d), {
1131
1147
  get value_() {
1132
1148
  return checkbox().value_;
1133
1149
  },
@@ -1601,7 +1617,7 @@ function $3bdc00a1353c1150$var$render_stuff(data, existing_filter, i18n_) {
1601
1617
  // for some reason the for thing doesn't dispose of us if the key no longer exists?? so I'm doing it with show instead
1602
1618
  const value = $5vyXB$solidjs.createMemo(() => data()[key]); // still sometimes get undefined here even though we have <Show>
1603
1619
  const has_expandable = $5vyXB$solidjs.createMemo(() => !!Object.keys(value()?.children_ || {}).length);
1604
- return $5vyXB$solidjsweb.ssr($3bdc00a1353c1150$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `checkbox-details ${has_expandable() ? "expandable" : ""}`, $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $b3cf6ca8dc0e9998$export$48513f6b9f8ce62d), {
1620
+ return $5vyXB$solidjsweb.ssr($3bdc00a1353c1150$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `checkbox-details ${has_expandable() ? "expandable" : ""}`, $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $1c63082b2da848ad$export$48513f6b9f8ce62d), {
1605
1621
  get value_() {
1606
1622
  return JSON.stringify(value()?.value_);
1607
1623
  },
@@ -1841,9 +1857,10 @@ function $3bdc00a1353c1150$var$expand_until_choice(data_structure) {
1841
1857
  }
1842
1858
  });
1843
1859
  }
1844
- const $0ef1681699140f1a$var$_tmpl$ = ["<div", ' class="checkbox-grid">', "</div>"],
1845
- $0ef1681699140f1a$var$_tmpl$2 = ["<span", ' class="count-wrapper"><span class="count">', "</span></span>"],
1846
- $0ef1681699140f1a$var$_tmpl$3 = ["<button", "", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></button>"];
1860
+ const $0ef1681699140f1a$var$_tmpl$ = ["<div", ' class="checkbox-grid" style="position:absolute;z-index:-1;pointer-events:none;opacity:0">', "</div>"],
1861
+ $0ef1681699140f1a$var$_tmpl$2 = ["<span", ' class="count-wrapper"><span class="count">', "</span></span>"];
1862
+ const $0ef1681699140f1a$var$gap_px = 5;
1863
+ const $0ef1681699140f1a$var$max_columns = 3;
1847
1864
  const $0ef1681699140f1a$export$414f6a19d38e655c = ({
1848
1865
  filter_: filter_,
1849
1866
  selected_filters_: [get_selected_filters, set_selected_filters]
@@ -1866,23 +1883,139 @@ const $0ef1681699140f1a$export$414f6a19d38e655c = ({
1866
1883
  count_: meta.counts?.[index]
1867
1884
  }));
1868
1885
  });
1869
- return $5vyXB$solidjsweb.ssr($0ef1681699140f1a$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Index), {
1870
- get each() {
1871
- return buttons();
1886
+ const [sizes_set, set_sizes_set] = $5vyXB$solidjs.createSignal(new Set(), {
1887
+ equals: false
1888
+ });
1889
+ const [cols_at_size, set_cols_at_size] = $5vyXB$solidjs.createSignal([[1, "0px", ""]]);
1890
+ const [container, set_container] = $5vyXB$solidjs.createSignal();
1891
+ const container_width_accessor = $5vyXB$solidjs.createMemo(() => {
1892
+ const element = container();
1893
+ if (!element) return;
1894
+ return $e5f442fb78c98741$export$9f191182275e9ef(element);
1895
+ });
1896
+ const [shadow_children, set_shadow_children] = $5vyXB$solidjs.createSignal(new Set(), {
1897
+ equals: false
1898
+ });
1899
+ const shadow_grid = $5vyXB$solidjsweb.ssr($0ef1681699140f1a$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape([...shadow_children()])); // for getting the smallest possible sizes of all the items
1900
+ $5vyXB$solidjs.createEffect(() => {
1901
+ const container_width = container_width_accessor()?.();
1902
+ if (container_width == undefined) return;
1903
+ $0ef1681699140f1a$var$adjust_sizes(container_width, sizes_set(), set_cols_at_size);
1904
+ });
1905
+ return [shadow_grid, $5vyXB$solidjsweb.createComponent((0, $f48d0fbb00835aaa$export$d21e32dfedac04be), {
1906
+ get cols_at_size() {
1907
+ return cols_at_size();
1872
1908
  },
1873
- children: value => {
1874
- const is_selected = $5vyXB$solidjs.createMemo(() => existing_filter()?.data?.includes(value().value_));
1875
- return $5vyXB$solidjsweb.ssr($0ef1681699140f1a$var$_tmpl$3, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.ssrAttribute("disabled", value().count_ === 0 && !is_selected(), true), `${!is_selected() ? "minor" : ""} ${is_selected() ? "major" : ""} major-minor-transition`, $5vyXB$solidjsweb.escape(value().value_), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
1876
- get when() {
1877
- return value().count_ != undefined;
1909
+ grid_spacing: $0ef1681699140f1a$var$gap_px + "px",
1910
+ rows: "all",
1911
+ layout: "grid",
1912
+ element_attributes: {
1913
+ class: "checkbox-grid",
1914
+ ref: el => set_container(el)
1915
+ },
1916
+ get children() {
1917
+ return $5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Index), {
1918
+ get each() {
1919
+ return buttons();
1878
1920
  },
1879
- get children() {
1880
- return $5vyXB$solidjsweb.ssr($0ef1681699140f1a$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(value().count_));
1921
+ children: value => {
1922
+ const is_selected = $5vyXB$solidjs.createMemo(() => existing_filter()?.data?.includes(value().value_));
1923
+ const MakeButton = attributes => $5vyXB$solidjsweb.ssrElement("button", () => ({
1924
+ ...attributes,
1925
+ "disabled": value().count_ === 0 && !is_selected(),
1926
+ "classList": {
1927
+ minor: !is_selected(),
1928
+ major: is_selected(),
1929
+ "major-minor-transition": true
1930
+ }
1931
+ }), () => ["<!--#-->", $5vyXB$solidjsweb.escape(value().value_), "<!--/-->", "<!--#-->", $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
1932
+ get when() {
1933
+ return value().count_ != undefined;
1934
+ },
1935
+ get children() {
1936
+ return $5vyXB$solidjsweb.ssr($0ef1681699140f1a$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(value().count_));
1937
+ }
1938
+ })), "<!--/-->"], true);
1939
+ const invisible_size_button = $5vyXB$solidjsweb.createComponent(MakeButton, {});
1940
+ const smallest_possible_size = $e5f442fb78c98741$export$9f191182275e9ef(invisible_size_button); // create ResizeObserver for the invisible size button where the div hugs its content
1941
+ const sizes_value = $5vyXB$solidjs.untrack(sizes_set);
1942
+ const shadow_children_value = $5vyXB$solidjs.untrack(shadow_children);
1943
+ sizes_value.add(smallest_possible_size);
1944
+ set_sizes_set(sizes_value);
1945
+ shadow_children_value.add(invisible_size_button);
1946
+ set_shadow_children(shadow_children_value);
1947
+ $5vyXB$solidjs.onCleanup(() => {
1948
+ const sizes_value = $5vyXB$solidjs.untrack(sizes_set);
1949
+ const shadow_children_value = $5vyXB$solidjs.untrack(shadow_children);
1950
+ sizes_value.delete(smallest_possible_size);
1951
+ set_sizes_set(sizes_value);
1952
+ shadow_children_value.delete(invisible_size_button);
1953
+ set_shadow_children(shadow_children_value);
1954
+ });
1955
+ // The actual button that will be visible
1956
+ return $5vyXB$solidjsweb.createComponent(MakeButton, {});
1881
1957
  }
1882
- })));
1958
+ });
1883
1959
  }
1884
- })));
1960
+ })];
1885
1961
  };
1962
+ /**
1963
+ * Calculate and apply cols_at_size overrides to fit as many items as possible in a row, evenly spaced
1964
+ */
1965
+ function $0ef1681699140f1a$var$adjust_sizes(container_width, sizes, set_cols_at_size) {
1966
+ let current_row_index = 0;
1967
+ let current_row_items = [];
1968
+ const column_to_row_result = {};
1969
+ const check_would_fit_evenly = (min_size_of_item, at_number_of_columnns) => {
1970
+ const would_have_even_size = container_width / at_number_of_columnns - (at_number_of_columnns * 2 - 2) * ($0ef1681699140f1a$var$gap_px / 2) / at_number_of_columnns; // What size would our element have (without gaps), given that now every column had the same width (equation from Layout.tsx)
1971
+ return would_have_even_size >= min_size_of_item; // would this item still fit if we added another column? (probably what the caller has done with at_number_of_columns), given that every item has the same size
1972
+ };
1973
+
1974
+ for (const size_item of sizes) {
1975
+ const size = size_item();
1976
+ if (size == undefined) return; // Only do stuff if we know all the sizes
1977
+ const current_row_length = current_row_items.length;
1978
+ const can_add_another_column_initial_val = current_row_length < $0ef1681699140f1a$var$max_columns; // allow max 4 items per row
1979
+ let can_add_another_column = can_add_another_column_initial_val;
1980
+ if (can_add_another_column)
1981
+ // can we actually? Since adding another column changes the size of all elements in the row we need to check all of them
1982
+ for (let i = -1; i < current_row_length; i++) {
1983
+ // -1 is for the new item we're adding and every item is guaranteed to exist
1984
+ const size_to_check = current_row_items[i] ?? size;
1985
+ const would_have_columns = current_row_length + 1; // if we added another column
1986
+ const would_fit_evenly = check_would_fit_evenly(size_to_check, would_have_columns); // see comments in check_would_fit_evenly
1987
+ if (!would_fit_evenly) {
1988
+ can_add_another_column = false;
1989
+ break;
1990
+ }
1991
+ }
1992
+ if (can_add_another_column) current_row_items.push(size);else {
1993
+ column_to_row_result[++current_row_index] = current_row_length || 1; // overrides is indexed by 1 it seems, therefore ++curent_row_index
1994
+ current_row_items = [size]; // save current item for next row
1995
+ }
1996
+ }
1997
+
1998
+ const items_left_to_add = current_row_items.length;
1999
+ if (items_left_to_add) {
2000
+ let num_columns = 1; // We want to have as close to max_columns as possible in the last row
2001
+ let fits = true;
2002
+ do
2003
+ // Check if more columns would fit
2004
+ for (let i = 0; i < items_left_to_add; i++) {
2005
+ const item = current_row_items[i];
2006
+ const would_fit_evenly = check_would_fit_evenly(item, num_columns + 1);
2007
+ if (!would_fit_evenly) {
2008
+ fits = false;
2009
+ break;
2010
+ }
2011
+ } while (fits && ++num_columns < $0ef1681699140f1a$var$max_columns);
2012
+ column_to_row_result[++current_row_index] = num_columns; // Add last row that's left after loop finished
2013
+ }
2014
+
2015
+ set_cols_at_size([[1, "0px", "", null, {
2016
+ overrides: column_to_row_result
2017
+ }]]);
2018
+ }
1886
2019
  function $b54e6192d0caa293$export$d9f36cf74e24d595(media_query) {
1887
2020
  const signal = $5vyXB$solidjs.createSignal(false);
1888
2021
  $5vyXB$solidjs.onCleanup($5vyXB$depictaiutilishared.javascript_media_query(media_query, ({
@@ -1927,7 +2060,7 @@ function $b51a2b8b9355e66c$export$82ed4b28ecb67608({
1927
2060
  const hex_color = $5vyXB$solidjs.createMemo(() => checkbox().value_.split(";")?.[1] || "");
1928
2061
  const rgb_color = $5vyXB$solidjs.createMemo(() => $5vyXB$depictaiutilishared.hex_to_rgb(hex_color()));
1929
2062
  const black_contrast_better = $5vyXB$solidjs.createMemo(() => rgb_color() ? $b51a2b8b9355e66c$var$does_black_contrast_better(rgb_color()) : false);
1930
- const input_row = $5vyXB$solidjsweb.createComponent((0, $b3cf6ca8dc0e9998$export$48513f6b9f8ce62d), {
2063
+ const input_row = $5vyXB$solidjsweb.createComponent((0, $1c63082b2da848ad$export$48513f6b9f8ce62d), {
1931
2064
  get value_() {
1932
2065
  return checkbox().value_;
1933
2066
  },
@@ -7,7 +7,11 @@ import { CategorySuggestion, SearchSuggestionsResponse } from "@depict-ai/types/
7
7
  import { BaseSearchRequest } from "@depict-ai/types/api/BaseSearchRequest";
8
8
  import { SearchSuggestionsRequest } from "@depict-ai/types/api/SearchSuggestionsRequest";
9
9
  import { ProductListingRequest } from "@depict-ai/types/api/ProductListingRequest";
10
- export const version = "2.0.1";
10
+ export const version = "2.0.3";
11
+ /**
12
+ * Returns accessor with the size of the provided element, including padding and border (I think)
13
+ */
14
+ export function make_accurate_size_accessor(what_to_watch: HTMLElement): import("solid-js").Accessor<number | undefined>;
11
15
  export type SDKGridSpacing = string | {
12
16
  horizontal: string;
13
17
  vertical: string;
@@ -1,11 +1,26 @@
1
- import { add_to_version_info as $i7OB2$add_to_version_info, slider_fractional_factory as $i7OB2$slider_fractional_factory, make_random_classname as $i7OB2$make_random_classname, n_col_styling_with_dist as $i7OB2$n_col_styling_with_dist, catchify as $i7OB2$catchify, layout_get_visible_recs_without_partial_rows as $i7OB2$layout_get_visible_recs_without_partial_rows, layout_get_total_rec_amount_for_row as $i7OB2$layout_get_total_rec_amount_for_row, layout_media_query_header as $i7OB2$layout_media_query_header, report as $i7OB2$report, Amazing_Slider as $i7OB2$Amazing_Slider, slider_snap_css as $i7OB2$slider_snap_css, slider_fading_factory as $i7OB2$slider_fading_factory, observer as $i7OB2$observer, is_safari as $i7OB2$is_safari, useExpandingContainer as $i7OB2$useExpandingContainer, standard_price_format as $i7OB2$standard_price_format, dlog as $i7OB2$dlog, hex_to_rgb as $i7OB2$hex_to_rgb, relative_luminance_from_rgb as $i7OB2$relative_luminance_from_rgb, javascript_media_query as $i7OB2$javascript_media_query, fetch_recs as $i7OB2$fetch_recs, snakeCasifyObject as $i7OB2$snakeCasifyObject, instant_exec_on_suspect_history_change as $i7OB2$instant_exec_on_suspect_history_change, base_url as $i7OB2$base_url, get_depict_id as $i7OB2$get_depict_id, get_user_id as $i7OB2$get_user_id, get_session_id as $i7OB2$get_session_id, sort_obj as $i7OB2$sort_obj, fetch_retry as $i7OB2$fetch_retry, add_version_query_params as $i7OB2$add_version_query_params, dwarn as $i7OB2$dwarn, make_url_with_query_params as $i7OB2$make_url_with_query_params, edit_current_page_meta_tags as $i7OB2$edit_current_page_meta_tags, use_href_accessor as $i7OB2$use_href_accessor, base64_encode_unicode as $i7OB2$base64_encode_unicode, base64_decode_unicode as $i7OB2$base64_decode_unicode, queueMacroTask as $i7OB2$queueMacroTask, make_asyncIterable_exiter as $i7OB2$make_asyncIterable_exiter, href_change_ipns as $i7OB2$href_change_ipns, ContainedImage as $i7OB2$ContainedImage, deparallelize_no_drop as $i7OB2$deparallelize_no_drop, ListenableSet as $i7OB2$ListenableSet, insert_surfaces as $i7OB2$insert_surfaces } from "@depict-ai/utilishared/latest";
1
+ import { add_to_version_info as $i7OB2$add_to_version_info, catchify as $i7OB2$catchify, slider_fractional_factory as $i7OB2$slider_fractional_factory, make_random_classname as $i7OB2$make_random_classname, n_col_styling_with_dist as $i7OB2$n_col_styling_with_dist, layout_get_visible_recs_without_partial_rows as $i7OB2$layout_get_visible_recs_without_partial_rows, layout_get_total_rec_amount_for_row as $i7OB2$layout_get_total_rec_amount_for_row, layout_media_query_header as $i7OB2$layout_media_query_header, report as $i7OB2$report, Amazing_Slider as $i7OB2$Amazing_Slider, slider_snap_css as $i7OB2$slider_snap_css, slider_fading_factory as $i7OB2$slider_fading_factory, observer as $i7OB2$observer, is_safari as $i7OB2$is_safari, useExpandingContainer as $i7OB2$useExpandingContainer, standard_price_format as $i7OB2$standard_price_format, dlog as $i7OB2$dlog, hex_to_rgb as $i7OB2$hex_to_rgb, relative_luminance_from_rgb as $i7OB2$relative_luminance_from_rgb, javascript_media_query as $i7OB2$javascript_media_query, fetch_recs as $i7OB2$fetch_recs, snakeCasifyObject as $i7OB2$snakeCasifyObject, instant_exec_on_suspect_history_change as $i7OB2$instant_exec_on_suspect_history_change, base_url as $i7OB2$base_url, get_depict_id as $i7OB2$get_depict_id, get_user_id as $i7OB2$get_user_id, get_session_id as $i7OB2$get_session_id, sort_obj as $i7OB2$sort_obj, fetch_retry as $i7OB2$fetch_retry, add_version_query_params as $i7OB2$add_version_query_params, dwarn as $i7OB2$dwarn, make_url_with_query_params as $i7OB2$make_url_with_query_params, edit_current_page_meta_tags as $i7OB2$edit_current_page_meta_tags, use_href_accessor as $i7OB2$use_href_accessor, base64_encode_unicode as $i7OB2$base64_encode_unicode, base64_decode_unicode as $i7OB2$base64_decode_unicode, queueMacroTask as $i7OB2$queueMacroTask, make_asyncIterable_exiter as $i7OB2$make_asyncIterable_exiter, href_change_ipns as $i7OB2$href_change_ipns, ContainedImage as $i7OB2$ContainedImage, deparallelize_no_drop as $i7OB2$deparallelize_no_drop, ListenableSet as $i7OB2$ListenableSet, insert_surfaces as $i7OB2$insert_surfaces } from "@depict-ai/utilishared/latest";
2
+ import { createSignal as $i7OB2$createSignal, onCleanup as $i7OB2$onCleanup, createMemo as $i7OB2$createMemo, createResource as $i7OB2$createResource, Suspense as $i7OB2$Suspense, Show as $i7OB2$Show, createRenderEffect as $i7OB2$createRenderEffect, createRoot as $i7OB2$createRoot, For as $i7OB2$For, getOwner as $i7OB2$getOwner, runWithOwner as $i7OB2$runWithOwner, createEffect as $i7OB2$createEffect, untrack as $i7OB2$untrack, createUniqueId as $i7OB2$createUniqueId, createComputed as $i7OB2$createComputed, ErrorBoundary as $i7OB2$ErrorBoundary, Index as $i7OB2$Index, on as $i7OB2$on, batch as $i7OB2$batch, createReaction as $i7OB2$createReaction } from "solid-js";
2
3
  import { ssr as $i7OB2$ssr, ssrHydrationKey as $i7OB2$ssrHydrationKey, escape as $i7OB2$escape, createComponent as $i7OB2$createComponent, mergeProps as $i7OB2$mergeProps, isServer as $i7OB2$isServer, ssrElement as $i7OB2$ssrElement, ssrClassList as $i7OB2$ssrClassList, insert as $i7OB2$insert, ssrAttribute as $i7OB2$ssrAttribute, ssrStyle as $i7OB2$ssrStyle, Dynamic as $i7OB2$Dynamic } from "solid-js/web";
3
- import { createMemo as $i7OB2$createMemo, createResource as $i7OB2$createResource, Suspense as $i7OB2$Suspense, Show as $i7OB2$Show, createSignal as $i7OB2$createSignal, createRenderEffect as $i7OB2$createRenderEffect, createRoot as $i7OB2$createRoot, onCleanup as $i7OB2$onCleanup, For as $i7OB2$For, getOwner as $i7OB2$getOwner, runWithOwner as $i7OB2$runWithOwner, createEffect as $i7OB2$createEffect, untrack as $i7OB2$untrack, createUniqueId as $i7OB2$createUniqueId, createComputed as $i7OB2$createComputed, ErrorBoundary as $i7OB2$ErrorBoundary, Index as $i7OB2$Index, on as $i7OB2$on, batch as $i7OB2$batch, createReaction as $i7OB2$createReaction } from "solid-js";
4
4
 
5
5
  /*! Depict.ai search and product listing SDK */
6
6
  import { register_es_version } from "../../multi_import_deduplicator.mjs";
7
7
  register_es_version("ui", "latest");
8
- const $ec291e0010116877$export$83d89fbfd8236492 = "2.0.1";
8
+ const $ec291e0010116877$export$83d89fbfd8236492 = "2.0.3";
9
+
10
+ /** @jsxImportSource solid-js */
11
+
12
+ function $0fdb37d8ddabef25$export$9f191182275e9ef(what_to_watch) {
13
+ const [size, setSize] = $i7OB2$createSignal();
14
+ const resizeObserver = new ResizeObserver($i7OB2$catchify(records => {
15
+ for (let j = 0; j < records.length; j++) {
16
+ const width = records[j].borderBoxSize?.[0]?.inlineSize ?? what_to_watch.getBoundingClientRect().width;
17
+ setSize(width);
18
+ }
19
+ }));
20
+ resizeObserver.observe(what_to_watch);
21
+ $i7OB2$onCleanup(() => resizeObserver.disconnect());
22
+ return size;
23
+ }
9
24
  const $b5cccc8ee7d24677$var$transform_elements = sorted_cols_at_size => {
10
25
  const cols_at_size = [];
11
26
  for (let i = 0; i < sorted_cols_at_size.length; i++) {
@@ -1006,9 +1021,9 @@ function $1adfe60f3a14a1d7$export$fecbb157621501bd({
1006
1021
  }));
1007
1022
  return outmost_element;
1008
1023
  }
1009
- const $87c712b5b33f24f7$var$_tmpl$ = ["<span", ' class="count">', "</span>"],
1010
- $87c712b5b33f24f7$var$_tmpl$2 = ["<label", ' class="', '"', '><div class="left"><input type="checkbox"', "", "", '><span class="custom-indicator"></span><span class="text line-clamp">', "</span></div><!--#-->", "<!--/--></label>"];
1011
- const $87c712b5b33f24f7$export$48513f6b9f8ce62d = props => {
1024
+ const $49b79728e7d9e2a1$var$_tmpl$ = ["<span", ' class="count">', "</span>"],
1025
+ $49b79728e7d9e2a1$var$_tmpl$2 = ["<label", ' class="', '"', '><div class="left"><input type="checkbox"', "", "", '><span class="custom-indicator"></span><span class="text line-clamp">', "</span></div><!--#-->", "<!--/--></label>"];
1026
+ const $49b79728e7d9e2a1$export$48513f6b9f8ce62d = props => {
1012
1027
  // It seems like there's no diffing without memos here (since we often just have computations in the getters above that update to the same result often because their dependencies change with unrelated changes often), so put memos here to avoid unneeded DOM changes
1013
1028
  const count = $i7OB2$createMemo(() => props.count_);
1014
1029
  const label = $i7OB2$createMemo(() => props.label_);
@@ -1016,12 +1031,12 @@ const $87c712b5b33f24f7$export$48513f6b9f8ce62d = props => {
1016
1031
  const value = $i7OB2$createMemo(() => props.value_);
1017
1032
  const is_count_zero = $i7OB2$createMemo(() => props.is_count_zero_ || count() === 0);
1018
1033
  const id = $i7OB2$make_random_classname();
1019
- return (/* We can't use actual margin because ExpandingContainer gets messed up */$i7OB2$ssr($87c712b5b33f24f7$var$_tmpl$2, $i7OB2$ssrHydrationKey(), `input-row ${is_count_zero() ? "count-0" : ""}`, $i7OB2$ssrAttribute("for", $i7OB2$escape(id, true), false), $i7OB2$ssrAttribute("name", $i7OB2$escape(value(), true), false) + $i7OB2$ssrAttribute("id", $i7OB2$escape(id, true), false), $i7OB2$ssrAttribute("checked", checked(), true), $i7OB2$ssrAttribute("disabled", !checked() && is_count_zero(), true), $i7OB2$escape(label()) || $i7OB2$escape(value()), $i7OB2$escape($i7OB2$createComponent((0, $i7OB2$Show), {
1034
+ return (/* We can't use actual margin because ExpandingContainer gets messed up */$i7OB2$ssr($49b79728e7d9e2a1$var$_tmpl$2, $i7OB2$ssrHydrationKey(), `input-row ${is_count_zero() ? "count-0" : ""}`, $i7OB2$ssrAttribute("for", $i7OB2$escape(id, true), false), $i7OB2$ssrAttribute("name", $i7OB2$escape(value(), true), false) + $i7OB2$ssrAttribute("id", $i7OB2$escape(id, true), false), $i7OB2$ssrAttribute("checked", checked(), true), $i7OB2$ssrAttribute("disabled", !checked() && is_count_zero(), true), $i7OB2$escape(label()) || $i7OB2$escape(value()), $i7OB2$escape($i7OB2$createComponent((0, $i7OB2$Show), {
1020
1035
  get when() {
1021
1036
  return count() != undefined;
1022
1037
  },
1023
1038
  get children() {
1024
- return $i7OB2$ssr($87c712b5b33f24f7$var$_tmpl$, $i7OB2$ssrHydrationKey(), $i7OB2$escape(count()));
1039
+ return $i7OB2$ssr($49b79728e7d9e2a1$var$_tmpl$, $i7OB2$ssrHydrationKey(), $i7OB2$escape(count()));
1025
1040
  }
1026
1041
  })))
1027
1042
  );
@@ -1072,7 +1087,7 @@ function $a4601e6bea3ed1e6$export$dd948f91abc3a1c4({
1072
1087
  });
1073
1088
  const render_checkbox = checkbox => {
1074
1089
  // Checkbox always calls the getters in props, so we don't wrap these values into memos
1075
- return $i7OB2$createComponent((0, $87c712b5b33f24f7$export$48513f6b9f8ce62d), {
1090
+ return $i7OB2$createComponent((0, $49b79728e7d9e2a1$export$48513f6b9f8ce62d), {
1076
1091
  get value_() {
1077
1092
  return checkbox().value_;
1078
1093
  },
@@ -1546,7 +1561,7 @@ function $1c8cac76cb67e9af$var$render_stuff(data, existing_filter, i18n_) {
1546
1561
  // for some reason the for thing doesn't dispose of us if the key no longer exists?? so I'm doing it with show instead
1547
1562
  const value = $i7OB2$createMemo(() => data()[key]); // still sometimes get undefined here even though we have <Show>
1548
1563
  const has_expandable = $i7OB2$createMemo(() => !!Object.keys(value()?.children_ || {}).length);
1549
- return $i7OB2$ssr($1c8cac76cb67e9af$var$_tmpl$2, $i7OB2$ssrHydrationKey(), `checkbox-details ${has_expandable() ? "expandable" : ""}`, $i7OB2$escape($i7OB2$createComponent((0, $87c712b5b33f24f7$export$48513f6b9f8ce62d), {
1564
+ return $i7OB2$ssr($1c8cac76cb67e9af$var$_tmpl$2, $i7OB2$ssrHydrationKey(), `checkbox-details ${has_expandable() ? "expandable" : ""}`, $i7OB2$escape($i7OB2$createComponent((0, $49b79728e7d9e2a1$export$48513f6b9f8ce62d), {
1550
1565
  get value_() {
1551
1566
  return JSON.stringify(value()?.value_);
1552
1567
  },
@@ -1786,9 +1801,10 @@ function $1c8cac76cb67e9af$var$expand_until_choice(data_structure) {
1786
1801
  }
1787
1802
  });
1788
1803
  }
1789
- const $93716a9ad0dea854$var$_tmpl$ = ["<div", ' class="checkbox-grid">', "</div>"],
1790
- $93716a9ad0dea854$var$_tmpl$2 = ["<span", ' class="count-wrapper"><span class="count">', "</span></span>"],
1791
- $93716a9ad0dea854$var$_tmpl$3 = ["<button", "", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></button>"];
1804
+ const $93716a9ad0dea854$var$_tmpl$ = ["<div", ' class="checkbox-grid" style="position:absolute;z-index:-1;pointer-events:none;opacity:0">', "</div>"],
1805
+ $93716a9ad0dea854$var$_tmpl$2 = ["<span", ' class="count-wrapper"><span class="count">', "</span></span>"];
1806
+ const $93716a9ad0dea854$var$gap_px = 5;
1807
+ const $93716a9ad0dea854$var$max_columns = 3;
1792
1808
  const $93716a9ad0dea854$export$414f6a19d38e655c = ({
1793
1809
  filter_: filter_,
1794
1810
  selected_filters_: [get_selected_filters, set_selected_filters]
@@ -1811,23 +1827,139 @@ const $93716a9ad0dea854$export$414f6a19d38e655c = ({
1811
1827
  count_: meta.counts?.[index]
1812
1828
  }));
1813
1829
  });
1814
- return $i7OB2$ssr($93716a9ad0dea854$var$_tmpl$, $i7OB2$ssrHydrationKey(), $i7OB2$escape($i7OB2$createComponent((0, $i7OB2$Index), {
1815
- get each() {
1816
- return buttons();
1830
+ const [sizes_set, set_sizes_set] = $i7OB2$createSignal(new Set(), {
1831
+ equals: false
1832
+ });
1833
+ const [cols_at_size, set_cols_at_size] = $i7OB2$createSignal([[1, "0px", ""]]);
1834
+ const [container, set_container] = $i7OB2$createSignal();
1835
+ const container_width_accessor = $i7OB2$createMemo(() => {
1836
+ const element = container();
1837
+ if (!element) return;
1838
+ return $0fdb37d8ddabef25$export$9f191182275e9ef(element);
1839
+ });
1840
+ const [shadow_children, set_shadow_children] = $i7OB2$createSignal(new Set(), {
1841
+ equals: false
1842
+ });
1843
+ const shadow_grid = $i7OB2$ssr($93716a9ad0dea854$var$_tmpl$, $i7OB2$ssrHydrationKey(), $i7OB2$escape([...shadow_children()])); // for getting the smallest possible sizes of all the items
1844
+ $i7OB2$createEffect(() => {
1845
+ const container_width = container_width_accessor()?.();
1846
+ if (container_width == undefined) return;
1847
+ $93716a9ad0dea854$var$adjust_sizes(container_width, sizes_set(), set_cols_at_size);
1848
+ });
1849
+ return [shadow_grid, $i7OB2$createComponent((0, $c8d5ff4524619fcd$export$d21e32dfedac04be), {
1850
+ get cols_at_size() {
1851
+ return cols_at_size();
1817
1852
  },
1818
- children: value => {
1819
- const is_selected = $i7OB2$createMemo(() => existing_filter()?.data?.includes(value().value_));
1820
- return $i7OB2$ssr($93716a9ad0dea854$var$_tmpl$3, $i7OB2$ssrHydrationKey(), $i7OB2$ssrAttribute("disabled", value().count_ === 0 && !is_selected(), true), `${!is_selected() ? "minor" : ""} ${is_selected() ? "major" : ""} major-minor-transition`, $i7OB2$escape(value().value_), $i7OB2$escape($i7OB2$createComponent((0, $i7OB2$Show), {
1821
- get when() {
1822
- return value().count_ != undefined;
1853
+ grid_spacing: $93716a9ad0dea854$var$gap_px + "px",
1854
+ rows: "all",
1855
+ layout: "grid",
1856
+ element_attributes: {
1857
+ class: "checkbox-grid",
1858
+ ref: el => set_container(el)
1859
+ },
1860
+ get children() {
1861
+ return $i7OB2$createComponent((0, $i7OB2$Index), {
1862
+ get each() {
1863
+ return buttons();
1823
1864
  },
1824
- get children() {
1825
- return $i7OB2$ssr($93716a9ad0dea854$var$_tmpl$2, $i7OB2$ssrHydrationKey(), $i7OB2$escape(value().count_));
1865
+ children: value => {
1866
+ const is_selected = $i7OB2$createMemo(() => existing_filter()?.data?.includes(value().value_));
1867
+ const MakeButton = attributes => $i7OB2$ssrElement("button", () => ({
1868
+ ...attributes,
1869
+ "disabled": value().count_ === 0 && !is_selected(),
1870
+ "classList": {
1871
+ minor: !is_selected(),
1872
+ major: is_selected(),
1873
+ "major-minor-transition": true
1874
+ }
1875
+ }), () => ["<!--#-->", $i7OB2$escape(value().value_), "<!--/-->", "<!--#-->", $i7OB2$escape($i7OB2$createComponent((0, $i7OB2$Show), {
1876
+ get when() {
1877
+ return value().count_ != undefined;
1878
+ },
1879
+ get children() {
1880
+ return $i7OB2$ssr($93716a9ad0dea854$var$_tmpl$2, $i7OB2$ssrHydrationKey(), $i7OB2$escape(value().count_));
1881
+ }
1882
+ })), "<!--/-->"], true);
1883
+ const invisible_size_button = $i7OB2$createComponent(MakeButton, {});
1884
+ const smallest_possible_size = $0fdb37d8ddabef25$export$9f191182275e9ef(invisible_size_button); // create ResizeObserver for the invisible size button where the div hugs its content
1885
+ const sizes_value = $i7OB2$untrack(sizes_set);
1886
+ const shadow_children_value = $i7OB2$untrack(shadow_children);
1887
+ sizes_value.add(smallest_possible_size);
1888
+ set_sizes_set(sizes_value);
1889
+ shadow_children_value.add(invisible_size_button);
1890
+ set_shadow_children(shadow_children_value);
1891
+ $i7OB2$onCleanup(() => {
1892
+ const sizes_value = $i7OB2$untrack(sizes_set);
1893
+ const shadow_children_value = $i7OB2$untrack(shadow_children);
1894
+ sizes_value.delete(smallest_possible_size);
1895
+ set_sizes_set(sizes_value);
1896
+ shadow_children_value.delete(invisible_size_button);
1897
+ set_shadow_children(shadow_children_value);
1898
+ });
1899
+ // The actual button that will be visible
1900
+ return $i7OB2$createComponent(MakeButton, {});
1826
1901
  }
1827
- })));
1902
+ });
1828
1903
  }
1829
- })));
1904
+ })];
1830
1905
  };
1906
+ /**
1907
+ * Calculate and apply cols_at_size overrides to fit as many items as possible in a row, evenly spaced
1908
+ */
1909
+ function $93716a9ad0dea854$var$adjust_sizes(container_width, sizes, set_cols_at_size) {
1910
+ let current_row_index = 0;
1911
+ let current_row_items = [];
1912
+ const column_to_row_result = {};
1913
+ const check_would_fit_evenly = (min_size_of_item, at_number_of_columnns) => {
1914
+ const would_have_even_size = container_width / at_number_of_columnns - (at_number_of_columnns * 2 - 2) * ($93716a9ad0dea854$var$gap_px / 2) / at_number_of_columnns; // What size would our element have (without gaps), given that now every column had the same width (equation from Layout.tsx)
1915
+ return would_have_even_size >= min_size_of_item; // would this item still fit if we added another column? (probably what the caller has done with at_number_of_columns), given that every item has the same size
1916
+ };
1917
+
1918
+ for (const size_item of sizes) {
1919
+ const size = size_item();
1920
+ if (size == undefined) return; // Only do stuff if we know all the sizes
1921
+ const current_row_length = current_row_items.length;
1922
+ const can_add_another_column_initial_val = current_row_length < $93716a9ad0dea854$var$max_columns; // allow max 4 items per row
1923
+ let can_add_another_column = can_add_another_column_initial_val;
1924
+ if (can_add_another_column)
1925
+ // can we actually? Since adding another column changes the size of all elements in the row we need to check all of them
1926
+ for (let i = -1; i < current_row_length; i++) {
1927
+ // -1 is for the new item we're adding and every item is guaranteed to exist
1928
+ const size_to_check = current_row_items[i] ?? size;
1929
+ const would_have_columns = current_row_length + 1; // if we added another column
1930
+ const would_fit_evenly = check_would_fit_evenly(size_to_check, would_have_columns); // see comments in check_would_fit_evenly
1931
+ if (!would_fit_evenly) {
1932
+ can_add_another_column = false;
1933
+ break;
1934
+ }
1935
+ }
1936
+ if (can_add_another_column) current_row_items.push(size);else {
1937
+ column_to_row_result[++current_row_index] = current_row_length || 1; // overrides is indexed by 1 it seems, therefore ++curent_row_index
1938
+ current_row_items = [size]; // save current item for next row
1939
+ }
1940
+ }
1941
+
1942
+ const items_left_to_add = current_row_items.length;
1943
+ if (items_left_to_add) {
1944
+ let num_columns = 1; // We want to have as close to max_columns as possible in the last row
1945
+ let fits = true;
1946
+ do
1947
+ // Check if more columns would fit
1948
+ for (let i = 0; i < items_left_to_add; i++) {
1949
+ const item = current_row_items[i];
1950
+ const would_fit_evenly = check_would_fit_evenly(item, num_columns + 1);
1951
+ if (!would_fit_evenly) {
1952
+ fits = false;
1953
+ break;
1954
+ }
1955
+ } while (fits && ++num_columns < $93716a9ad0dea854$var$max_columns);
1956
+ column_to_row_result[++current_row_index] = num_columns; // Add last row that's left after loop finished
1957
+ }
1958
+
1959
+ set_cols_at_size([[1, "0px", "", null, {
1960
+ overrides: column_to_row_result
1961
+ }]]);
1962
+ }
1831
1963
  function $dc9262ef6f786812$export$d9f36cf74e24d595(media_query) {
1832
1964
  const signal = $i7OB2$createSignal(false);
1833
1965
  $i7OB2$onCleanup($i7OB2$javascript_media_query(media_query, ({
@@ -1872,7 +2004,7 @@ function $e731d52d97444b7c$export$82ed4b28ecb67608({
1872
2004
  const hex_color = $i7OB2$createMemo(() => checkbox().value_.split(";")?.[1] || "");
1873
2005
  const rgb_color = $i7OB2$createMemo(() => $i7OB2$hex_to_rgb(hex_color()));
1874
2006
  const black_contrast_better = $i7OB2$createMemo(() => rgb_color() ? $e731d52d97444b7c$var$does_black_contrast_better(rgb_color()) : false);
1875
- const input_row = $i7OB2$createComponent((0, $87c712b5b33f24f7$export$48513f6b9f8ce62d), {
2007
+ const input_row = $i7OB2$createComponent((0, $49b79728e7d9e2a1$export$48513f6b9f8ce62d), {
1876
2008
  get value_() {
1877
2009
  return checkbox().value_;
1878
2010
  },
@@ -8681,4 +8813,4 @@ const $4690a06c8489dcd0$export$c3834fa86c616831 = [[4], [3, 1024], [2, 901]];
8681
8813
  const $4690a06c8489dcd0$export$864d304a0bc46829 = "2%";
8682
8814
  const $4690a06c8489dcd0$export$7bf543b9d9be2c22 = (0, $e4615ecd1849548f$export$b91cec6bdc6b32a1);
8683
8815
  $i7OB2$add_to_version_info("ui", (0, $ec291e0010116877$export$83d89fbfd8236492));
8684
- export { $ee116da074deb002$export$9574e176201e5e8d as RecommendationSlider, $9ea5383493360761$export$9756467d34d91cdb as RecommendationGrid, $e8ffe11ed01df0fe$export$6e5611bc7e57e477 as ShopifyResponsiveImg, $e8ffe11ed01df0fe$export$e6fffe67d4cdd848 as makeSizeAccessor, $f18d425032111270$export$94026ee33dbabc26 as ImageContainer, $b7436a6d1fd64e3b$export$b69d0d92862de18b as SentryErrorBoundary, $6bb0a0c563dff4bb$export$6c6d7a51fa9aa15d as ExpandingDetails, $c16e74cfe125bb05$export$f091cbac892643a4 as accessor_of_object_to_object_with_accessor_values, $1adfe60f3a14a1d7$export$fecbb157621501bd as SelectedFilters, $fab07f52c9861732$export$3f1a388cc0d8fed7 as FilterBody, $5efb5894079b220e$export$b288c38ae3fddb56 as create_modified_filters, $c8d5ff4524619fcd$export$d21e32dfedac04be as SolidLayout, $194bd6b8e4c59830$export$79b1565500412d9b as general_modal_abstraction, $19976a74d273070d$export$3b621d86b1566b2 as CrossIcon, $fbbadcb080ad1d4a$export$8be2714ec7f169ee as GenericSliderArrowButton, $c58717f39bf51647$export$58e808b1db15d3bc as fetchDepictRecommendations, $961b5c64bef4662f$export$de035477d6fef996 as QuickLinks, $961b5c64bef4662f$export$5b7c3ce0ebe51f86 as BreadCrumbs, $e4615ecd1849548f$export$b91cec6bdc6b32a1 as CategoryTitle, $a6e23a834336fc19$export$824dde41348efed1 as embedded_num_products, $c9312089e8983364$export$643598a327b5833e as get_categories, $961b5c64bef4662f$export$f34314aa9505732e as DepictCategory, $961b5c64bef4662f$export$e2bf8ce7779e827e as CategoryPage, $806c97b931758897$export$ac6237957a15b3f0 as DepictSearch, $806c97b931758897$export$bde3eb976dfded9 as get_search_query_updating_blocked_signal, $806c97b931758897$export$f2dc7e4e4aa11abb as SearchPage, $806c97b931758897$export$316f6f283ae64765 as SearchField, $4fd48cb976bf1789$export$aa14a9f43128f61f as ProductCardError, $6891c018a834cfdd$export$d86a33413558014e as open_modal_with_alignment, $bb15dfb548a7666e$export$ee1733d9a8495996 as DefaultInstantCardPlaceholder, $b6d5529b253681aa$export$b3ad617e9036868 as align_field, $b5cccc8ee7d24677$export$6daf8749b65a1b77 as convert_sdk_cols_at_size_to_layout, $926b1b5ba2239356$export$1233ca167bf71f9a as styles_to_valid_css_string, $aea1edf92433e81e$export$fe334901e8bebd57 as disable_scrolling, $6e8944558258054f$export$d0596b5cae35ad4 as open_search_with_shift_slash, $7fa23e2a0079eca4$export$e015ed2f2950f2e3 as DepictAPI, $dc9262ef6f786812$export$d9f36cf74e24d595 as media_query_to_accessor, $6936724b9e0b98d5$export$689e204eadb33baf as setup_fast_leave, $bf52d9f9eebd1938$export$5196e4c01fa56fcb as show_toast, $8c0f86cb3e266eeb$export$a71e92cfbb498adc as SolidFormatPrice, $4ca91518c9a35379$export$828dcdd425fd3231 as connect_search_field_height_to_aligner_height, $d20eff0aadc28983$export$acb3eaade4b23afd as BasePlaceholder, $d134eae24341b4a1$export$89c6019e4baa40b1 as TextPlaceholder, $7f60f09116a3fe61$export$3f37af283f8fb843 as ImagePlaceholder, $753e9b2889a47c89$export$3ccaa27d81dd8556 as PageReplacer, $4690a06c8489dcd0$export$864d304a0bc46829 as defaultGridSpacing, $4690a06c8489dcd0$export$c3834fa86c616831 as defaultColsAtSize, $4690a06c8489dcd0$export$7bf543b9d9be2c22 as defaultCategoryTitlePlugin, $ec291e0010116877$export$83d89fbfd8236492 as version };
8816
+ export { $0fdb37d8ddabef25$export$9f191182275e9ef as make_accurate_size_accessor, $ee116da074deb002$export$9574e176201e5e8d as RecommendationSlider, $9ea5383493360761$export$9756467d34d91cdb as RecommendationGrid, $e8ffe11ed01df0fe$export$6e5611bc7e57e477 as ShopifyResponsiveImg, $e8ffe11ed01df0fe$export$e6fffe67d4cdd848 as makeSizeAccessor, $f18d425032111270$export$94026ee33dbabc26 as ImageContainer, $b7436a6d1fd64e3b$export$b69d0d92862de18b as SentryErrorBoundary, $6bb0a0c563dff4bb$export$6c6d7a51fa9aa15d as ExpandingDetails, $c16e74cfe125bb05$export$f091cbac892643a4 as accessor_of_object_to_object_with_accessor_values, $1adfe60f3a14a1d7$export$fecbb157621501bd as SelectedFilters, $fab07f52c9861732$export$3f1a388cc0d8fed7 as FilterBody, $5efb5894079b220e$export$b288c38ae3fddb56 as create_modified_filters, $c8d5ff4524619fcd$export$d21e32dfedac04be as SolidLayout, $194bd6b8e4c59830$export$79b1565500412d9b as general_modal_abstraction, $19976a74d273070d$export$3b621d86b1566b2 as CrossIcon, $fbbadcb080ad1d4a$export$8be2714ec7f169ee as GenericSliderArrowButton, $c58717f39bf51647$export$58e808b1db15d3bc as fetchDepictRecommendations, $961b5c64bef4662f$export$de035477d6fef996 as QuickLinks, $961b5c64bef4662f$export$5b7c3ce0ebe51f86 as BreadCrumbs, $e4615ecd1849548f$export$b91cec6bdc6b32a1 as CategoryTitle, $a6e23a834336fc19$export$824dde41348efed1 as embedded_num_products, $c9312089e8983364$export$643598a327b5833e as get_categories, $961b5c64bef4662f$export$f34314aa9505732e as DepictCategory, $961b5c64bef4662f$export$e2bf8ce7779e827e as CategoryPage, $806c97b931758897$export$ac6237957a15b3f0 as DepictSearch, $806c97b931758897$export$bde3eb976dfded9 as get_search_query_updating_blocked_signal, $806c97b931758897$export$f2dc7e4e4aa11abb as SearchPage, $806c97b931758897$export$316f6f283ae64765 as SearchField, $4fd48cb976bf1789$export$aa14a9f43128f61f as ProductCardError, $6891c018a834cfdd$export$d86a33413558014e as open_modal_with_alignment, $bb15dfb548a7666e$export$ee1733d9a8495996 as DefaultInstantCardPlaceholder, $b6d5529b253681aa$export$b3ad617e9036868 as align_field, $b5cccc8ee7d24677$export$6daf8749b65a1b77 as convert_sdk_cols_at_size_to_layout, $926b1b5ba2239356$export$1233ca167bf71f9a as styles_to_valid_css_string, $aea1edf92433e81e$export$fe334901e8bebd57 as disable_scrolling, $6e8944558258054f$export$d0596b5cae35ad4 as open_search_with_shift_slash, $7fa23e2a0079eca4$export$e015ed2f2950f2e3 as DepictAPI, $dc9262ef6f786812$export$d9f36cf74e24d595 as media_query_to_accessor, $6936724b9e0b98d5$export$689e204eadb33baf as setup_fast_leave, $bf52d9f9eebd1938$export$5196e4c01fa56fcb as show_toast, $8c0f86cb3e266eeb$export$a71e92cfbb498adc as SolidFormatPrice, $4ca91518c9a35379$export$828dcdd425fd3231 as connect_search_field_height_to_aligner_height, $d20eff0aadc28983$export$acb3eaade4b23afd as BasePlaceholder, $d134eae24341b4a1$export$89c6019e4baa40b1 as TextPlaceholder, $7f60f09116a3fe61$export$3f37af283f8fb843 as ImagePlaceholder, $753e9b2889a47c89$export$3ccaa27d81dd8556 as PageReplacer, $4690a06c8489dcd0$export$864d304a0bc46829 as defaultGridSpacing, $4690a06c8489dcd0$export$c3834fa86c616831 as defaultColsAtSize, $4690a06c8489dcd0$export$7bf543b9d9be2c22 as defaultCategoryTitlePlugin, $ec291e0010116877$export$83d89fbfd8236492 as version };