@depict-ai/ui 4.7.32 → 4.7.34

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,8 +1,8 @@
1
- import { add_to_version_info as $b8hua$add_to_version_info, layout_media_query_header as $b8hua$layout_media_query_header, dwarn as $b8hua$dwarn, javascript_media_query as $b8hua$javascript_media_query, slider_fading_factory as $b8hua$slider_fading_factory, Amazing_Slider as $b8hua$Amazing_Slider, slider_snap_css as $b8hua$slider_snap_css, catchify as $b8hua$catchify1, dlog as $b8hua$dlog1, camelCasifyObject as $b8hua$camelCasifyObject, useExpandingContainer as $b8hua$useExpandingContainer, fetch_retry as $b8hua$fetch_retry, base_url as $b8hua$base_url, slider_fractional_factory as $b8hua$slider_fractional_factory, make_random_classname as $b8hua$make_random_classname, n_col_styling_with_dist as $b8hua$n_col_styling_with_dist, layout_get_visible_recs_without_partial_rows as $b8hua$layout_get_visible_recs_without_partial_rows, layout_get_total_rec_amount_for_row as $b8hua$layout_get_total_rec_amount_for_row, report as $b8hua$report, observer as $b8hua$observer, queueMacroTask as $b8hua$queueMacroTask, findMostFrequentItem as $b8hua$findMostFrequentItem, standard_price_format as $b8hua$standard_price_format, instant_exec_on_suspect_history_change as $b8hua$instant_exec_on_suspect_history_change, deparallelize_no_drop as $b8hua$deparallelize_no_drop, ContainedImage as $b8hua$ContainedImage, make_asyncIterable_exiter as $b8hua$make_asyncIterable_exiter, href_change_ipns as $b8hua$href_change_ipns, base64_encode_unicode as $b8hua$base64_encode_unicode, base64_decode_unicode as $b8hua$base64_decode_unicode, use_href_accessor as $b8hua$use_href_accessor, get_session_id as $b8hua$get_session_id, add_version_query_params as $b8hua$add_version_query_params, hex_to_rgb as $b8hua$hex_to_rgb, relative_luminance_from_rgb as $b8hua$relative_luminance_from_rgb, snakeCasifyObject as $b8hua$snakeCasifyObject, make_url_with_query_params as $b8hua$make_url_with_query_params, sort_obj as $b8hua$sort_obj, insert_surfaces as $b8hua$insert_surfaces } from "@depict-ai/utilishared/ES10";
2
- import { createComponent as $b8hua$createComponent, ssr as $b8hua$ssr, ssrHydrationKey as $b8hua$ssrHydrationKey, escape as $b8hua$escape, ssrStyle as $b8hua$ssrStyle, isServer as $b8hua$isServer, insert as $b8hua$insert, ssrAttribute as $b8hua$ssrAttribute, mergeProps as $b8hua$mergeProps1, ssrElement as $b8hua$ssrElement, ssrClassList as $b8hua$ssrClassList, spread as $b8hua$spread, Dynamic as $b8hua$Dynamic } from "solid-js/web";
3
- import { createEffect as $b8hua$createEffect, createComputed as $b8hua$createComputed, createMemo as $b8hua$createMemo, mapArray as $b8hua$mapArray, createSignal as $b8hua$createSignal, Show as $b8hua$Show, mergeProps as $b8hua$mergeProps, createResource as $b8hua$createResource, Suspense as $b8hua$Suspense, onCleanup as $b8hua$onCleanup, createRoot as $b8hua$createRoot, createContext as $b8hua$createContext, useContext as $b8hua$useContext, untrack as $b8hua$untrack, For as $b8hua$For, getOwner as $b8hua$getOwner, runWithOwner as $b8hua$runWithOwner, createRenderEffect as $b8hua$createRenderEffect, Index as $b8hua$Index, createUniqueId as $b8hua$createUniqueId, ErrorBoundary as $b8hua$ErrorBoundary, splitProps as $b8hua$splitProps, on as $b8hua$on, batch as $b8hua$batch, createSelector as $b8hua$createSelector, children as $b8hua$children, createReaction as $b8hua$createReaction } from "solid-js";
1
+ import { add_to_version_info as $b8hua$add_to_version_info, queueMacroTask as $b8hua$queueMacroTask, catchify as $b8hua$catchify, findMostFrequentItem as $b8hua$findMostFrequentItem, dwarn as $b8hua$dwarn, observer as $b8hua$observer, layout_media_query_header as $b8hua$layout_media_query_header, javascript_media_query as $b8hua$javascript_media_query, slider_fading_factory as $b8hua$slider_fading_factory, Amazing_Slider as $b8hua$Amazing_Slider, slider_snap_css as $b8hua$slider_snap_css, dlog as $b8hua$dlog1, camelCasifyObject as $b8hua$camelCasifyObject, useExpandingContainer as $b8hua$useExpandingContainer, fetch_retry as $b8hua$fetch_retry, base_url as $b8hua$base_url, slider_fractional_factory as $b8hua$slider_fractional_factory, make_random_classname as $b8hua$make_random_classname, n_col_styling_with_dist as $b8hua$n_col_styling_with_dist, layout_get_visible_recs_without_partial_rows as $b8hua$layout_get_visible_recs_without_partial_rows, layout_get_total_rec_amount_for_row as $b8hua$layout_get_total_rec_amount_for_row, report as $b8hua$report, standard_price_format as $b8hua$standard_price_format, instant_exec_on_suspect_history_change as $b8hua$instant_exec_on_suspect_history_change, deparallelize_no_drop as $b8hua$deparallelize_no_drop, ContainedImage as $b8hua$ContainedImage, make_asyncIterable_exiter as $b8hua$make_asyncIterable_exiter, href_change_ipns as $b8hua$href_change_ipns, base64_encode_unicode as $b8hua$base64_encode_unicode, base64_decode_unicode as $b8hua$base64_decode_unicode, use_href_accessor as $b8hua$use_href_accessor, get_session_id as $b8hua$get_session_id, add_version_query_params as $b8hua$add_version_query_params, hex_to_rgb as $b8hua$hex_to_rgb, relative_luminance_from_rgb as $b8hua$relative_luminance_from_rgb, snakeCasifyObject as $b8hua$snakeCasifyObject, make_url_with_query_params as $b8hua$make_url_with_query_params, sort_obj as $b8hua$sort_obj, insert_surfaces as $b8hua$insert_surfaces } from "@depict-ai/utilishared/ES10";
2
+ import { createComponent as $b8hua$createComponent, mergeProps as $b8hua$mergeProps, insert as $b8hua$insert, ssr as $b8hua$ssr, ssrHydrationKey as $b8hua$ssrHydrationKey, ssrStyle as $b8hua$ssrStyle, ssrAttribute as $b8hua$ssrAttribute, escape as $b8hua$escape, spread as $b8hua$spread, isServer as $b8hua$isServer, ssrElement as $b8hua$ssrElement, ssrClassList as $b8hua$ssrClassList, Dynamic as $b8hua$Dynamic } from "solid-js/web";
3
+ import { createSignal as $b8hua$createSignal, getOwner as $b8hua$getOwner, createEffect as $b8hua$createEffect, runWithOwner as $b8hua$runWithOwner, onCleanup as $b8hua$onCleanup, createContext as $b8hua$createContext, useContext as $b8hua$useContext, createMemo as $b8hua$createMemo, splitProps as $b8hua$splitProps, mergeProps as $b8hua$mergeProps1, untrack as $b8hua$untrack, createRenderEffect as $b8hua$createRenderEffect, Show as $b8hua$Show, batch as $b8hua$batch, createComputed as $b8hua$createComputed, mapArray as $b8hua$mapArray, createResource as $b8hua$createResource, Suspense as $b8hua$Suspense, createRoot as $b8hua$createRoot, For as $b8hua$For, Index as $b8hua$Index, createUniqueId as $b8hua$createUniqueId, ErrorBoundary as $b8hua$ErrorBoundary, on as $b8hua$on, createSelector as $b8hua$createSelector, children as $b8hua$children, createReaction as $b8hua$createReaction } from "solid-js";
4
4
  import { createStore as $b8hua$createStore, reconcile as $b8hua$reconcile } from "solid-js/store";
5
- import { dlog as $b8hua$dlog, catchify as $b8hua$catchify, ListenableSet as $b8hua$ListenableSet, use_href_accessor as $b8hua$use_href_accessor1, queueMacroTask as $b8hua$queueMacroTask1, report as $b8hua$report1 } from "@depict-ai/utilishared/ES10";
5
+ import { dlog as $b8hua$dlog, catchify as $b8hua$catchify1, ListenableSet as $b8hua$ListenableSet, use_href_accessor as $b8hua$use_href_accessor1, queueMacroTask as $b8hua$queueMacroTask1, report as $b8hua$report1 } from "@depict-ai/utilishared/ES10";
6
6
  import $b8hua$babelruntimehelpersdefineProperty from "@babel/runtime/helpers/defineProperty";
7
7
  import $b8hua$babelruntimehelpersclassPrivateFieldSet from "@babel/runtime/helpers/classPrivateFieldSet";
8
8
  import $b8hua$babelruntimehelpersclassPrivateFieldGet from "@babel/runtime/helpers/classPrivateFieldGet";
@@ -10,37 +10,248 @@ import $b8hua$babelruntimehelpersclassPrivateFieldGet from "@babel/runtime/helpe
10
10
  /*! Depict.ai search and product listing SDK */
11
11
  import { register_es_version } from "../../multi_import_deduplicator.mjs";
12
12
  register_es_version("ui", "ES10");
13
- const $8db9a15135765c11$export$83d89fbfd8236492 = "4.7.32";
14
- function $00a5b94f0c11efbb$export$d9f36cf74e24d595(media_query) {
15
- const signal = $b8hua$createSignal(false);
16
- $b8hua$onCleanup($b8hua$javascript_media_query(media_query, _ref => {
17
- let {
18
- matches: matches
19
- } = _ref;
20
- return signal[1](matches);
21
- }).remove);
22
- return signal[0];
13
+ const $8db9a15135765c11$export$83d89fbfd8236492 = "4.7.34";
14
+ const $5441862cd2f5e111$var$ListingContext = /*@__PURE__*/$b8hua$createContext();
15
+ function $5441862cd2f5e111$export$e68cff63f76bd15b(props) {
16
+ const our_object = {};
17
+ return $b8hua$createComponent($5441862cd2f5e111$var$ListingContext.Provider, {
18
+ value: our_object,
19
+ get children() {
20
+ return props.children;
21
+ }
22
+ });
23
23
  }
24
- function $40e2fa435715a1a0$export$a79e666719b3647c(cols_at_size_) {
25
- const size_active = $b8hua$createMemo(() => cols_at_size_().map(_ref => {
26
- let [n_cols, min_width, max_width] = _ref;
27
- const media_query = $b8hua$layout_media_query_header(min_width, max_width).replaceAll("@media", "");
28
- const matches = $00a5b94f0c11efbb$export$d9f36cf74e24d595(media_query);
29
- return [matches, n_cols];
30
- }));
31
- const n_cols_currently_showing = $b8hua$createMemo(() => {
32
- try {
33
- const [, n_cols_currently_showing] = size_active().find(_ref2 => {
34
- let [media_query] = _ref2;
35
- return media_query();
24
+ function $5441862cd2f5e111$export$8d0c4fdbb05a2f2e() {
25
+ return $b8hua$useContext($5441862cd2f5e111$var$ListingContext);
26
+ }
27
+ var $801e8845d3fa3653$var$_tmpl$ = ["<div", ' style="', '"', ">", "</div>"];
28
+ function $801e8845d3fa3653$export$94026ee33dbabc26(props) {
29
+ return $b8hua$ssr($801e8845d3fa3653$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$ssrStyle("padding-bottom:calc(calc(1 / ".concat(props.aspectRatio, ") * 100%)")), $b8hua$ssrAttribute("class", "s-image-container" + (props.class ? " " + $b8hua$escape(props.class, true) : ""), false), $b8hua$escape(props.children));
30
+ }
31
+ const $1e69163caedaab4e$var$ProductCardIndexContext = /*@__PURE__*/$b8hua$createContext();
32
+ function $1e69163caedaab4e$export$11354f017ddc9790(props) {
33
+ return $b8hua$createComponent($1e69163caedaab4e$var$ProductCardIndexContext.Provider, {
34
+ get value() {
35
+ return props.index_;
36
+ },
37
+ get children() {
38
+ return props.children;
39
+ }
40
+ });
41
+ }
42
+ function $1e69163caedaab4e$export$e3faf4d95300054f() {
43
+ return $b8hua$useContext($1e69163caedaab4e$var$ProductCardIndexContext);
44
+ }
45
+ let $6db93f70c2db1486$var$browserIsBugged = false;
46
+ function $6db93f70c2db1486$export$2972b890694ced75(callback, _ref) {
47
+ let {
48
+ timeout: timeout
49
+ } = _ref;
50
+ if ($6db93f70c2db1486$var$browserIsBugged) timeout /= 4;
51
+ const cancel = () => {
52
+ cancelIdleCallback(idleHandle);
53
+ clearTimeout(racingTimeout);
54
+ };
55
+ const idleHandle = requestIdleCallback(deadline => {
56
+ cancel();
57
+ return callback(deadline);
58
+ }, {
59
+ timeout: timeout
60
+ });
61
+ const racingTimeout = setTimeout(() => {
62
+ $b8hua$dwarn("Browser did not respect requestIdleCallback timeout");
63
+ $6db93f70c2db1486$var$browserIsBugged = true;
64
+ cancel();
65
+ callback({
66
+ didTimeout: false,
67
+ timeRemaining() {
68
+ return 500;
69
+ }
70
+ });
71
+ }, timeout + 1000);
72
+ return cancel;
73
+ }
74
+ const $56047603f9d212b6$var$onIdleFunctionsSymbol = /*@__PURE__*/Symbol("onIdleFunctions");
75
+ const $56047603f9d212b6$export$f8945274f08a3105 = /*@__PURE__*/Symbol("listingContextAspectRatios");
76
+ const $56047603f9d212b6$export$6066eb417ed2e9f7 = /*@__PURE__*/Symbol("listingContextAspectRatios");
77
+ function $56047603f9d212b6$export$6e5611bc7e57e477(props) {
78
+ const img = new Image(); // Need to use new Image or browser might not start loading image before it's in the DOM
79
+ const [ourRatioKeyed, setOurRatioKeyed] = $b8hua$createSignal();
80
+ const sizeToUse = $b8hua$createMemo(() => {
81
+ var _props$sizeHeight;
82
+ // props.size could be a getter that expects a cleanup so get it in this memo instead of where we set img.sizes (also we need to multiply, and it's good with some diffing here so people calling the comp don't have to)
83
+ const incomingSize = props.size();
84
+ const ratio = ourRatioKeyed();
85
+ const containerHeight = (_props$sizeHeight = props.sizeHeight) === null || _props$sizeHeight === void 0 ? void 0 : _props$sizeHeight.call(props);
86
+ if (!incomingSize || !ratio || !containerHeight || getComputedStyle(img).objectFit !== "cover") return incomingSize;
87
+ const maybeCorrectedSize = ratio * containerHeight;
88
+ return Math.round(Math.max(incomingSize, maybeCorrectedSize));
89
+ });
90
+ const src_options = $b8hua$createMemo(() => {
91
+ const {
92
+ src: src,
93
+ customUrls: customUrls
94
+ } = props;
95
+ const fallback_src = (customUrls || $56047603f9d212b6$export$1d6267828870adda)(src, 400);
96
+ const srcset = $56047603f9d212b6$var$make_srcset(props.src, props.resolutions || [64, 128, 256, 300, 400, 512, 640, 768, 1024, 1280, 1536, 2048, 2560, 3072, 3584, 4096], customUrls);
97
+ // The order here *might* matter - I've seen mobile safari always start with loading the 400px version when it was reversed
98
+ return {
99
+ srcset: srcset,
100
+ src: fallback_src
101
+ };
102
+ });
103
+ // Work around https://github.com/solidjs/solid/issues/1828
104
+ const [, otherAttributes] = $b8hua$splitProps(props, ["resolutions", "size", "src", "srcSet", "loading", "keyRatioUpdating", "sizeHeight", "customUrls" // Can't have properties ending on underscore because the property name mangling will get confused by this <-
105
+ ]);
106
+
107
+ const [hasSetSize, setHasSetSize] = $b8hua$createSignal(false);
108
+ const [hasDecoded, setHasDecoded] = $b8hua$createSignal(false);
109
+ const productCardIndexAccessor = $1e69163caedaab4e$export$e3faf4d95300054f();
110
+ const listingContext = $5441862cd2f5e111$export$8d0c4fdbb05a2f2e();
111
+ const isPrioritisedImage = $b8hua$createMemo(() => (productCardIndexAccessor === null || productCardIndexAccessor === void 0 ? void 0 : productCardIndexAccessor()) < 8);
112
+ const shouldActuallyEnableLazyLoading = $b8hua$createMemo(() => {
113
+ const {
114
+ loading: loading
115
+ } = props;
116
+ if (loading === "force-lazy") return true;
117
+ return loading === "lazy" && !isPrioritisedImage();
118
+ });
119
+ const modifiedOtherAttributes = $b8hua$mergeProps1(otherAttributes, {
120
+ get loading() {
121
+ return shouldActuallyEnableLazyLoading() ? "lazy" : undefined;
122
+ }
123
+ });
124
+ // Batch idle callbacks so that MutationObserver can batch the resulting mutations better, so we don't lose tons of CPU time to MutationObservers doing lots of things for each image
125
+ // Happened on singular, they have some weird observer (+we also have one but ours is at least 3x more efficient)
126
+ const executeWhenIdleBatched = (fn, isSizesUpdate) => {
127
+ if (typeof requestIdleCallback !== "function") return setTimeout(fn); // Old browsers don't get optimisation
128
+ if ((!isSizesUpdate || !sizeSetFastPath) && $b8hua$untrack(isPrioritisedImage)) return fn(); // If we're one of the first 8 images, execute the callbacks immediately (improves lighthouse metrics)
129
+ // unless we're just a `sizes` update after the initial sizes setting (this optimisation makes the looks animation a lot smoother on low-cpu devices)
130
+ const existingStack = listingContext === null || listingContext === void 0 ? void 0 : listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol];
131
+ if (existingStack) return existingStack.add(fn);
132
+ const newStack = new Set([fn]);
133
+ if (listingContext) listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol] = newStack;
134
+ const processStackWhenIdle = () => $6db93f70c2db1486$export$2972b890694ced75($b8hua$catchify(deadline => {
135
+ const start = performance.now();
136
+ const thirdDeadlineTime = deadline.timeRemaining() / 3; // observers coming after this take up 2-3x the time so don't use all of it
137
+ for (const fn of newStack) {
138
+ newStack.delete(fn);
139
+ fn();
140
+ const timeTaken = performance.now() - start;
141
+ if ((!deadline.timeRemaining() || timeTaken > thirdDeadlineTime) && newStack.size) {
142
+ // There's still work to be done but no time, so schedule another idle callback
143
+ processStackWhenIdle();
144
+ return;
145
+ }
146
+ }
147
+ // Stack is empty
148
+ if (listingContext) delete listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol];
149
+ }), {
150
+ timeout: 15000
151
+ } // long timeout, better to not have images than to freeze the browser. But also we don't want to confuse user why no iamges are loading
152
+ );
153
+
154
+ processStackWhenIdle();
155
+ };
156
+ let sizeSetFastPath = false;
157
+ let hasDecodedFastPath = false;
158
+ let timeoutSet = false;
159
+ let gotCleanedUp = false;
160
+ let srcJustChanged = true;
161
+ img.classList.add("s-responsive-image");
162
+ if (listingContext) {
163
+ let prevValue;
164
+ const aspectRatios = listingContext[$56047603f9d212b6$export$f8945274f08a3105] || (listingContext[$56047603f9d212b6$export$f8945274f08a3105] = new Set());
165
+ const [, setMostPrevalentAspectRatio] = listingContext[$56047603f9d212b6$export$6066eb417ed2e9f7] || (listingContext[$56047603f9d212b6$export$6066eb417ed2e9f7] = $b8hua$createSignal());
166
+ img.addEventListener("load", $b8hua$catchify(() => {
167
+ const aspectRatio_ = img.naturalWidth / img.naturalHeight;
168
+ if (srcJustChanged)
169
+ // Always key object-fit-cover compensation to avoid loading-different-images-infinite-loop
170
+ setOurRatioKeyed(aspectRatio_);else if (props.keyRatioUpdating) return;
171
+ srcJustChanged = false;
172
+ // Save our aspect ratio whenever it changes, so that we can base the containers on the most dominant aspect ratio, used in SearchModalV2 and LookItem
173
+ if (prevValue) aspectRatios.delete(prevValue);
174
+ const newValue = !isNaN(aspectRatio_) ? {
175
+ aspectRatio_: aspectRatio_
176
+ } : undefined;
177
+ if (newValue) aspectRatios.add(newValue);
178
+ prevValue = newValue;
179
+ // Do all calculations resulting of an update directly, for performance
180
+ const asArray = [...aspectRatios].map(_ref => {
181
+ let {
182
+ aspectRatio_: aspectRatio_
183
+ } = _ref;
184
+ return aspectRatio_;
36
185
  });
37
- return n_cols_currently_showing;
38
- } catch (e) {
39
- $b8hua$dwarn("No active size found in columnsAtSize - can't render content blocks or looks");
40
- return null;
186
+ const mostPrevalentAspectRatio = $b8hua$findMostFrequentItem(asArray);
187
+ setMostPrevalentAspectRatio(mostPrevalentAspectRatio);
188
+ }));
189
+ $b8hua$onCleanup(() => prevValue && aspectRatios.delete(prevValue));
190
+ }
191
+ $b8hua$onCleanup(() => gotCleanedUp = true);
192
+ $b8hua$spread(img, $b8hua$mergeProps1(modifiedOtherAttributes), false, true);
193
+ $b8hua$createRenderEffect(() => {
194
+ props.src;
195
+ srcJustChanged = true;
196
+ });
197
+ $b8hua$createEffect(() => {
198
+ if (!sizeToUse()) return; // wait until we have a size, run every time the size changes
199
+ if (timeoutSet) return;
200
+ const handler = $b8hua$catchify(() => {
201
+ if (gotCleanedUp) return;
202
+ img.sizes = "".concat(sizeToUse(), "px"); // use latest available value of size in case it has changed
203
+ if (!sizeSetFastPath) {
204
+ setHasSetSize(true);
205
+ sizeSetFastPath = true;
206
+ }
207
+ timeoutSet = false;
208
+ });
209
+ // Throttle the updating of sizes to avoid unnecessary image re-fetches during resize
210
+ // And also because we first set src after sizes has been set, wait with loading and decoding images until browser is idle
211
+ // This greatly improves performance when loading (more) products
212
+ // See https://depictaiworkspace.slack.com/archives/C05NJ0K3WRL/p1698220617663139
213
+ timeoutSet = true; // Important to set timeoutSet before the call to executeWhenIdleBatched since if this is an important image executeWhenIdleBatched will execute fn immediately
214
+ executeWhenIdleBatched(handler, true);
215
+ });
216
+ const dontLoadImageYet = $b8hua$createMemo(() => !sizeToUse() || !hasSetSize()); // Moving this condition into a memo saves us from re-setting src and srcset (expensive) if just props.size changes
217
+ $b8hua$createEffect(() => {
218
+ if (dontLoadImageYet()) return; // If size isn't known or set, don't assign src yet since it would cause the most low res image to load
219
+ Object.assign(img, src_options());
220
+ // Add to DOM once decoded to not require/block any paints before image has completed loading and avoid showing broken image symbol
221
+ // We can do this because there has to be a container around us giving us a size
222
+ // No need to listen if we're already in the DOM
223
+ if (hasDecodedFastPath) return;
224
+ if (shouldActuallyEnableLazyLoading()) {
225
+ // For lazy loading there's no decoding to wait for as it only occurs when the image is visible
226
+ // Make sure src is set before we put the image into the DOM though so no broken image symbol is shown
227
+ setHasDecoded(true);
228
+ hasDecodedFastPath = true;
229
+ return;
41
230
  }
231
+ img.decode().catch(e => $b8hua$dwarn("Failed to decode image", e, img)) // Display the image also if loading failed so webdev can debug and doesn't get "no image"
232
+ .then(async () => {
233
+ // Also wait with inserting image (i.e. paint) until browser is idle
234
+ await new Promise(r => executeWhenIdleBatched(r, false));
235
+ if (gotCleanedUp) return;
236
+ setHasDecoded(true);
237
+ hasDecodedFastPath = true;
238
+ });
42
239
  });
43
- return n_cols_currently_showing;
240
+ return $b8hua$createComponent((0, $b8hua$Show), {
241
+ get when() {
242
+ return hasDecoded();
243
+ },
244
+ children: img
245
+ });
246
+ }
247
+ function $56047603f9d212b6$var$make_srcset(url, resolutions, customGenerateImageUrl_) {
248
+ return resolutions.map(width => "".concat((customGenerateImageUrl_ || $56047603f9d212b6$export$1d6267828870adda)(url, width), " ").concat(width, "w")).join(", ");
249
+ }
250
+ function $56047603f9d212b6$export$1d6267828870adda(url, width) {
251
+ // Even just creating one `URL` object per image src and then setting the search parameter is quite slow (0.25ms to set the width param)
252
+ // We're making the assumptions that the url has already at least one query parameter and that the image resizing service will choose the last one out of a duplicate width parameter (shopify's does)
253
+ // That way we can just to string concatenation which is insanely fast
254
+ return url + "&width=" + encodeURIComponent(width);
44
255
  }
45
256
  var $bc2337c9a05ecd18$var$_tmpl$ = ["<span", ' class="', '" style="', '"></span>'];
46
257
  function $bc2337c9a05ecd18$export$acb3eaade4b23afd(props) {
@@ -78,23 +289,210 @@ function $3ab4aa97880fb88d$export$3f37af283f8fb843(props) {
78
289
  }
79
290
  });
80
291
  }
81
- var $ff7feae4dddd6073$var$_tmpl$ = ["<div", ' class="', '" style="', '">', "</div>"];
82
- function $ff7feae4dddd6073$export$791ef57e62e21c3f(_ref) {
83
- let {
84
- content_blocks_: incoming_content_blocks,
85
- cols_at_size_: cols_at_size_,
86
- set_top_row_shortened_by_: set_top_row_shortened_by_
87
- } = _ref;
88
- // these are by row
89
- const [content_blocks, set_content_blocks] = $b8hua$createStore([]);
90
- const n_cols_currently_showing_ = $40e2fa435715a1a0$export$a79e666719b3647c(cols_at_size_);
91
- $b8hua$createEffect(() => {
92
- const incoming_value = incoming_content_blocks();
93
- if (!incoming_value) {
94
- set_content_blocks([]);
95
- return;
96
- }
97
- set_content_blocks($b8hua$reconcile(incoming_value, {
292
+ function $ceafb6fb91c6f394$export$89c6019e4baa40b1(props) {
293
+ const style = $b8hua$createMemo(() => {
294
+ const {
295
+ style: style,
296
+ height: height,
297
+ width: width
298
+ } = props;
299
+ return {
300
+ ...(style || {}),
301
+ height: height !== null && height !== void 0 ? height : "1em",
302
+ ...(width && {
303
+ width: width
304
+ })
305
+ };
306
+ });
307
+ return $b8hua$createComponent((0, $bc2337c9a05ecd18$export$acb3eaade4b23afd), {
308
+ get style() {
309
+ return style();
310
+ },
311
+ get ["class"]() {
312
+ return props.class;
313
+ }
314
+ });
315
+ }
316
+ var $5eaa00b951637e96$var$_tmpl$ = ["<div", ' class="instant-card"><div class="img-part">', '</div><div class="right-part"><div class="title-brand-tagline"><span class="title">', '</span></div><div class="price-container">', "</div></div></div>"];
317
+ const $5eaa00b951637e96$export$8a2234b5b1a5ebd4 = "--image-aspect-ratio";
318
+ function $5eaa00b951637e96$export$ee1733d9a8495996() {
319
+ return $b8hua$ssr($5eaa00b951637e96$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent((0, $3ab4aa97880fb88d$export$3f37af283f8fb843), {
320
+ aspectRatio: "var(".concat($5eaa00b951637e96$export$8a2234b5b1a5ebd4, ", 1)")
321
+ })), $b8hua$escape($b8hua$createComponent((0, $ceafb6fb91c6f394$export$89c6019e4baa40b1), {
322
+ width: "20ch",
323
+ height: "1em"
324
+ })), $b8hua$escape($b8hua$createComponent((0, $ceafb6fb91c6f394$export$89c6019e4baa40b1), {
325
+ width: "5ch",
326
+ height: "1em",
327
+ "class": "price"
328
+ })));
329
+ }
330
+ function $4be619ec2cd7bba3$export$54c6d6ff54e72743(whatToWatch) {
331
+ const [width, setWidth] = $b8hua$createSignal(0);
332
+ const [height, setHeight] = $b8hua$createSignal(0);
333
+ const resizeObserver = new ResizeObserver($b8hua$catchify(records => $b8hua$batch(() => {
334
+ for (let j = 0; j < records.length; j++) {
335
+ const {
336
+ width: width,
337
+ height: height
338
+ } = records[j].contentRect;
339
+ // Padding hack makes that we can't use contentRect to get the height since that's apparently without padding
340
+ const definitiveHeight = height || whatToWatch.getBoundingClientRect().height;
341
+ if (definitiveHeight) setHeight(Math.ceil(definitiveHeight));
342
+ if (width) setWidth(Math.ceil(width));
343
+ }
344
+ })));
345
+ // If we start observing elements before they're in the DOM Chrome (Version 117.0.5938.92 (Official Build) (arm64)) sometimes gives us a resize event with a width of 0 and then doesn't dispatch one with the actual width once it's in the DOM. So we wait until the element is in the DOM before we start observing it.
346
+ // It doesn't seem to work even when waiting for it to be in the DOM, also wait an animation frame
347
+ const disconnect = (0, $b8hua$observer).onexists(whatToWatch, _ref => {
348
+ let {
349
+ element: element
350
+ } = _ref;
351
+ return requestAnimationFrame($b8hua$catchify(() => resizeObserver.observe(element)));
352
+ });
353
+ $b8hua$onCleanup(() => {
354
+ resizeObserver.disconnect();
355
+ disconnect();
356
+ });
357
+ return [width, height];
358
+ }
359
+ const $4df489344a0f97c7$var$backupSizeSignal = /*@__PURE__*/$b8hua$createSignal();
360
+ const $4df489344a0f97c7$export$d7b7ab832c20e2f4 = /*@__PURE__*/Symbol("ShopifyContainedImage");
361
+ function $4df489344a0f97c7$export$e4b984597b71e989(props) {
362
+ const context = $5441862cd2f5e111$export$8d0c4fdbb05a2f2e();
363
+ if (context && !context[$4df489344a0f97c7$export$d7b7ab832c20e2f4])
364
+ // create a signal that's the same for all items in this listing
365
+ context[$4df489344a0f97c7$export$d7b7ab832c20e2f4] = $b8hua$createSignal();
366
+ const [currentImageSize, setCurrentImageSize] = (context === null || context === void 0 ? void 0 : context[$4df489344a0f97c7$export$d7b7ab832c20e2f4]) || $4df489344a0f97c7$var$backupSizeSignal; // use global fallback signal (might lead to blurry images) if no context is available
367
+ const [mostPrevalentAspectRatio] = context ? context[(0, $56047603f9d212b6$export$6066eb417ed2e9f7)] || (context[(0, $56047603f9d212b6$export$6066eb417ed2e9f7)] = $b8hua$createSignal()) : [];
368
+ const container = $801e8845d3fa3653$export$94026ee33dbabc26({
369
+ // Write getters manually instead of using JSX, so we can do more complex logic in the aspectRatio getter without increasing bundle size
370
+ get class() {
371
+ return props.class;
372
+ },
373
+ get aspectRatio() {
374
+ if (props.autoAdjustAspectRatio) {
375
+ const targetRatio = mostPrevalentAspectRatio === null || mostPrevalentAspectRatio === void 0 ? void 0 : mostPrevalentAspectRatio();
376
+ if (targetRatio != undefined) return "var(".concat((0, $5eaa00b951637e96$export$8a2234b5b1a5ebd4), ", ").concat(targetRatio, ")");
377
+ }
378
+ return props.aspectRatio;
379
+ }
380
+ });
381
+ const owner = $b8hua$getOwner();
382
+ let createdSizeAccessor = false;
383
+ let wasCleanedUp = false;
384
+ $b8hua$createEffect(() => {
385
+ if (currentImageSize() || wasCleanedUp) return; // We get into the effect when onCleanup is called if we don't have wasCleanedUp
386
+ // ensure we always have a size accessor
387
+ // what this whole thing does is set the sizes attribute to the actual size of one of the existing image containers, therefore the value doesn't have to manually be specified
388
+ createdSizeAccessor = true;
389
+ setCurrentImageSize(() => $b8hua$runWithOwner(owner, () => $4be619ec2cd7bba3$export$54c6d6ff54e72743(container)));
390
+ });
391
+ $b8hua$onCleanup(() => {
392
+ wasCleanedUp = true; // important to set this before the function call below and always, so the dead effects don't create dead size accessors
393
+ if (!createdSizeAccessor) return;
394
+ $b8hua$queueMacroTask(() => setCurrentImageSize()); // unset the size accessor next event loop iteration, so that all onCleanup's have time to run, since the effects run more aggressively and can create a size accessor with a cleaned up owner otherwise
395
+ });
396
+
397
+ $b8hua$insert(container, $b8hua$createComponent((0, $56047603f9d212b6$export$6e5611bc7e57e477), $b8hua$mergeProps({
398
+ size: () => {
399
+ var _currentImageSize, _currentImageSize$;
400
+ return ((_currentImageSize = currentImageSize()) === null || _currentImageSize === void 0 ? void 0 : (_currentImageSize$ = _currentImageSize[0]) === null || _currentImageSize$ === void 0 ? void 0 : _currentImageSize$.call(_currentImageSize)) || 0;
401
+ },
402
+ sizeHeight: () => {
403
+ var _currentImageSize2, _currentImageSize2$;
404
+ return ((_currentImageSize2 = currentImageSize()) === null || _currentImageSize2 === void 0 ? void 0 : (_currentImageSize2$ = _currentImageSize2[1]) === null || _currentImageSize2$ === void 0 ? void 0 : _currentImageSize2$.call(_currentImageSize2)) || 0;
405
+ },
406
+ get src() {
407
+ return props.src;
408
+ }
409
+ }, () => props.imgProps, {
410
+ get style() {
411
+ var _props$imgProps;
412
+ return (_props$imgProps = props.imgProps) === null || _props$imgProps === void 0 ? void 0 : _props$imgProps.style;
413
+ }
414
+ })));
415
+ return container;
416
+ }
417
+ const $98688279b9059f50$var$customUrls = (url, width) => {
418
+ var _url$startsWith;
419
+ if (url !== null && url !== void 0 && (_url$startsWith = url.startsWith) !== null && _url$startsWith !== void 0 && _url$startsWith.call(url, "https://cdn.shopify.com"))
420
+ // The shopify image resizing CDN blocks Cloudflare's image resizer. It's possible that we can't detect shopify image URLs sometimes because they go to the merchant's domain,
421
+ // but it seems like the URLs returned by the Depict API always goes to the cdn.shopify.com version of an image, so this simple workaround works.
422
+ return $56047603f9d212b6$export$1d6267828870adda(url, width);
423
+ // Use cloudflare image resizer instead of img.depict.ai because it's a lot faster (and also auto-chooses other formats if webp is not supported)
424
+ return "https://app.depict.ai/cdn-cgi/image/width=".concat(width, ",format=auto/").concat(url);
425
+ };
426
+ function $98688279b9059f50$export$9d4a4b669b1929ab(props) {
427
+ return $b8hua$createComponent((0, $4df489344a0f97c7$export$e4b984597b71e989), $b8hua$mergeProps(props, {
428
+ get imgProps() {
429
+ return {
430
+ ...props.imgProps,
431
+ customUrls: $98688279b9059f50$var$customUrls
432
+ };
433
+ }
434
+ }));
435
+ }
436
+ function $98688279b9059f50$export$140423fa4bfb6d63(props) {
437
+ return $b8hua$createComponent((0, $56047603f9d212b6$export$6e5611bc7e57e477), $b8hua$mergeProps(props, {
438
+ customUrls: $98688279b9059f50$var$customUrls
439
+ }));
440
+ }
441
+
442
+ // Value first so shopify merchants can set (extra) display transformers in the shopify app
443
+ // Calling these functions normally doesn't do anything, but our shopify app respects them
444
+ // Them being here is value first too because this can be easily imported in the product card editor
445
+ let $80c7883e020be192$var$extraDisplayTransformers;
446
+ const $80c7883e020be192$export$b2d94be4f02525b2 = () => $80c7883e020be192$var$extraDisplayTransformers;
447
+ const $80c7883e020be192$export$f98b8d5ea7207a1 = displayTransformers => $80c7883e020be192$var$extraDisplayTransformers = displayTransformers;
448
+ function $00a5b94f0c11efbb$export$d9f36cf74e24d595(media_query) {
449
+ const signal = $b8hua$createSignal(false);
450
+ $b8hua$onCleanup($b8hua$javascript_media_query(media_query, _ref => {
451
+ let {
452
+ matches: matches
453
+ } = _ref;
454
+ return signal[1](matches);
455
+ }).remove);
456
+ return signal[0];
457
+ }
458
+ function $40e2fa435715a1a0$export$a79e666719b3647c(cols_at_size_) {
459
+ const size_active = $b8hua$createMemo(() => cols_at_size_().map(_ref => {
460
+ let [n_cols, min_width, max_width] = _ref;
461
+ const media_query = $b8hua$layout_media_query_header(min_width, max_width).replaceAll("@media", "");
462
+ const matches = $00a5b94f0c11efbb$export$d9f36cf74e24d595(media_query);
463
+ return [matches, n_cols];
464
+ }));
465
+ const n_cols_currently_showing = $b8hua$createMemo(() => {
466
+ try {
467
+ const [, n_cols_currently_showing] = size_active().find(_ref2 => {
468
+ let [media_query] = _ref2;
469
+ return media_query();
470
+ });
471
+ return n_cols_currently_showing;
472
+ } catch (e) {
473
+ $b8hua$dwarn("No active size found in columnsAtSize - can't render content blocks or looks");
474
+ return null;
475
+ }
476
+ });
477
+ return n_cols_currently_showing;
478
+ }
479
+ var $ff7feae4dddd6073$var$_tmpl$ = ["<div", ' class="', '" style="', '">', "</div>"];
480
+ function $ff7feae4dddd6073$export$791ef57e62e21c3f(_ref) {
481
+ let {
482
+ content_blocks_: incoming_content_blocks,
483
+ cols_at_size_: cols_at_size_,
484
+ set_top_row_shortened_by_: set_top_row_shortened_by_
485
+ } = _ref;
486
+ // these are by row
487
+ const [content_blocks, set_content_blocks] = $b8hua$createStore([]);
488
+ const n_cols_currently_showing_ = $40e2fa435715a1a0$export$a79e666719b3647c(cols_at_size_);
489
+ $b8hua$createEffect(() => {
490
+ const incoming_value = incoming_content_blocks();
491
+ if (!incoming_value) {
492
+ set_content_blocks([]);
493
+ return;
494
+ }
495
+ set_content_blocks($b8hua$reconcile(incoming_value, {
98
496
  key: "content"
99
497
  })); // key: Make moving blocks faster, see https://github.com/solidjs/solid/issues/1925#issuecomment-1769671596
100
498
  });
@@ -217,7 +615,7 @@ function $ff7feae4dddd6073$var$wrap_blocks_in_div(rendered_content_blocks, max_s
217
615
  })));
218
616
  }
219
617
  });
220
- return $b8hua$mergeProps(block, {
618
+ return $b8hua$mergeProps1(block, {
221
619
  // Create content divs for the blocks with as much fine-grained diffing as possible?
222
620
  content: () => {
223
621
  // Sneaky on-demand rendering, so we don't render more blocks than we can show: we have the rendered value here and don't return a function that renders because if our block would be moved around we'd be guaranteed to re-render
@@ -288,11 +686,11 @@ function $715f7f2e53146662$var$doHeavyCalculations() {
288
686
  const [, setElementsHovered] = $715f7f2e53146662$var$elementsHoveredSignal;
289
687
  const elementAtTouch = new Map();
290
688
  const updateSet = () => setElementsHovered(new Set([...elementAtTouch.values()].filter(v => v)));
291
- const setPositionHandler = $b8hua$catchify(evt => {
689
+ const setPositionHandler = $b8hua$catchify1(evt => {
292
690
  for (const touch of evt.changedTouches) elementAtTouch.set(touch.identifier, document.elementFromPoint(touch.clientX, touch.clientY));
293
691
  updateSet();
294
692
  });
295
- const deleteTouchHandler = $b8hua$catchify(evt => {
693
+ const deleteTouchHandler = $b8hua$catchify1(evt => {
296
694
  for (const touch of evt.changedTouches) elementAtTouch.delete(touch.identifier);
297
695
  updateSet();
298
696
  });
@@ -418,20 +816,6 @@ function $cb64b315b25cfc59$var$unwrapping_helper(elements) {
418
816
  } else if (typeof elements == "function") result.push(...$cb64b315b25cfc59$var$unwrapping_helper(elements()));else if (elements != undefined && typeof elements != "boolean") result.push(elements);
419
817
  return result;
420
818
  }
421
- const $1e69163caedaab4e$var$ProductCardIndexContext = /*@__PURE__*/$b8hua$createContext();
422
- function $1e69163caedaab4e$export$11354f017ddc9790(props) {
423
- return $b8hua$createComponent($1e69163caedaab4e$var$ProductCardIndexContext.Provider, {
424
- get value() {
425
- return props.index_;
426
- },
427
- get children() {
428
- return props.children;
429
- }
430
- });
431
- }
432
- function $1e69163caedaab4e$export$e3faf4d95300054f() {
433
- return $b8hua$useContext($1e69163caedaab4e$var$ProductCardIndexContext);
434
- }
435
819
 
436
820
  /**
437
821
  * This is a function that will safely clone an object that may contain promises.
@@ -660,7 +1044,7 @@ function $618bd53ea0a41cd4$export$4a14175d33d81a96(_ref) {
660
1044
  };
661
1045
  // The following sets up an intersection observer to determine which results are in the viewport, used for the ScrollStatus indicator, knowing when to load more and any other consumer of the useProductCardIsVisible hook.
662
1046
  const shouldObserve = $b8hua$createMemo(() => alwaysObserveCards_ || listenersForIntersecting() > 0);
663
- const intersection_observer = new IntersectionObserver($b8hua$catchify1(records => {
1047
+ const intersection_observer = new IntersectionObserver($b8hua$catchify(records => {
664
1048
  const intersectingValue = currentlyIntersecting();
665
1049
  for (let i = 0; i < records.length; i++) {
666
1050
  const record = records[i];
@@ -956,7 +1340,7 @@ var $63f1f8dbcd07d3b0$var$_tmpl$ = ["<div", ' class="', '">', "</div>"],
956
1340
  $63f1f8dbcd07d3b0$var$_tmpl$2 = ["<style", ' type="text/css">', "</style>"];
957
1341
  function $63f1f8dbcd07d3b0$export$d21e32dfedac04be(props) {
958
1342
  const container_class = "x" + $b8hua$createUniqueId();
959
- const container_element_ = $b8hua$ssrElement("div", $b8hua$mergeProps1(() => props.element_attributes, {
1343
+ const container_element_ = $b8hua$ssrElement("div", $b8hua$mergeProps(() => props.element_attributes, {
960
1344
  classList: {
961
1345
  [container_class]: true
962
1346
  }
@@ -1026,516 +1410,160 @@ function $63f1f8dbcd07d3b0$export$445d8d3f5f706a40(props, container_element) {
1026
1410
  }
1027
1411
  update_children_count();
1028
1412
  if (!(0, $b8hua$isServer)) {
1029
- const mutation_observer = new MutationObserver($b8hua$catchify1(update_children_count));
1030
- mutation_observer.observe(container_element, {
1031
- childList: true
1032
- });
1033
- $b8hua$onCleanup(() => mutation_observer.disconnect());
1034
- }
1035
- set_styling(
1036
- // this is needed because solid will think that the memo-accessor is a setter function otherwise
1037
- () => $b8hua$createMemo(() => {
1038
- const {
1039
- rows_per_click: rows_per_click,
1040
- max_rows = -1,
1041
- start_rows: start_rows
1042
- } = rows_or_empty_object();
1043
- const rows_visible = get_rows_visible();
1044
- const children_count = get_children_count();
1045
- return force_style_update() + col_styling() + props.cols_at_size.map(options => {
1046
- const [recs_per_row, min, max] = options;
1047
- let should_hide_view_more_button;
1048
- let visible_recs;
1049
- if (props.disable_partial_rows) {
1050
- visible_recs = $b8hua$layout_get_visible_recs_without_partial_rows(rows_visible, children_count, options);
1051
- const visible_recs_next_show_more = $b8hua$layout_get_visible_recs_without_partial_rows(rows_visible + (rows_per_click || 0),
1052
- // Should this really be zero when we default rows_per_click to 1?
1053
- children_count, options);
1054
- should_hide_view_more_button = visible_recs === visible_recs_next_show_more;
1055
- } else {
1056
- visible_recs = $b8hua$layout_get_total_rec_amount_for_row(rows_visible, options);
1057
- should_hide_view_more_button = visible_recs >= children_count;
1058
- }
1059
- const should_hide_button_final = should_hide_view_more_button || max_rows !== -1 && rows_visible >= max_rows;
1060
- // I don't really understand the logic for when the view more button gets hidden so IDK if below is correct, but it works how it should for now
1061
- const should_hide_view_less_button = !should_hide_view_more_button || start_rows == undefined || rows_visible <= start_rows || children_count <= recs_per_row * start_rows;
1062
- return "".concat($b8hua$layout_media_query_header(min, max), "{").concat(selector_beginning, ":nth-child(n+").concat(visible_recs + 1, "){display:none}").concat(props.layout == "slider" ? "".concat(selector_beginning, ":nth-child(n+").concat(visible_recs, "){margin-right:0}") : "").concat(should_hide_button_final ? ".depict .".concat(view_more_button_class, "{display:none!important}") : "").concat(should_hide_view_less_button ? ".depict .".concat(view_less_button_class, "{display:none!important}") : "", "}");
1063
- }).join("");
1064
- }));
1065
- });
1066
- const style_element = $b8hua$ssr($63f1f8dbcd07d3b0$var$_tmpl$2, $b8hua$ssrHydrationKey(), get_styling); // need to create this after set_styling has been called or else there will be no styling in the SSR'd output
1067
- if (insert_after_container) container_element.after(style_element);
1068
- return [container_element, view_more_button_container(), view_less_button_container(), style_element];
1069
- }
1070
- var $39ddb986053fb759$var$_tmpl$ = ["<h2", ' class="recs-title">', "</h2>"];
1071
- function $39ddb986053fb759$export$d41d19e89346fa2(_ref) {
1072
- let {
1073
- recommendations_resource_: recommendations_resource_,
1074
- product_card_template_: product_card_template_,
1075
- layout_options_: layout_options_,
1076
- title_: title_,
1077
- NoResultsFallback_: NoResultsFallback_,
1078
- placeholderCacheKey_: placeholderCacheKey_
1079
- } = _ref;
1080
- const is_showing_something = $b8hua$createMemo(() => {
1081
- var _recommendations_reso;
1082
- return recommendations_resource_.loading || ((_recommendations_reso = recommendations_resource_()) === null || _recommendations_reso === void 0 ? void 0 : _recommendations_reso.length);
1083
- });
1084
- const title = $b8hua$createMemo(() => title_ === null || title_ === void 0 ? void 0 : title_()); // In case getter/accessor creates elements, don't create them twice
1085
- const num_placeholders_ = () => 20;
1086
- const slider = [$b8hua$createComponent((0, $b8hua$Show), {
1087
- get when() {
1088
- return title();
1089
- },
1090
- get children() {
1091
- return $b8hua$ssr($39ddb986053fb759$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(title()));
1092
- }
1093
- }), $b8hua$createComponent((0, $002f09d00aac50b2$export$6649caad96ef8870), {
1094
- arrow_height_: 25,
1095
- arrow_width_: 12.5,
1096
- disable_fading_: true,
1097
- slider_ref_: slider => {
1098
- const {
1099
- insert_here: insert_here,
1100
- container: container
1101
- } = slider;
1102
- const Layout = props => $63f1f8dbcd07d3b0$export$445d8d3f5f706a40(props, insert_here, true);
1103
- // Do like this, so we don't have to call mergeProps ourselves
1104
- $b8hua$createComponent(Layout, $b8hua$mergeProps1({
1105
- rows: "all",
1106
- layout: "slider"
1107
- }, layout_options_));
1108
- $b8hua$slider_fractional_factory(0, 0.75).constructor_plugin.call(slider, {}); // enable fractional scrolling
1109
- insert_here.before($ca55612a53dbbdd2$export$a2cc176055f8f08());
1110
- container.classList.add("products");
1111
- },
1112
- get children() {
1113
- return $b8hua$createComponent((0, $b8hua$Suspense), {
1114
- get fallback() {
1115
- return $bdd80c7862246dc2$export$f33414a4df0afd3f({
1116
- num_placeholders_: num_placeholders_,
1117
- product_card_template_: product_card_template_,
1118
- placeholderCacheKey_: placeholderCacheKey_
1119
- });
1120
- },
1121
- get children() {
1122
- return (() => {
1123
- // IIFE to make sure we access both the recommendations_resource and the resources containing the product card rendering results themselves within the Suspense boundary
1124
- const displays_by_key_ = $2d7bad8684bc7f44$export$7f8bd308237ab5a5($b8hua$createMemo(() => recommendations_resource_() || []));
1125
- const {
1126
- renderedDisplays_: renderedDisplays_
1127
- } = $618bd53ea0a41cd4$export$4a14175d33d81a96({
1128
- displays_by_key_: displays_by_key_,
1129
- product_card_template_: product_card_template_
1130
- });
1131
- return renderedDisplays_;
1132
- })();
1133
- }
1134
- });
1135
- }
1136
- })];
1137
- return $b8hua$createComponent((0, $b8hua$Show), {
1138
- get when() {
1139
- return is_showing_something();
1140
- },
1141
- get fallback() {
1142
- return NoResultsFallback_ === null || NoResultsFallback_ === void 0 ? void 0 : NoResultsFallback_();
1143
- },
1144
- children: slider
1145
- });
1146
- }
1147
- function $83e8cf2c0b87a58a$export$23fca46f3143581f(component, error_message) {
1148
- const component_in_error_boundary = do_with_elements => {
1149
- const error_boundary_wrapped = $74777e8fe65b3dcb$export$b69d0d92862de18b({
1150
- severity_: "error",
1151
- message_: error_message,
1152
- get children() {
1153
- const elements = component();
1154
- do_with_elements === null || do_with_elements === void 0 || do_with_elements(elements);
1155
- return elements;
1156
- }
1157
- });
1158
- // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
1159
- if (typeof error_boundary_wrapped === "function")
1160
- // @ts-ignore
1161
- return error_boundary_wrapped();
1162
- // On the server it returns a string, so we just return that
1163
- return error_boundary_wrapped;
1164
- };
1165
- const owner = $b8hua$getOwner();
1166
- if (owner == null) return $b8hua$createRoot(dispose => {
1167
- // if we're not already run in a root, create a root and automatically dispose it when the first returned element is removed from the DOM
1168
- return component_in_error_boundary(elements => {
1169
- const have_multiple = Array.isArray(elements);
1170
- if (have_multiple ? !(elements !== null && elements !== void 0 && elements.length) : !elements) return;
1171
- (0, $b8hua$observer).onremoved(have_multiple ? elements[0] : elements, _ref => {
1172
- let {
1173
- element: element
1174
- } = _ref;
1175
- if (document.documentElement.contains(element)) return; // If element has instantly been re-inserted, don't dispose
1176
- // See https://depictaiworkspace.slack.com/archives/C050GHEPBTR/p1695809102791259?thread_ts=1695106805.459729&cid=C050GHEPBTR
1177
- dispose();
1178
- });
1179
- });
1180
- });else
1181
- // we're already in a root so cleanups are handled
1182
- return component_in_error_boundary();
1183
- }
1184
- const $5441862cd2f5e111$var$ListingContext = /*@__PURE__*/$b8hua$createContext();
1185
- function $5441862cd2f5e111$export$e68cff63f76bd15b(props) {
1186
- const our_object = {};
1187
- return $b8hua$createComponent($5441862cd2f5e111$var$ListingContext.Provider, {
1188
- value: our_object,
1189
- get children() {
1190
- return props.children;
1191
- }
1192
- });
1193
- }
1194
- function $5441862cd2f5e111$export$8d0c4fdbb05a2f2e() {
1195
- return $b8hua$useContext($5441862cd2f5e111$var$ListingContext);
1196
- }
1197
- function $ceafb6fb91c6f394$export$89c6019e4baa40b1(props) {
1198
- const style = $b8hua$createMemo(() => {
1199
- const {
1200
- style: style,
1201
- height: height,
1202
- width: width
1203
- } = props;
1204
- return {
1205
- ...(style || {}),
1206
- height: height !== null && height !== void 0 ? height : "1em",
1207
- ...(width && {
1208
- width: width
1209
- })
1210
- };
1211
- });
1212
- return $b8hua$createComponent((0, $bc2337c9a05ecd18$export$acb3eaade4b23afd), {
1213
- get style() {
1214
- return style();
1215
- },
1216
- get ["class"]() {
1217
- return props.class;
1218
- }
1219
- });
1220
- }
1221
- var $5eaa00b951637e96$var$_tmpl$ = ["<div", ' class="instant-card"><div class="img-part">', '</div><div class="right-part"><div class="title-brand-tagline"><span class="title">', '</span></div><div class="price-container">', "</div></div></div>"];
1222
- const $5eaa00b951637e96$export$8a2234b5b1a5ebd4 = "--image-aspect-ratio";
1223
- function $5eaa00b951637e96$export$ee1733d9a8495996() {
1224
- return $b8hua$ssr($5eaa00b951637e96$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent((0, $3ab4aa97880fb88d$export$3f37af283f8fb843), {
1225
- aspectRatio: "var(".concat($5eaa00b951637e96$export$8a2234b5b1a5ebd4, ", 1)")
1226
- })), $b8hua$escape($b8hua$createComponent((0, $ceafb6fb91c6f394$export$89c6019e4baa40b1), {
1227
- width: "20ch",
1228
- height: "1em"
1229
- })), $b8hua$escape($b8hua$createComponent((0, $ceafb6fb91c6f394$export$89c6019e4baa40b1), {
1230
- width: "5ch",
1231
- height: "1em",
1232
- "class": "price"
1233
- })));
1234
- }
1235
- var $801e8845d3fa3653$var$_tmpl$ = ["<div", ' style="', '"', ">", "</div>"];
1236
- function $801e8845d3fa3653$export$94026ee33dbabc26(props) {
1237
- return $b8hua$ssr($801e8845d3fa3653$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$ssrStyle("padding-bottom:calc(calc(1 / ".concat(props.aspectRatio, ") * 100%)")), $b8hua$ssrAttribute("class", "s-image-container" + (props.class ? " " + $b8hua$escape(props.class, true) : ""), false), $b8hua$escape(props.children));
1238
- }
1239
- let $6db93f70c2db1486$var$browserIsBugged = false;
1240
- function $6db93f70c2db1486$export$2972b890694ced75(callback, _ref) {
1241
- let {
1242
- timeout: timeout
1243
- } = _ref;
1244
- if ($6db93f70c2db1486$var$browserIsBugged) timeout /= 4;
1245
- const cancel = () => {
1246
- cancelIdleCallback(idleHandle);
1247
- clearTimeout(racingTimeout);
1248
- };
1249
- const idleHandle = requestIdleCallback(deadline => {
1250
- cancel();
1251
- return callback(deadline);
1252
- }, {
1253
- timeout: timeout
1254
- });
1255
- const racingTimeout = setTimeout(() => {
1256
- $b8hua$dwarn("Browser did not respect requestIdleCallback timeout");
1257
- $6db93f70c2db1486$var$browserIsBugged = true;
1258
- cancel();
1259
- callback({
1260
- didTimeout: false,
1261
- timeRemaining() {
1262
- return 500;
1263
- }
1264
- });
1265
- }, timeout + 1000);
1266
- return cancel;
1267
- }
1268
- function $56047603f9d212b6$export$e6fffe67d4cdd848(whatToWatch) {
1269
- const [size, setSize] = $b8hua$createSignal(0);
1270
- const resizeObserver = new ResizeObserver($b8hua$catchify1(records => {
1271
- for (let j = 0; j < records.length; j++) {
1272
- const {
1273
- width: width
1274
- } = records[j].contentRect;
1275
- if (!width) continue;
1276
- setSize(Math.ceil(width));
1277
- }
1278
- }));
1279
- // If we start observing elements before they're in the DOM Chrome (Version 117.0.5938.92 (Official Build) (arm64)) sometimes gives us a resize event with a width of 0 and then doesn't dispatch one with the actual width once it's in the DOM. So we wait until the element is in the DOM before we start observing it.
1280
- // It doesn't seem to work even when waiting for it to be in the DOM, also wait an animation frame
1281
- const disconnect = (0, $b8hua$observer).onexists(whatToWatch, _ref => {
1282
- let {
1283
- element: element
1284
- } = _ref;
1285
- return requestAnimationFrame($b8hua$catchify1(() => resizeObserver.observe(element)));
1286
- });
1287
- $b8hua$onCleanup(() => {
1288
- resizeObserver.disconnect();
1289
- disconnect();
1290
- });
1291
- return size;
1292
- }
1293
- const $56047603f9d212b6$var$onIdleFunctionsSymbol = /*@__PURE__*/Symbol("onIdleFunctions");
1294
- const $56047603f9d212b6$export$f8945274f08a3105 = /*@__PURE__*/Symbol("listingContextAspectRatios");
1295
- const $56047603f9d212b6$export$6066eb417ed2e9f7 = /*@__PURE__*/Symbol("listingContextAspectRatios");
1296
- function $56047603f9d212b6$export$6e5611bc7e57e477(props) {
1297
- const src_options = $b8hua$createMemo(() => {
1298
- const {
1299
- src: src,
1300
- customUrls: customUrls
1301
- } = props;
1302
- const fallback_src = (customUrls || $56047603f9d212b6$export$1d6267828870adda)(src, 400);
1303
- const srcset = $56047603f9d212b6$var$make_srcset(props.src, props.resolutions || [64, 128, 256, 300, 400, 512, 640, 768, 1024, 1280, 1536, 2048, 2560, 3072, 3584, 4096], customUrls);
1304
- // The order here *might* matter - I've seen mobile safari always start with loading the 400px version when it was reversed
1305
- return {
1306
- srcset: srcset,
1307
- src: fallback_src
1308
- };
1309
- });
1310
- // Work around https://github.com/solidjs/solid/issues/1828
1311
- const img = new Image(); // Need to use new Image or browser might not start loading image before it's in the DOM
1312
- const [, otherAttributes] = $b8hua$splitProps(props, ["resolutions", "size", "src", "srcSet", "loading", "keyRatioUpdating", "customUrls" // Can't have properties ending on underscore because the property name mangling will get confused by this <-
1313
- ]);
1314
-
1315
- const [hasSetSize, setHasSetSize] = $b8hua$createSignal(false);
1316
- const [hasDecoded, setHasDecoded] = $b8hua$createSignal(false);
1317
- const productCardIndexAccessor = $1e69163caedaab4e$export$e3faf4d95300054f();
1318
- const sizePX = $b8hua$createMemo(() => "".concat(props.size(), "px")); // props.size could be a getter that expects a cleanup so get it in this memo instead of where we set img.sizes
1319
- const listingContext = $5441862cd2f5e111$export$8d0c4fdbb05a2f2e();
1320
- const isPrioritisedImage = $b8hua$createMemo(() => (productCardIndexAccessor === null || productCardIndexAccessor === void 0 ? void 0 : productCardIndexAccessor()) < 8);
1321
- const shouldActuallyEnableLazyLoading = $b8hua$createMemo(() => {
1322
- const {
1323
- loading: loading
1324
- } = props;
1325
- if (loading === "force-lazy") return true;
1326
- return loading === "lazy" && !isPrioritisedImage();
1327
- });
1328
- const modifiedOtherAttributes = $b8hua$mergeProps(otherAttributes, {
1329
- get loading() {
1330
- return shouldActuallyEnableLazyLoading() ? "lazy" : undefined;
1331
- }
1332
- });
1333
- // Batch idle callbacks so that MutationObserver can batch the resulting mutations better, so we don't lose tons of CPU time to MutationObservers doing lots of things for each image
1334
- // Happened on singular, they have some weird observer (+we also have one but ours is at least 3x more efficient)
1335
- const executeWhenIdleBatched = (fn, isSizesUpdate) => {
1336
- if (typeof requestIdleCallback !== "function") return setTimeout(fn); // Old browsers don't get optimisation
1337
- if ((!isSizesUpdate || !sizeSetFastPath) && $b8hua$untrack(isPrioritisedImage)) return fn(); // If we're one of the first 8 images, execute the callbacks immediately (improves lighthouse metrics)
1338
- // unless we're just a `sizes` update after the initial sizes setting (this optimisation makes the looks animation a lot smoother on low-cpu devices)
1339
- const existingStack = listingContext === null || listingContext === void 0 ? void 0 : listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol];
1340
- if (existingStack) return existingStack.add(fn);
1341
- const newStack = new Set([fn]);
1342
- if (listingContext) listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol] = newStack;
1343
- const processStackWhenIdle = () => $6db93f70c2db1486$export$2972b890694ced75($b8hua$catchify1(deadline => {
1344
- const start = performance.now();
1345
- const thirdDeadlineTime = deadline.timeRemaining() / 3; // observers coming after this take up 2-3x the time so don't use all of it
1346
- for (const fn of newStack) {
1347
- newStack.delete(fn);
1348
- fn();
1349
- const timeTaken = performance.now() - start;
1350
- if ((!deadline.timeRemaining() || timeTaken > thirdDeadlineTime) && newStack.size) {
1351
- // There's still work to be done but no time, so schedule another idle callback
1352
- processStackWhenIdle();
1353
- return;
1354
- }
1355
- }
1356
- // Stack is empty
1357
- if (listingContext) delete listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol];
1358
- }), {
1359
- timeout: 15000
1360
- } // long timeout, better to not have images than to freeze the browser. But also we don't want to confuse user why no iamges are loading
1361
- );
1362
-
1363
- processStackWhenIdle();
1364
- };
1365
- let sizeSetFastPath = false;
1366
- let hasDecodedFastPath = false;
1367
- let timeoutSet = false;
1368
- let gotCleanedUp = false;
1369
- let srcJustChanged = true;
1370
- img.classList.add("s-responsive-image");
1371
- if (listingContext) {
1372
- let prevValue;
1373
- const aspectRatios = listingContext[$56047603f9d212b6$export$f8945274f08a3105] || (listingContext[$56047603f9d212b6$export$f8945274f08a3105] = new Set());
1374
- const [, setMostPrevalentAspectRatio] = listingContext[$56047603f9d212b6$export$6066eb417ed2e9f7] || (listingContext[$56047603f9d212b6$export$6066eb417ed2e9f7] = $b8hua$createSignal());
1375
- img.addEventListener("load", $b8hua$catchify1(() => {
1376
- if (props.keyRatioUpdating) {
1377
- if (!srcJustChanged) return;
1378
- srcJustChanged = false;
1379
- }
1380
- // Save our aspect ratio whenever it changes, so that we can base the containers on the most dominant aspect ratio, used in SearchModalV2 and LookItem
1381
- const aspectRatio_ = img.naturalWidth / img.naturalHeight;
1382
- if (prevValue) aspectRatios.delete(prevValue);
1383
- const newValue = !isNaN(aspectRatio_) ? {
1384
- aspectRatio_: aspectRatio_
1385
- } : undefined;
1386
- if (newValue) aspectRatios.add(newValue);
1387
- prevValue = newValue;
1388
- // Do all calculations resulting of an update directly, for performance
1389
- const asArray = [...aspectRatios].map(_ref2 => {
1390
- let {
1391
- aspectRatio_: aspectRatio_
1392
- } = _ref2;
1393
- return aspectRatio_;
1413
+ const mutation_observer = new MutationObserver($b8hua$catchify(update_children_count));
1414
+ mutation_observer.observe(container_element, {
1415
+ childList: true
1394
1416
  });
1395
- const mostPrevalentAspectRatio = $b8hua$findMostFrequentItem(asArray);
1396
- setMostPrevalentAspectRatio(mostPrevalentAspectRatio);
1417
+ $b8hua$onCleanup(() => mutation_observer.disconnect());
1418
+ }
1419
+ set_styling(
1420
+ // this is needed because solid will think that the memo-accessor is a setter function otherwise
1421
+ () => $b8hua$createMemo(() => {
1422
+ const {
1423
+ rows_per_click: rows_per_click,
1424
+ max_rows = -1,
1425
+ start_rows: start_rows
1426
+ } = rows_or_empty_object();
1427
+ const rows_visible = get_rows_visible();
1428
+ const children_count = get_children_count();
1429
+ return force_style_update() + col_styling() + props.cols_at_size.map(options => {
1430
+ const [recs_per_row, min, max] = options;
1431
+ let should_hide_view_more_button;
1432
+ let visible_recs;
1433
+ if (props.disable_partial_rows) {
1434
+ visible_recs = $b8hua$layout_get_visible_recs_without_partial_rows(rows_visible, children_count, options);
1435
+ const visible_recs_next_show_more = $b8hua$layout_get_visible_recs_without_partial_rows(rows_visible + (rows_per_click || 0),
1436
+ // Should this really be zero when we default rows_per_click to 1?
1437
+ children_count, options);
1438
+ should_hide_view_more_button = visible_recs === visible_recs_next_show_more;
1439
+ } else {
1440
+ visible_recs = $b8hua$layout_get_total_rec_amount_for_row(rows_visible, options);
1441
+ should_hide_view_more_button = visible_recs >= children_count;
1442
+ }
1443
+ const should_hide_button_final = should_hide_view_more_button || max_rows !== -1 && rows_visible >= max_rows;
1444
+ // I don't really understand the logic for when the view more button gets hidden so IDK if below is correct, but it works how it should for now
1445
+ const should_hide_view_less_button = !should_hide_view_more_button || start_rows == undefined || rows_visible <= start_rows || children_count <= recs_per_row * start_rows;
1446
+ return "".concat($b8hua$layout_media_query_header(min, max), "{").concat(selector_beginning, ":nth-child(n+").concat(visible_recs + 1, "){display:none}").concat(props.layout == "slider" ? "".concat(selector_beginning, ":nth-child(n+").concat(visible_recs, "){margin-right:0}") : "").concat(should_hide_button_final ? ".depict .".concat(view_more_button_class, "{display:none!important}") : "").concat(should_hide_view_less_button ? ".depict .".concat(view_less_button_class, "{display:none!important}") : "", "}");
1447
+ }).join("");
1397
1448
  }));
1398
- $b8hua$onCleanup(() => prevValue && aspectRatios.delete(prevValue));
1399
- }
1400
- $b8hua$onCleanup(() => gotCleanedUp = true);
1401
- $b8hua$spread(img, $b8hua$mergeProps(modifiedOtherAttributes), false, true);
1402
- $b8hua$createRenderEffect(() => {
1403
- props.src;
1404
- srcJustChanged = true;
1405
1449
  });
1406
- $b8hua$createEffect(() => {
1407
- if (!props.size()) return; // wait until we have a size, run every time the size changes
1408
- if (timeoutSet) return;
1409
- const handler = $b8hua$catchify1(() => {
1410
- if (gotCleanedUp) return;
1411
- img.sizes = sizePX(); // use latest available value of props.size
1412
- if (!sizeSetFastPath) {
1413
- setHasSetSize(true);
1414
- sizeSetFastPath = true;
1415
- }
1416
- timeoutSet = false;
1417
- });
1418
- // Throttle the updating of sizes to avoid unnecessary image re-fetches during resize
1419
- // And also because we first set src after sizes has been set, wait with loading and decoding images until browser is idle
1420
- // This greatly improves performance when loading (more) products
1421
- // See https://depictaiworkspace.slack.com/archives/C05NJ0K3WRL/p1698220617663139
1422
- timeoutSet = true; // Important to set timeoutSet before the call to executeWhenIdleBatched since if this is an important image executeWhenIdleBatched will execute fn immediately
1423
- executeWhenIdleBatched(handler, true);
1450
+ const style_element = $b8hua$ssr($63f1f8dbcd07d3b0$var$_tmpl$2, $b8hua$ssrHydrationKey(), get_styling); // need to create this after set_styling has been called or else there will be no styling in the SSR'd output
1451
+ if (insert_after_container) container_element.after(style_element);
1452
+ return [container_element, view_more_button_container(), view_less_button_container(), style_element];
1453
+ }
1454
+ var $39ddb986053fb759$var$_tmpl$ = ["<h2", ' class="recs-title">', "</h2>"];
1455
+ function $39ddb986053fb759$export$d41d19e89346fa2(_ref) {
1456
+ let {
1457
+ recommendations_resource_: recommendations_resource_,
1458
+ product_card_template_: product_card_template_,
1459
+ layout_options_: layout_options_,
1460
+ title_: title_,
1461
+ NoResultsFallback_: NoResultsFallback_,
1462
+ placeholderCacheKey_: placeholderCacheKey_
1463
+ } = _ref;
1464
+ const is_showing_something = $b8hua$createMemo(() => {
1465
+ var _recommendations_reso;
1466
+ return recommendations_resource_.loading || ((_recommendations_reso = recommendations_resource_()) === null || _recommendations_reso === void 0 ? void 0 : _recommendations_reso.length);
1424
1467
  });
1425
- const dontLoadImageYet = $b8hua$createMemo(() => !props.size() || !hasSetSize()); // Moving this condition into a memo saves us from re-setting src and srcset (expensive) if just props.size changes
1426
- $b8hua$createEffect(() => {
1427
- if (dontLoadImageYet()) return; // If size isn't known or set, don't assign src yet since it would cause the most low res image to load
1428
- Object.assign(img, src_options());
1429
- // Add to DOM once decoded to not require/block any paints before image has completed loading and avoid showing broken image symbol
1430
- // We can do this because there has to be a container around us giving us a size
1431
- // No need to listen if we're already in the DOM
1432
- if (hasDecodedFastPath) return;
1433
- if (shouldActuallyEnableLazyLoading()) {
1434
- // For lazy loading there's no decoding to wait for as it only occurs when the image is visible
1435
- // Make sure src is set before we put the image into the DOM though so no broken image symbol is shown
1436
- setHasDecoded(true);
1437
- hasDecodedFastPath = true;
1438
- return;
1468
+ const title = $b8hua$createMemo(() => title_ === null || title_ === void 0 ? void 0 : title_()); // In case getter/accessor creates elements, don't create them twice
1469
+ const num_placeholders_ = () => 20;
1470
+ const slider = [$b8hua$createComponent((0, $b8hua$Show), {
1471
+ get when() {
1472
+ return title();
1473
+ },
1474
+ get children() {
1475
+ return $b8hua$ssr($39ddb986053fb759$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(title()));
1439
1476
  }
1440
- img.decode().catch(e => $b8hua$dwarn("Failed to decode image", e, img)) // Display the image also if loading failed so webdev can debug and doesn't get "no image"
1441
- .then(async () => {
1442
- // Also wait with inserting image (i.e. paint) until browser is idle
1443
- await new Promise(r => executeWhenIdleBatched(r, false));
1444
- if (gotCleanedUp) return;
1445
- setHasDecoded(true);
1446
- hasDecodedFastPath = true;
1447
- });
1448
- });
1477
+ }), $b8hua$createComponent((0, $002f09d00aac50b2$export$6649caad96ef8870), {
1478
+ arrow_height_: 25,
1479
+ arrow_width_: 12.5,
1480
+ disable_fading_: true,
1481
+ slider_ref_: slider => {
1482
+ const {
1483
+ insert_here: insert_here,
1484
+ container: container
1485
+ } = slider;
1486
+ const Layout = props => $63f1f8dbcd07d3b0$export$445d8d3f5f706a40(props, insert_here, true);
1487
+ // Do like this, so we don't have to call mergeProps ourselves
1488
+ $b8hua$createComponent(Layout, $b8hua$mergeProps({
1489
+ rows: "all",
1490
+ layout: "slider"
1491
+ }, layout_options_));
1492
+ $b8hua$slider_fractional_factory(0, 0.75).constructor_plugin.call(slider, {}); // enable fractional scrolling
1493
+ insert_here.before($ca55612a53dbbdd2$export$a2cc176055f8f08());
1494
+ container.classList.add("products");
1495
+ },
1496
+ get children() {
1497
+ return $b8hua$createComponent((0, $b8hua$Suspense), {
1498
+ get fallback() {
1499
+ return $bdd80c7862246dc2$export$f33414a4df0afd3f({
1500
+ num_placeholders_: num_placeholders_,
1501
+ product_card_template_: product_card_template_,
1502
+ placeholderCacheKey_: placeholderCacheKey_
1503
+ });
1504
+ },
1505
+ get children() {
1506
+ return (() => {
1507
+ // IIFE to make sure we access both the recommendations_resource and the resources containing the product card rendering results themselves within the Suspense boundary
1508
+ const displays_by_key_ = $2d7bad8684bc7f44$export$7f8bd308237ab5a5($b8hua$createMemo(() => recommendations_resource_() || []));
1509
+ const {
1510
+ renderedDisplays_: renderedDisplays_
1511
+ } = $618bd53ea0a41cd4$export$4a14175d33d81a96({
1512
+ displays_by_key_: displays_by_key_,
1513
+ product_card_template_: product_card_template_
1514
+ });
1515
+ return renderedDisplays_;
1516
+ })();
1517
+ }
1518
+ });
1519
+ }
1520
+ })];
1449
1521
  return $b8hua$createComponent((0, $b8hua$Show), {
1450
1522
  get when() {
1451
- return hasDecoded();
1523
+ return is_showing_something();
1452
1524
  },
1453
- children: img
1525
+ get fallback() {
1526
+ return NoResultsFallback_ === null || NoResultsFallback_ === void 0 ? void 0 : NoResultsFallback_();
1527
+ },
1528
+ children: slider
1454
1529
  });
1455
1530
  }
1456
- function $56047603f9d212b6$var$make_srcset(url, resolutions, customGenerateImageUrl_) {
1457
- return resolutions.map(width => "".concat((customGenerateImageUrl_ || $56047603f9d212b6$export$1d6267828870adda)(url, width), " ").concat(width, "w")).join(", ");
1458
- }
1459
- function $56047603f9d212b6$export$1d6267828870adda(url, width) {
1460
- // Even just creating one `URL` object per image src and then setting the search parameter is quite slow (0.25ms to set the width param)
1461
- // We're making the assumptions that the url has already at least one query parameter and that the image resizing service will choose the last one out of a duplicate width parameter (shopify's does)
1462
- // That way we can just to string concatenation which is insanely fast
1463
- return url + "&width=" + encodeURIComponent(width);
1464
- }
1465
- const $4df489344a0f97c7$var$backupSizeSignal = /*@__PURE__*/$b8hua$createSignal();
1466
- const $4df489344a0f97c7$export$d7b7ab832c20e2f4 = /*@__PURE__*/Symbol("ShopifyContainedImage");
1467
- function $4df489344a0f97c7$export$e4b984597b71e989(props) {
1468
- const context = $5441862cd2f5e111$export$8d0c4fdbb05a2f2e();
1469
- if (context && !context[$4df489344a0f97c7$export$d7b7ab832c20e2f4])
1470
- // create a signal that's the same for all items in this listing
1471
- context[$4df489344a0f97c7$export$d7b7ab832c20e2f4] = $b8hua$createSignal();
1472
- const [currentImageSize, setCurrentImageSize] = (context === null || context === void 0 ? void 0 : context[$4df489344a0f97c7$export$d7b7ab832c20e2f4]) || $4df489344a0f97c7$var$backupSizeSignal; // use global fallback signal (might lead to blurry images) if no context is available
1473
- const [mostPrevalentAspectRatio] = context ? context[(0, $56047603f9d212b6$export$6066eb417ed2e9f7)] || (context[(0, $56047603f9d212b6$export$6066eb417ed2e9f7)] = $b8hua$createSignal()) : [];
1474
- const container = $801e8845d3fa3653$export$94026ee33dbabc26({
1475
- // Write getters manually instead of using JSX, so we can do more complex logic in the aspectRatio getter without increasing bundle size
1476
- get class() {
1477
- return props.class;
1478
- },
1479
- get aspectRatio() {
1480
- if (props.autoAdjustAspectRatio) {
1481
- const targetRatio = mostPrevalentAspectRatio === null || mostPrevalentAspectRatio === void 0 ? void 0 : mostPrevalentAspectRatio();
1482
- if (targetRatio != undefined) return "var(".concat((0, $5eaa00b951637e96$export$8a2234b5b1a5ebd4), ", ").concat(targetRatio, ")");
1531
+ function $83e8cf2c0b87a58a$export$23fca46f3143581f(component, error_message) {
1532
+ const component_in_error_boundary = do_with_elements => {
1533
+ const error_boundary_wrapped = $74777e8fe65b3dcb$export$b69d0d92862de18b({
1534
+ severity_: "error",
1535
+ message_: error_message,
1536
+ get children() {
1537
+ const elements = component();
1538
+ do_with_elements === null || do_with_elements === void 0 || do_with_elements(elements);
1539
+ return elements;
1483
1540
  }
1484
- return props.aspectRatio;
1485
- }
1486
- });
1541
+ });
1542
+ // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
1543
+ if (typeof error_boundary_wrapped === "function")
1544
+ // @ts-ignore
1545
+ return error_boundary_wrapped();
1546
+ // On the server it returns a string, so we just return that
1547
+ return error_boundary_wrapped;
1548
+ };
1487
1549
  const owner = $b8hua$getOwner();
1488
- let createdSizeAccessor = false;
1489
- let wasCleanedUp = false;
1490
- $b8hua$createEffect(() => {
1491
- if (currentImageSize() || wasCleanedUp) return; // We get into the effect when onCleanup is called if we don't have wasCleanedUp
1492
- // ensure we always have a size accessor
1493
- // what this whole thing does is set the sizes attribute to the actual size of one of the existing image containers, therefore the value doesn't have to manually be specified
1494
- createdSizeAccessor = true;
1495
- setCurrentImageSize(() => $b8hua$runWithOwner(owner, () => $56047603f9d212b6$export$e6fffe67d4cdd848(container)));
1496
- });
1497
- $b8hua$onCleanup(() => {
1498
- wasCleanedUp = true; // important to set this before the function call below and always, so the dead effects don't create dead size accessors
1499
- if (!createdSizeAccessor) return;
1500
- $b8hua$queueMacroTask(() => setCurrentImageSize()); // unset the size accessor next event loop iteration, so that all onCleanup's have time to run, since the effects run more aggressively and can create a size accessor with a cleaned up owner otherwise
1501
- });
1502
-
1503
- $b8hua$insert(container, $b8hua$createComponent((0, $56047603f9d212b6$export$6e5611bc7e57e477), $b8hua$mergeProps1({
1504
- get size() {
1505
- return $b8hua$createMemo(() => {
1506
- var _currentImageSize;
1507
- return ((_currentImageSize = currentImageSize()) === null || _currentImageSize === void 0 ? void 0 : _currentImageSize()) || 0;
1550
+ if (owner == null) return $b8hua$createRoot(dispose => {
1551
+ // if we're not already run in a root, create a root and automatically dispose it when the first returned element is removed from the DOM
1552
+ return component_in_error_boundary(elements => {
1553
+ const have_multiple = Array.isArray(elements);
1554
+ if (have_multiple ? !(elements !== null && elements !== void 0 && elements.length) : !elements) return;
1555
+ (0, $b8hua$observer).onremoved(have_multiple ? elements[0] : elements, _ref => {
1556
+ let {
1557
+ element: element
1558
+ } = _ref;
1559
+ if (document.documentElement.contains(element)) return; // If element has instantly been re-inserted, don't dispose
1560
+ // See https://depictaiworkspace.slack.com/archives/C050GHEPBTR/p1695809102791259?thread_ts=1695106805.459729&cid=C050GHEPBTR
1561
+ dispose();
1508
1562
  });
1509
- },
1510
- get src() {
1511
- return props.src;
1512
- }
1513
- }, () => props.imgProps, {
1514
- get style() {
1515
- var _props$imgProps;
1516
- return (_props$imgProps = props.imgProps) === null || _props$imgProps === void 0 ? void 0 : _props$imgProps.style;
1517
- }
1518
- })));
1519
- return container;
1520
- }
1521
- function $98688279b9059f50$export$9d4a4b669b1929ab(props) {
1522
- return $b8hua$createComponent((0, $4df489344a0f97c7$export$e4b984597b71e989), $b8hua$mergeProps1(props, {
1523
- get imgProps() {
1524
- return {
1525
- ...props.imgProps,
1526
- customUrls: (url, width // Apparently don't have to encode url for CF's service
1527
- ) => {
1528
- var _url$startsWith;
1529
- if (url !== null && url !== void 0 && (_url$startsWith = url.startsWith) !== null && _url$startsWith !== void 0 && _url$startsWith.call(url, "https://cdn.shopify.com"))
1530
- // The shopify image resizing CDN blocks Cloudflare's image resizer. It's possible that we can't detect shopify image URLs sometimes because they go to the merchant's domain,
1531
- // but it seems like the URLs returned by the Depict API always goes to the cdn.shopify.com version of an image, so this simple workaround works.
1532
- return $56047603f9d212b6$export$1d6267828870adda(url, width);
1533
- // Use cloudflare image resizer instead of img.depict.ai because it's a lot faster (and also auto-chooses other formats if webp is not supported)
1534
- return "https://app.depict.ai/cdn-cgi/image/width=".concat(width, ",format=auto/").concat(url);
1535
- }
1536
- };
1537
- }
1538
- }));
1563
+ });
1564
+ });else
1565
+ // we're already in a root so cleanups are handled
1566
+ return component_in_error_boundary();
1539
1567
  }
1540
1568
  function $60ec7a29849d81db$export$a71e92cfbb498adc(props) {
1541
1569
  return $b8hua$createMemo(() => {
@@ -1587,7 +1615,7 @@ function $f84b097e079b0a33$export$b73ed90f0ee50dc3(_ref) {
1587
1615
  var _variantToUse5;
1588
1616
  return (_variantToUse5 = variantToUse()) === null || _variantToUse5 === void 0 ? void 0 : _variantToUse5.title;
1589
1617
  });
1590
- return $b8hua$ssrElement("a", $b8hua$mergeProps1({
1618
+ return $b8hua$ssrElement("a", $b8hua$mergeProps({
1591
1619
  "class": "look-item"
1592
1620
  }, () => enableLink() ? {
1593
1621
  href: href()
@@ -1631,7 +1659,7 @@ function $f84b097e079b0a33$export$b73ed90f0ee50dc3(_ref) {
1631
1659
  return (animationEffectExists() ? isExpandedThrottledByOurEffectRun() : userWantsExpanded()) || animationIsRunning();
1632
1660
  },
1633
1661
  get children() {
1634
- return $b8hua$ssr($f84b097e079b0a33$var$_tmpl$3, $b8hua$ssrHydrationKey(), $b8hua$ssrElement("span", $b8hua$mergeProps1({
1662
+ return $b8hua$ssr($f84b097e079b0a33$var$_tmpl$3, $b8hua$ssrHydrationKey(), $b8hua$ssrElement("span", $b8hua$mergeProps({
1635
1663
  "class": "d-title line-clamp"
1636
1664
  }, () => title() && {
1637
1665
  title: title()
@@ -1727,7 +1755,7 @@ async function $c4103af154850e50$var$checkIfIsAffectedByChromeBug326498383() {
1727
1755
  const waitAFrame = () => new Promise(r => requestAnimationFrame(() => requestAnimationFrame(r)));
1728
1756
  const timeoutPromise = new Promise(r => {
1729
1757
  resolveTimeoutPromise = r;
1730
- setTimeout($b8hua$catchify1(() => {
1758
+ setTimeout($b8hua$catchify(() => {
1731
1759
  r();
1732
1760
  div.remove();
1733
1761
  }), 500);
@@ -1812,7 +1840,7 @@ function $275d06a183ca0a29$export$ebf0b1d4f90c09ae(_ref) {
1812
1840
  priceFormatting_: priceFormatting_,
1813
1841
  outerRef_: el => $b8hua$createEffect(() => {
1814
1842
  if (index !== 0) return;
1815
- const resizeObserver = new ResizeObserver($b8hua$catchify1(records => setLookItemHeight(records.at(-1).contentRect.height)));
1843
+ const resizeObserver = new ResizeObserver($b8hua$catchify(records => setLookItemHeight(records.at(-1).contentRect.height)));
1816
1844
  resizeObserver.observe(el);
1817
1845
  $b8hua$onCleanup(() => resizeObserver.disconnect());
1818
1846
  })
@@ -1831,7 +1859,7 @@ function $275d06a183ca0a29$var$scrollingFunctionForChrome(element, targetScrollY
1831
1859
  let start;
1832
1860
  const startingY = element.scrollTop;
1833
1861
  const diff = targetScrollY - startingY;
1834
- const step = $b8hua$catchify1(timestamp => {
1862
+ const step = $b8hua$catchify(timestamp => {
1835
1863
  if (!start) start = timestamp;
1836
1864
  // Elapsed milliseconds since start of scrolling.
1837
1865
  const time = timestamp - start;
@@ -1863,7 +1891,7 @@ function $22dd375b476673e2$export$44809a8a3e867e30(_ref) {
1863
1891
  const index = $1e69163caedaab4e$export$e3faf4d95300054f();
1864
1892
  const [containerWidth_, setContainerWidth] = $b8hua$createSignal();
1865
1893
  const [containerHeight_, setContainerHeight] = $b8hua$createSignal();
1866
- const clickHandler = $b8hua$catchify1(_ref2 => {
1894
+ const clickHandler = $b8hua$catchify(_ref2 => {
1867
1895
  let {
1868
1896
  target: target
1869
1897
  } = _ref2;
@@ -1993,7 +2021,7 @@ class $ac571292d606f30b$export$7e1297a3a19f10d8 {
1993
2021
  * @param is_replace_ if you want to replace the current URL in history instead of pushing a new one
1994
2022
  * @param listing_id_ If you are navigating to a category and know the listing_id of, please provide it. This is for making a better devEx in js-ui
1995
2023
  */
1996
- go_to_: $b8hua$catchify1(async _ref => {
2024
+ go_to_: $b8hua$catchify(async _ref => {
1997
2025
  let {
1998
2026
  new_url_: raw_new_url,
1999
2027
  event_: event_,
@@ -2107,7 +2135,7 @@ function $e3efeb558d952696$export$7da560f849543dff(_ref) {
2107
2135
  get children() {
2108
2136
  return $b8hua$ssr($e3efeb558d952696$var$_tmpl$2, $b8hua$ssrHydrationKey(), $b8hua$escape(title()));
2109
2137
  }
2110
- }), $b8hua$ssr($e3efeb558d952696$var$_tmpl$3, $b8hua$ssrHydrationKey(), $b8hua$escape($ca55612a53dbbdd2$export$a2cc176055f8f08()), $b8hua$escape($b8hua$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $b8hua$mergeProps1({
2138
+ }), $b8hua$ssr($e3efeb558d952696$var$_tmpl$3, $b8hua$ssrHydrationKey(), $b8hua$escape($ca55612a53dbbdd2$export$a2cc176055f8f08()), $b8hua$escape($b8hua$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $b8hua$mergeProps({
2111
2139
  get rows() {
2112
2140
  return rows_object_();
2113
2141
  },
@@ -2238,7 +2266,7 @@ function $bb34cd283e904784$export$2c9f9bf2092486aa(props) {
2238
2266
  return $b8hua$createComponent((0, $39ddb986053fb759$export$d41d19e89346fa2), sharedOptions);
2239
2267
  },
2240
2268
  get children() {
2241
- return $b8hua$createComponent((0, $e3efeb558d952696$export$7da560f849543dff), $b8hua$mergeProps1(sharedOptions, {
2269
+ return $b8hua$createComponent((0, $e3efeb558d952696$export$7da560f849543dff), $b8hua$mergeProps(sharedOptions, {
2242
2270
  view_more_button_: () => {
2243
2271
  var _props$gridOptions_;
2244
2272
  return (_props$gridOptions_ = props.gridOptions_) === null || _props$gridOptions_ === void 0 ? void 0 : _props$gridOptions_.view_more_button;
@@ -2297,7 +2325,7 @@ async function $bb34cd283e904784$var$runDisplayTransformersForLooks(baseData, li
2297
2325
  }) : displaysToTransform;
2298
2326
  const transformedListings = await transformedListingsPromise;
2299
2327
  const transformedDisplayById = Object.fromEntries(transformedProducts.map(display => [$6a4c7ed6d005505c$export$548d053aba053d79(display), display]));
2300
- return transformedListings.map(listing => $b8hua$mergeProps(listing, {
2328
+ return transformedListings.map(listing => $b8hua$mergeProps1(listing, {
2301
2329
  // use mergeProps because in preview browser we add getters in this object, that would be called too early otherwise
2302
2330
  displays: (displayIdsPerListingId[listing.listing_id] || []).map(displayId => transformedDisplayById[displayId]).filter(v => v)
2303
2331
  }));
@@ -2536,7 +2564,7 @@ function $f7414b949aeabc90$export$62f101a8aa597bf8(_ref) {
2536
2564
  // don't wait if it's the first request
2537
2565
  write_current_instant_query(value);
2538
2566
  clearTimeout(timeout);
2539
- timeout = setTimeout($b8hua$catchify1(() => write_current_instant_query(value)), 250);
2567
+ timeout = setTimeout($b8hua$catchify(() => write_current_instant_query(value)), 250);
2540
2568
  });
2541
2569
  const [search_results] = $b8hua$createResource($b8hua$createMemo(() => ({
2542
2570
  // <-- key order important, see comment below
@@ -2544,7 +2572,7 @@ function $f7414b949aeabc90$export$62f101a8aa597bf8(_ref) {
2544
2572
  market: market_(),
2545
2573
  locale: i18n_.backend_locale_(),
2546
2574
  query: read_current_instant_query()
2547
- })), $b8hua$catchify1(async variable_data => {
2575
+ })), $b8hua$catchify(async variable_data => {
2548
2576
  return depict_api_.query({
2549
2577
  // here it is (unfortunately) important that the keys in the object are in the same order as in SearchPage.tsx, because when JSON-encoding them to compare for caching the strings will be different otherwise
2550
2578
  limit: $b8hua$untrack(has_sort_or_filters_) ? max_cards : min_products_to_fetch_,
@@ -2660,7 +2688,7 @@ function $a09bb7c652acf957$export$3340fdd8259bd4fd(_ref) {
2660
2688
  if (process.env.GA === "false") return;
2661
2689
  let debounce_timeout;
2662
2690
  const stop_timeout = () => clearTimeout(debounce_timeout);
2663
- const send_to_ga = $b8hua$catchify1(() => {
2691
+ const send_to_ga = $b8hua$catchify(() => {
2664
2692
  const fake_url = new URL(location.href);
2665
2693
  const {
2666
2694
  searchParams: searchParams
@@ -2673,12 +2701,12 @@ function $a09bb7c652acf957$export$3340fdd8259bd4fd(_ref) {
2673
2701
  $b8hua$onCleanup(() => {
2674
2702
  setTimeout(
2675
2703
  // do it next event loop because search_field_value_ is wrong this one and search_query might be too because we want the old value to be put into the history entry and a framework like NextJS might take some time to navigate
2676
- $b8hua$catchify1(() => {
2704
+ $b8hua$catchify(() => {
2677
2705
  if ($b8hua$untrack(get_search_query_) === $b8hua$untrack(get_search_field_value_)) stop_timeout();
2678
2706
  }));
2679
2707
  });
2680
2708
  let first_call = true;
2681
- $b8hua$createEffect($b8hua$catchify1(() => {
2709
+ $b8hua$createEffect($b8hua$catchify(() => {
2682
2710
  get_search_field_value_();
2683
2711
  if (first_call) {
2684
2712
  // we only want to do stuff when it changes
@@ -2698,7 +2726,7 @@ function $e8776b492383c292$export$91c3b6774e8be0f5(_ref) {
2698
2726
  const [get_current_href, set_current_href] = $b8hua$createSignal(location.href);
2699
2727
  const [exit_iterable, exitable_iterable] = $b8hua$make_asyncIterable_exiter((0, $b8hua$href_change_ipns));
2700
2728
  $b8hua$onCleanup(exit_iterable);
2701
- $b8hua$catchify1(async () => {
2729
+ $b8hua$catchify(async () => {
2702
2730
  for await (const href of exitable_iterable)
2703
2731
  // use native links so ppl can cmdclick/right click and open in new tab and see target URL
2704
2732
  set_current_href(href);
@@ -2717,7 +2745,7 @@ function $6d95ef50ee01d5a1$export$5d2caaa6b530761c() {
2717
2745
  var $9783d437ad61594c$var$_tmpl$ = '<path d="M11.669 10.531l9.156-9.156a.78.78 0 0 0 .237-.569c0-.221-.079-.412-.237-.569A.8.8 0 0 0 20.24 0a.77.77 0 0 0-.569.237l-9.14 9.14-9.14-9.14A.79.79 0 0 0 .807 0a.77.77 0 0 0-.569.237A.78.78 0 0 0 0 .807a.77.77 0 0 0 .237.569l9.156 9.156-9.156 9.14c-.159.157-.237.349-.237.569s.079.412.237.569c.085.085.174.148.268.19a1.095 1.095 0 0 0 .316.048.894.894 0 0 0 .285-.048.84.84 0 0 0 .285-.19l9.139-9.14 9.14 9.14a.894.894 0 0 0 .268.19 1.049 1.049 0 0 0 .301.048.941.941 0 0 0 .301-.048.84.84 0 0 0 .285-.19.78.78 0 0 0 .237-.569c0-.221-.079-.412-.237-.569z"></path>';
2718
2746
  function $9783d437ad61594c$export$3b621d86b1566b2() {
2719
2747
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2720
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
2748
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
2721
2749
  xmlns: "http://www.w3.org/2000/svg",
2722
2750
  width: "21.064",
2723
2751
  height: "21.064",
@@ -2823,7 +2851,7 @@ function $02b6641aa50ce528$export$ba17c5b7e6dda39f(_ref) {
2823
2851
  var $ef0f18a578b32578$var$_tmpl$ = '<path d="M19.811 20.174l-6.234-6.809a7.96 7.96 0 0 0 .923-1.179c.274-.424.502-.865.687-1.323a8.04 8.04 0 0 0 .42-1.436 7.88 7.88 0 0 0 .144-1.507c0-.526-.051-1.042-.154-1.548-.096-.506-.243-.995-.441-1.466s-.441-.919-.728-1.343a8.28 8.28 0 0 0-.984-1.21 7.86 7.86 0 0 0-1.2-.984A7.56 7.56 0 0 0 10.89.651C10.418.453 9.929.302 9.423.2S8.401.046 7.875.046 6.833.097 6.327.2 5.332.453 4.86.651a7.56 7.56 0 0 0-1.354.718c-.431.287-.831.615-1.2.984a8.28 8.28 0 0 0-.984 1.21 7.73 7.73 0 0 0-.728 1.343c-.198.472-.349.96-.451 1.466A8.31 8.31 0 0 0 0 7.921a8.31 8.31 0 0 0 .144 1.548c.103.506.253.995.451 1.466a8.08 8.08 0 0 0 .728 1.354 7.86 7.86 0 0 0 .984 1.2 7.54 7.54 0 0 0 1.2.995c.431.287.882.53 1.354.728.472.191.96.338 1.466.441a8.31 8.31 0 0 0 1.548.144c.451 0 .896-.038 1.333-.113a7.83 7.83 0 0 0 1.282-.328 7.55 7.55 0 0 0 1.2-.533 8.08 8.08 0 0 0 1.107-.749l6.245 6.809a.45.45 0 0 0 .174.123.55.55 0 0 0 .205.041.61.61 0 0 0 .195-.031c.061-.021.116-.055.164-.102.109-.096.164-.219.164-.369.007-.144-.038-.267-.133-.369zM1.046 7.921c0-.937.178-1.818.533-2.646.362-.834.851-1.559 1.466-2.174.622-.615 1.347-1.101 2.174-1.456.827-.362 1.712-.543 2.656-.543s1.829.181 2.656.543c.827.355 1.548.841 2.164 1.456.622.615 1.111 1.34 1.466 2.174a6.52 6.52 0 0 1 .543 2.646c0 .943-.181 1.829-.543 2.656a6.89 6.89 0 0 1-1.466 2.174c-.615.615-1.336 1.104-2.164 1.466-.827.356-1.712.533-2.656.533s-1.829-.178-2.656-.533c-.827-.362-1.552-.851-2.174-1.466-.615-.622-1.104-1.347-1.466-2.174-.355-.827-.533-1.712-.533-2.656z"></path>';
2824
2852
  function $ef0f18a578b32578$export$82eafebb825fc23f() {
2825
2853
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2826
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
2854
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
2827
2855
  xmlns: "http://www.w3.org/2000/svg",
2828
2856
  width: "20",
2829
2857
  height: "22",
@@ -2833,7 +2861,7 @@ function $ef0f18a578b32578$export$82eafebb825fc23f() {
2833
2861
  var $3c5e15c6ee4227a9$var$_tmpl$ = '<path d="M56 26.455a13.71 13.71 0 0 0-9.578 3.967A13.71 13.71 0 0 0 42.455 40v176a13.71 13.71 0 0 0 3.967 9.578A13.71 13.71 0 0 0 56 229.545h144A13.71 13.71 0 0 0 213.545 216V88a2.456 2.456 0 0 1 0-.002c.001-1.452-.597-2.895-1.623-3.922l-55.998-55.998a5.61 5.61 0 0 0-3.922-1.623 2.456 2.456 0 0 1-.002 0zm0 11.09h88A2.456 2.456 0 0 1 146.455 40v48c0 2.903 2.642 5.545 5.545 5.545h48A2.456 2.456 0 0 1 202.455 96v120a2.456 2.456 0 0 1-2.455 2.455H56A2.456 2.456 0 0 1 53.545 216V40A2.456 2.456 0 0 1 56 37.545zm103.061 11.498a2.456 2.456 0 0 1 2.676.531l28.689 28.689a2.456 2.456 0 0 1-1.736 4.191H160A2.456 2.456 0 0 1 157.545 80V51.311a2.456 2.456 0 0 1 1.516-2.268zM96 130.455c-2.903 0-5.545 2.642-5.545 5.545s2.642 5.545 5.545 5.545h64c2.903 0 5.545-2.642 5.545-5.545s-2.642-5.545-5.545-5.545zm0 32c-2.903 0-5.545 2.642-5.545 5.545s2.642 5.545 5.545 5.545h64c2.903 0 5.545-2.642 5.545-5.545s-2.642-5.545-5.545-5.545z"></path>';
2834
2862
  function $3c5e15c6ee4227a9$export$605674723bcc715c() {
2835
2863
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2836
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
2864
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
2837
2865
  xmlns: "http://www.w3.org/2000/svg",
2838
2866
  width: "32",
2839
2867
  height: "32",
@@ -3112,7 +3140,7 @@ function $75e33704f2a83029$var$actual_navigation_working_on_fake_data(_ref2) {
3112
3140
  if (!$b8hua$untrack(() => read_updating_blocked())) previous_value = sfv;
3113
3141
  });
3114
3142
  const owner = $b8hua$getOwner();
3115
- const handler = $b8hua$catchify1(_ref3 => {
3143
+ const handler = $b8hua$catchify(_ref3 => {
3116
3144
  let {
3117
3145
  keyCode: keyCode
3118
3146
  } = _ref3;
@@ -3179,7 +3207,7 @@ function $75e33704f2a83029$var$actual_navigation_working_on_fake_data(_ref2) {
3179
3207
  const el = element_();
3180
3208
  if (!el) return;
3181
3209
  el.addEventListener("keyup", handler);
3182
- $b8hua$onCleanup($b8hua$catchify1(() => el.removeEventListener("keyup", handler)));
3210
+ $b8hua$onCleanup($b8hua$catchify(() => el.removeEventListener("keyup", handler)));
3183
3211
  });
3184
3212
  }
3185
3213
  function $c4dee1ef44de29ca$export$af0124069c150252(_ref) {
@@ -3392,7 +3420,7 @@ let $c3820807ac1e6fd7$export$44dad306455dddf;
3392
3420
 
3393
3421
  function $fc830a7ee59416ef$export$ebdc3711f7e02ccd(what_to_watch) {
3394
3422
  const [width, setWidth] = $b8hua$createSignal();
3395
- const resizeObserver = new ResizeObserver($b8hua$catchify1(records => {
3423
+ const resizeObserver = new ResizeObserver($b8hua$catchify(records => {
3396
3424
  for (let j = 0; j < records.length; j++) {
3397
3425
  var _records$j$borderBoxS, _records$j$borderBoxS2, _records$j$borderBoxS3;
3398
3426
  const width = (_records$j$borderBoxS = (_records$j$borderBoxS2 = records[j].borderBoxSize) === null || _records$j$borderBoxS2 === void 0 ? void 0 : (_records$j$borderBoxS3 = _records$j$borderBoxS2[0]) === null || _records$j$borderBoxS3 === void 0 ? void 0 : _records$j$borderBoxS3.inlineSize) !== null && _records$j$borderBoxS !== void 0 ? _records$j$borderBoxS : what_to_watch.getBoundingClientRect().width;
@@ -3405,7 +3433,7 @@ function $fc830a7ee59416ef$export$ebdc3711f7e02ccd(what_to_watch) {
3405
3433
  let {
3406
3434
  element: element
3407
3435
  } = _ref;
3408
- return requestAnimationFrame($b8hua$catchify1(() => {
3436
+ return requestAnimationFrame($b8hua$catchify(() => {
3409
3437
  const current_size = what_to_watch.getBoundingClientRect().width;
3410
3438
  if (current_size)
3411
3439
  // If element has size, set signal to that. ResizeObserver only triggers when the content is visible in some cases, but it might already have a size. This reduces size filter expanding animation jank in chrome.
@@ -3422,7 +3450,7 @@ function $fc830a7ee59416ef$export$ebdc3711f7e02ccd(what_to_watch) {
3422
3450
  var $83c36ed4520d0335$var$_tmpl$ = '<path fill-rule="evenodd" d="M9.563 3.438c-3.107 0-5.625 2.518-5.625 5.625s2.518 5.625 5.625 5.625 5.625-2.518 5.625-5.625-2.518-5.625-5.625-5.625zm-7.5 5.625a7.5 7.5 0 1 1 15 0c0 1.733-.588 3.329-1.575 4.599l3.176 3.176a.94.94 0 0 1 0 1.326.94.94 0 0 1-1.326 0l-3.176-3.176a7.47 7.47 0 0 1-4.599 1.575 7.5 7.5 0 0 1-7.5-7.5z" fill="#0f0f0f"></path>';
3423
3451
  function $83c36ed4520d0335$export$f7658c347b037c3f() {
3424
3452
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
3425
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
3453
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
3426
3454
  xmlns: "http://www.w3.org/2000/svg",
3427
3455
  width: "21",
3428
3456
  height: "20",
@@ -3452,7 +3480,7 @@ function $584c06c09cf4609d$export$b94867ecbd698f21(_ref) {
3452
3480
  let input_element;
3453
3481
  // This is the div where we recommend (and ourselves do) attach the event listener to that opens the search modal.
3454
3482
  let field_div;
3455
- $b8hua$createEffect($b8hua$catchify1(async () => {
3483
+ $b8hua$createEffect($b8hua$catchify(async () => {
3456
3484
  if (disabled_) return;
3457
3485
  // we aren't in DOM yet unfortunately, wouldn't even be with onMount
3458
3486
  await (0, $b8hua$observer).wait_for_element(input_element);
@@ -3470,7 +3498,7 @@ function $584c06c09cf4609d$export$b94867ecbd698f21(_ref) {
3470
3498
  const BackButton = () => $b8hua$createComponent((0, $b8hua$Show), {
3471
3499
  when: on_back_,
3472
3500
  get children() {
3473
- return $b8hua$ssrElement("button", $b8hua$mergeProps1({
3501
+ return $b8hua$ssrElement("button", $b8hua$mergeProps({
3474
3502
  "class": "back",
3475
3503
  type: "button",
3476
3504
  get ["aria-label"]() {
@@ -3484,7 +3512,7 @@ function $584c06c09cf4609d$export$b94867ecbd698f21(_ref) {
3484
3512
  }), () => isNewModal ? $b8hua$escape($b8hua$createComponent((0, $9783d437ad61594c$export$3b621d86b1566b2), {})) : $b8hua$escape($b8hua$createComponent(BackIcon_, {})), true);
3485
3513
  }
3486
3514
  });
3487
- const ClearButton = () => $b8hua$ssrElement("button", $b8hua$mergeProps1({
3515
+ const ClearButton = () => $b8hua$ssrElement("button", $b8hua$mergeProps({
3488
3516
  type: "button",
3489
3517
  get ["class"]() {
3490
3518
  return "clear ".concat(searchFieldEmpty() ? "empty" : "");
@@ -3532,7 +3560,7 @@ function $e56d241d0f33d459$export$fe334901e8bebd57() {
3532
3560
  offset: 0
3533
3561
  }, 1);
3534
3562
  animation.pause();
3535
- const fn = $b8hua$catchify1(animation.play.bind(animation));
3563
+ const fn = $b8hua$catchify(animation.play.bind(animation));
3536
3564
  cleanup_fns.push(fn);
3537
3565
  $b8hua$onCleanup(fn);
3538
3566
  } catch (e) {
@@ -3543,7 +3571,7 @@ function $e56d241d0f33d459$export$fe334901e8bebd57() {
3543
3571
  const style = element.style;
3544
3572
  const original_value = style.overflow;
3545
3573
  style.overflow = "hidden";
3546
- const fn = $b8hua$catchify1(() => style.overflow = original_value);
3574
+ const fn = $b8hua$catchify(() => style.overflow = original_value);
3547
3575
  cleanup_fns.push(fn);
3548
3576
  $b8hua$onCleanup(fn);
3549
3577
  }
@@ -3566,8 +3594,8 @@ function $a82a41ab7188eda2$export$93d9bfd0c9c1a5b8(close_modal, search_query_url
3566
3594
  let set_initial_values = false;
3567
3595
  let old_pathname;
3568
3596
  let old_param_value;
3569
- $b8hua$onCleanup($b8hua$catchify1(exit_iterable));
3570
- $b8hua$catchify1(async () => {
3597
+ $b8hua$onCleanup($b8hua$catchify(exit_iterable));
3598
+ $b8hua$catchify(async () => {
3571
3599
  for await (const href of exitable_iterable) {
3572
3600
  const u_o = new URL(href);
3573
3601
  const new_pathname = u_o.pathname;
@@ -3639,7 +3667,7 @@ function $40411f2ec772c376$var$RawClassicSearchModal(_ref) {
3639
3667
  } = alignmentSignals_ || {};
3640
3668
  const [bodyAlignmentStyle] = bodyAlignmentSignal;
3641
3669
  const [get_modal_search_results, set_modal_search_results_] = $b8hua$createSignal();
3642
- const close_on_escape_handler = $b8hua$catchify1(_ref2 => {
3670
+ const close_on_escape_handler = $b8hua$catchify(_ref2 => {
3643
3671
  let {
3644
3672
  key: key
3645
3673
  } = _ref2;
@@ -3666,7 +3694,7 @@ function $40411f2ec772c376$var$RawClassicSearchModal(_ref) {
3666
3694
  if (disable_scrolling_) $e56d241d0f33d459$export$fe334901e8bebd57();
3667
3695
  $a82a41ab7188eda2$export$93d9bfd0c9c1a5b8(close_modal_, search_query_url_param_name_);
3668
3696
  window.addEventListener("keydown", close_on_escape_handler);
3669
- $b8hua$onCleanup($b8hua$catchify1(() => window.removeEventListener("keydown", close_on_escape_handler)));
3697
+ $b8hua$onCleanup($b8hua$catchify(() => window.removeEventListener("keydown", close_on_escape_handler)));
3670
3698
  if (closing_animation_) register_closing_animation_(closing_animation_);
3671
3699
  $a09bb7c652acf957$export$3340fdd8259bd4fd({
3672
3700
  get_search_field_value_: get_search_field_value_,
@@ -4053,7 +4081,7 @@ function $26db6925469636a4$export$67152d26d4f56ee8(_ref) {
4053
4081
  var _listing_;
4054
4082
  return (_listing_ = listing_()) === null || _listing_ === void 0 ? void 0 : _listing_.page_url;
4055
4083
  }); // <- could be made reactive getter created in displayTransformers, read it in memo here since it might create computations (for example in the preview-brower), and there's no owner in the onClick handler
4056
- const LinkToListing = props => $b8hua$ssrElement("a", $b8hua$mergeProps1(props, {
4084
+ const LinkToListing = props => $b8hua$ssrElement("a", $b8hua$mergeProps(props, {
4057
4085
  get href() {
4058
4086
  return href();
4059
4087
  }
@@ -4364,7 +4392,7 @@ function $4acc866f8fdfc002$export$af1fb307bbba2417(_ref) {
4364
4392
  $b8hua$createComputed($b8hua$on(search_field_value_[0], () => !suggestions_updating_blocked() && set_selected_index(undefined), {
4365
4393
  defer: true
4366
4394
  })); // reset autocomplete position if query changes
4367
- return [$b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps1(sharedSuggestionProps, {
4395
+ return [$b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps(sharedSuggestionProps, {
4368
4396
  get title_() {
4369
4397
  return i18n_.popular_;
4370
4398
  },
@@ -4374,7 +4402,7 @@ function $4acc866f8fdfc002$export$af1fb307bbba2417(_ref) {
4374
4402
  return itemIndexes_.suggestionsIndex_;
4375
4403
  },
4376
4404
  showPlaceholders_: () => showPlaceholders() || noResults_() && !noResultsPopularSuggestions.latest
4377
- })), $b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps1(sharedSuggestionProps, {
4405
+ })), $b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps(sharedSuggestionProps, {
4378
4406
  get title_() {
4379
4407
  return i18n_.previous_;
4380
4408
  },
@@ -4385,7 +4413,7 @@ function $4acc866f8fdfc002$export$af1fb307bbba2417(_ref) {
4385
4413
  },
4386
4414
  extraTitleRowElements_: () => $b8hua$ssr($4acc866f8fdfc002$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(i18n_.clear_all_from_filter_crumbs_())),
4387
4415
  showPlaceholders_: () => false
4388
- })), $b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps1(sharedSuggestionProps, {
4416
+ })), $b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps(sharedSuggestionProps, {
4389
4417
  get title_() {
4390
4418
  return i18n_.content_;
4391
4419
  },
@@ -4525,7 +4553,7 @@ function $06fcd2a345efd24d$var$RawSearchModalV2(_ref) {
4525
4553
  const random_classname_body = $b8hua$make_random_classname();
4526
4554
  const backdropRandomClassname = $b8hua$make_random_classname();
4527
4555
  const [get_modal_search_results_, set_modal_search_results_] = $b8hua$createSignal();
4528
- const close_on_escape_handler = $b8hua$catchify1(evt => {
4556
+ const close_on_escape_handler = $b8hua$catchify(evt => {
4529
4557
  if (evt.key === "Escape") {
4530
4558
  evt.preventDefault(); // Prevent the browser from closing/cancelling the modal so our animations have time to run
4531
4559
  close_modal_();
@@ -4628,7 +4656,7 @@ function $06fcd2a345efd24d$var$RawSearchModalV2(_ref) {
4628
4656
  $b8hua$createEffect($b8hua$on(get_search_field_value_, () => {
4629
4657
  setShowStaleListingSuggestions(true);
4630
4658
  clearTimeout(listingSuggestionsDebounceTimeout);
4631
- listingSuggestionsDebounceTimeout = setTimeout($b8hua$catchify1(() => setShowStaleListingSuggestions(false)), 350);
4659
+ listingSuggestionsDebounceTimeout = setTimeout($b8hua$catchify(() => setShowStaleListingSuggestions(false)), 350);
4632
4660
  }, {
4633
4661
  defer: true
4634
4662
  }));
@@ -4766,7 +4794,7 @@ function $06fcd2a345efd24d$var$RawSearchModalV2(_ref) {
4766
4794
  }
4767
4795
  });
4768
4796
  if (setSearchFieldOuterWidth_) {
4769
- const resizeObserver = new ResizeObserver($b8hua$catchify1(records => setSearchFieldOuterWidth_(records.at(-1).contentRect.width)));
4797
+ const resizeObserver = new ResizeObserver($b8hua$catchify(records => setSearchFieldOuterWidth_(records.at(-1).contentRect.width)));
4770
4798
  resizeObserver.observe(search_field);
4771
4799
  $b8hua$onCleanup(() => resizeObserver.disconnect());
4772
4800
  }
@@ -4800,7 +4828,7 @@ function $6a439680ae7e9ba3$export$b2539bed5023c21c(props) {
4800
4828
  return $b8hua$createComponent($6a439680ae7e9ba3$var$TabsContext.Provider, {
4801
4829
  value: new (0, $b8hua$ListenableSet)(),
4802
4830
  get children() {
4803
- return $b8hua$createComponent($6a439680ae7e9ba3$var$ActualTabs, $b8hua$mergeProps1(props, {
4831
+ return $b8hua$createComponent($6a439680ae7e9ba3$var$ActualTabs, $b8hua$mergeProps(props, {
4804
4832
  get children() {
4805
4833
  return props.children;
4806
4834
  }
@@ -4816,7 +4844,7 @@ function $6a439680ae7e9ba3$var$ActualTabs(props) {
4816
4844
  });
4817
4845
  const isSelected = $b8hua$createSelector(currentlySelected);
4818
4846
  const owner = $b8hua$getOwner();
4819
- const updateTabsSignal = $b8hua$catchify(() => $b8hua$runWithOwner(owner, () => setTabsReactive([...ourTabsSet])));
4847
+ const updateTabsSignal = $b8hua$catchify1(() => $b8hua$runWithOwner(owner, () => setTabsReactive([...ourTabsSet])));
4820
4848
  const ourTabsSet = $6a439680ae7e9ba3$var$useTabs();
4821
4849
  const location = $b8hua$use_href_accessor1();
4822
4850
  const linkWithChangedHash = hash => {
@@ -4830,7 +4858,7 @@ function $6a439680ae7e9ba3$var$ActualTabs(props) {
4830
4858
  },
4831
4859
  children: item => {
4832
4860
  const weSelected = $b8hua$createMemo(() => isSelected(item().id));
4833
- return $b8hua$createComponent((0, $b8hua$Dynamic), $b8hua$mergeProps1({
4861
+ return $b8hua$createComponent((0, $b8hua$Dynamic), $b8hua$mergeProps({
4834
4862
  get component() {
4835
4863
  return props.AnchorComponent;
4836
4864
  },
@@ -4913,7 +4941,7 @@ function $6a439680ae7e9ba3$export$3e41faf802a29e71(props) {
4913
4941
  if (!currentTabs) throw new Error("Tab must be a child of Tabs");
4914
4942
  const id = $b8hua$createUniqueId();
4915
4943
  const ourSet = currentTabs;
4916
- const extendedProps = $b8hua$mergeProps({
4944
+ const extendedProps = $b8hua$mergeProps1({
4917
4945
  id: id
4918
4946
  }, props);
4919
4947
  ourSet.add(extendedProps);
@@ -4923,7 +4951,7 @@ function $6a439680ae7e9ba3$export$3e41faf802a29e71(props) {
4923
4951
  async function $d5f1e6a0f9117286$export$79b1565500412d9b(search_modal, modal_fn_opts, parent) {
4924
4952
  const body = parent || document.body || (await (0, $b8hua$observer).wait_for_element("body"));
4925
4953
  let dispose_and_remove;
4926
- const open_modal_ = $b8hua$catchify1(async function () {
4954
+ const open_modal_ = $b8hua$catchify(async function () {
4927
4955
  let extra_options_for_modal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4928
4956
  let on_dispose = arguments.length > 1 ? arguments[1] : undefined;
4929
4957
  // Below await is very intentional,
@@ -4958,7 +4986,7 @@ async function $d5f1e6a0f9117286$export$79b1565500412d9b(search_modal, modal_fn_
4958
4986
  actually_close();else if (!animation_started && closing_animation) {
4959
4987
  var _catchify;
4960
4988
  animation_started = +new Date();
4961
- (_catchify = $b8hua$catchify1(closing_animation)()) === null || _catchify === void 0 || _catchify.then($b8hua$catchify1(actually_close));
4989
+ (_catchify = $b8hua$catchify(closing_animation)()) === null || _catchify === void 0 || _catchify.then($b8hua$catchify(actually_close));
4962
4990
  } else actually_close();
4963
4991
  };
4964
4992
  return search_modal({
@@ -4971,7 +4999,7 @@ async function $d5f1e6a0f9117286$export$79b1565500412d9b(search_modal, modal_fn_
4971
4999
  });
4972
5000
  body.append(...modal_els);
4973
5001
  });
4974
- const close_modal_ = $b8hua$catchify1(() => {
5002
+ const close_modal_ = $b8hua$catchify(() => {
4975
5003
  if (dispose_and_remove) {
4976
5004
  // modal is open
4977
5005
  const dispose_fn = dispose_and_remove;
@@ -4988,7 +5016,7 @@ async function $d5f1e6a0f9117286$export$79b1565500412d9b(search_modal, modal_fn_
4988
5016
  function $972f6bce0f9d61be$export$e183a13865960371(params_to_default_value, router_) {
4989
5017
  const signals = {};
4990
5018
  const entries = Object.entries(params_to_default_value);
4991
- const event_handler = $b8hua$catchify1((what_happened, args) => {
5019
+ const event_handler = $b8hua$catchify((what_happened, args) => {
4992
5020
  // Intentionally always update our signals to the history state to allow external control of SDK state for doing things like https://linear.app/depictai/issue/X-1432/is-this-possible-with-the-depict-sdk
4993
5021
  if (what_happened !== "popstate") return;
4994
5022
  // Had to undo the comment above,but leaving the history. Doing this because discovering why it doesn't work is a deja-vu and I don't want to have to discover it again.
@@ -5020,8 +5048,8 @@ function $972f6bce0f9d61be$export$e183a13865960371(params_to_default_value, rout
5020
5048
  });
5021
5049
  // history_dot_state_to_state needs to update after its signals after url_state does BUT in the same task (might even have to be in the same tick in the microtask queue). If we'd use window.addEventListener("popstate") it would be guaranteed to be too late since each event listener has its own task
5022
5050
  (0, $b8hua$instant_exec_on_suspect_history_change).add(event_handler);
5023
- $b8hua$onCleanup($b8hua$catchify1(() => (0, $b8hua$instant_exec_on_suspect_history_change).delete(event_handler)));
5024
- $b8hua$createEffect($b8hua$catchify1(() => $b8hua$untrack($b8hua$catchify1(() => $972f6bce0f9d61be$var$history_state_change(signals, entries, history.state))))); // we need this to run after reading the initial state from history.state to write the defaults to history.state
5051
+ $b8hua$onCleanup($b8hua$catchify(() => (0, $b8hua$instant_exec_on_suspect_history_change).delete(event_handler)));
5052
+ $b8hua$createEffect($b8hua$catchify(() => $b8hua$untrack($b8hua$catchify(() => $972f6bce0f9d61be$var$history_state_change(signals, entries, history.state))))); // we need this to run after reading the initial state from history.state to write the defaults to history.state
5025
5053
  return signals;
5026
5054
  }
5027
5055
  function $972f6bce0f9d61be$var$history_state_change(signals, entries, state) {
@@ -5159,7 +5187,7 @@ function $0706a7702baafc06$export$6b35356958ae5587(props) {
5159
5187
  // If someone clicks on a product card in the shop the look modal, close the modal the next time the href changes
5160
5188
  for (const item of resolved()) {
5161
5189
  if (!(item instanceof Element)) return;
5162
- item.addEventListener("click", $b8hua$catchify1(() =>
5190
+ item.addEventListener("click", $b8hua$catchify(() =>
5163
5191
  // run with modal owner so we don't do stuff after the modal closes
5164
5192
  // can't have the owner of the product card as that gets disposed if the productId changes which might be too early (before location.href has changed)
5165
5193
  $b8hua$runWithOwner(props.modalOwner_, () => $b8hua$createEffect($b8hua$on(hrefWithoutHash, props.actually_close_modal_, {
@@ -5349,7 +5377,7 @@ function $6b0fd8fd20df8ccf$var$ActualShopTheLookButton(props) {
5349
5377
  }, true);
5350
5378
  $b8hua$createEffect(() => button.style.display = displayStyleValue()); // Set our attributes like this, so we allow total control over the button from the outside via buttonAttributes
5351
5379
  $b8hua$createEffect(() => !hasAnythingToShow() && closeModal()); // close modal if we ever get into the state of having it open and not having anything to show
5352
- $6b0fd8fd20df8ccf$var$modalProps = $b8hua$mergeProps(partForModal, {
5380
+ $6b0fd8fd20df8ccf$var$modalProps = $b8hua$mergeProps1(partForModal, {
5353
5381
  products_to_shop_: products_to_shop_
5354
5382
  });
5355
5383
  button.addEventListener("click", openModal);
@@ -5380,7 +5408,7 @@ function $6b0fd8fd20df8ccf$var$actualSetupModal() {
5380
5408
  (0, $68e6625c8d51f847$export$3064e1e8c6513da3).add(history_key);
5381
5409
  const actually_close_modal_ = () => set_history_value(false);
5382
5410
  const owner = $b8hua$getOwner();
5383
- $b8hua$catchify1(async () => {
5411
+ $b8hua$catchify(async () => {
5384
5412
  const {
5385
5413
  open_modal_: open_modal_,
5386
5414
  close_modal_: close_modal_
@@ -5455,15 +5483,15 @@ function $ad371564683947ab$export$6c6d7a51fa9aa15d(props) {
5455
5483
  $b8hua$insert(details_, [summary_, $b8hua$createComponent(ExpandingContainer, {
5456
5484
  children: children
5457
5485
  })], null);
5458
- if (!$b8hua$untrack(is_in_dom)) (0, $b8hua$observer).wait_for_element(details_).then($b8hua$catchify1(() => set_is_in_dom(true)));
5459
- $b8hua$createEffect($b8hua$catchify1(async () => {
5486
+ if (!$b8hua$untrack(is_in_dom)) (0, $b8hua$observer).wait_for_element(details_).then($b8hua$catchify(() => set_is_in_dom(true)));
5487
+ $b8hua$createEffect($b8hua$catchify(async () => {
5460
5488
  const is_open = is_open_memo();
5461
5489
  if (!is_in_dom())
5462
5490
  // wait with setting state until we're in DOM, animation won't work otherwise
5463
5491
  return;
5464
5492
  if (dont_animate_if_instant_open_ && fresh_component && !timeout_started) {
5465
5493
  timeout_started = true;
5466
- setTimeout($b8hua$catchify1(() => fresh_component = false));
5494
+ setTimeout($b8hua$catchify(() => fresh_component = false));
5467
5495
  }
5468
5496
  if (is_open) {
5469
5497
  details_.open = true; // open up the toggle so the animation can happen
@@ -5471,10 +5499,10 @@ function $ad371564683947ab$export$6c6d7a51fa9aa15d(props) {
5471
5499
  await expand(0, do_duration);
5472
5500
  } else {
5473
5501
  const animation = await collapse();
5474
- animation === null || animation === void 0 || animation.addEventListener("finish", $b8hua$catchify1(() => details_.open = false));
5502
+ animation === null || animation === void 0 || animation.addEventListener("finish", $b8hua$catchify(() => details_.open = false));
5475
5503
  }
5476
5504
  }));
5477
- details_.addEventListener("toggle", $b8hua$catchify1(() => {
5505
+ details_.addEventListener("toggle", $b8hua$catchify(() => {
5478
5506
  const {
5479
5507
  open: open
5480
5508
  } = details_;
@@ -5484,11 +5512,11 @@ function $ad371564683947ab$export$6c6d7a51fa9aa15d(props) {
5484
5512
  }) // in case someone somehow toggles it without us intercepting it at least follow suit
5485
5513
  );
5486
5514
 
5487
- summary_.addEventListener("click", $b8hua$catchify1(ev => {
5515
+ summary_.addEventListener("click", $b8hua$catchify(ev => {
5488
5516
  ev.preventDefault();
5489
5517
  toggle();
5490
5518
  }));
5491
- summary_.addEventListener("keydown", $b8hua$catchify1(ev => {
5519
+ summary_.addEventListener("keydown", $b8hua$catchify(ev => {
5492
5520
  const {
5493
5521
  key: key
5494
5522
  } = ev;
@@ -5725,9 +5753,9 @@ function $4711a82d08d2021b$export$fecbb157621501bd(_ref) {
5725
5753
  });
5726
5754
  const [is_in_dom, set_is_in_dom] = $b8hua$createSignal(document.documentElement.contains(outmost_element));
5727
5755
  const hidden = $b8hua$createMemo(() => get_search_filters_open_() || get_search_sorting_open_());
5728
- if (!$b8hua$untrack(is_in_dom)) (0, $b8hua$observer).wait_for_element(outmost_element).then($b8hua$catchify1(() => set_is_in_dom(true)));
5756
+ if (!$b8hua$untrack(is_in_dom)) (0, $b8hua$observer).wait_for_element(outmost_element).then($b8hua$catchify(() => set_is_in_dom(true)));
5729
5757
  outmost_element.classList.add("selected-filters");
5730
- $b8hua$createEffect($b8hua$catchify1(async () => {
5758
+ $b8hua$createEffect($b8hua$catchify(async () => {
5731
5759
  if (!is_in_dom())
5732
5760
  // wait with setting state until we're in DOM, animation won't work otherwise
5733
5761
  return;
@@ -5760,7 +5788,7 @@ const $19e828709c7723a0$export$48513f6b9f8ce62d = props => {
5760
5788
  };
5761
5789
  var $ff3225aef892a467$var$_tmpl$ = '<path d="M10.173 5.548H5.5V.875c0-.075-.027-.14-.081-.193S5.301.601 5.226.601s-.14.027-.193.081-.081.118-.081.193v4.673H.274c-.075 0-.14.027-.193.081A.27.27 0 0 0 0 5.827c0 .075.027.14.081.193s.118.081.193.081h4.678v4.673c0 .075.027.14.081.193s.118.081.193.081.14-.027.193-.081.081-.118.081-.193V6.101h4.673a.27.27 0 0 0 .199-.081c.054-.054.08-.118.08-.193a.27.27 0 0 0-.279-.279z" fill="#000"></path>';
5762
5790
  function $ff3225aef892a467$export$f21ab0717a89c77f(props) {
5763
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1(props, {
5791
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps(props, {
5764
5792
  xmlns: "http://www.w3.org/2000/svg",
5765
5793
  width: "11",
5766
5794
  height: "12"
@@ -5883,7 +5911,7 @@ function $133484ef10e4e954$export$dd948f91abc3a1c4(_ref) {
5883
5911
  }) : []);
5884
5912
  });
5885
5913
  $b8hua$onCleanup(() => set_view_more_button_below_group_());
5886
- $b8hua$createEffect($b8hua$catchify1(async () => {
5914
+ $b8hua$createEffect($b8hua$catchify(async () => {
5887
5915
  if (!togglable_rest()) {
5888
5916
  await collapse();
5889
5917
  return;
@@ -6009,7 +6037,7 @@ function $1e7465a8ffa97f6c$export$e0d834a0ad870cda(_ref) {
6009
6037
  });
6010
6038
  $b8hua$createComputed(() => {
6011
6039
  clearTimeout(debounce_timeout);
6012
- debounce_timeout = setTimeout($b8hua$catchify1(range => $b8hua$untrack(() => {
6040
+ debounce_timeout = setTimeout($b8hua$catchify(range => $b8hua$untrack(() => {
6013
6041
  const default_data = defaultRange();
6014
6042
  const filter_object = {
6015
6043
  op: filter_().op,
@@ -6592,7 +6620,7 @@ function $0ae614c5c7babb43$export$a32086fa6616eafd(_ref) {
6592
6620
  }) : []);
6593
6621
  });
6594
6622
  $b8hua$onCleanup(() => set_view_more_button_below_group());
6595
- $b8hua$createEffect($b8hua$catchify1(async () => {
6623
+ $b8hua$createEffect($b8hua$catchify(async () => {
6596
6624
  if (!some_top_level_are_hidden()) {
6597
6625
  await collapse();
6598
6626
  return;
@@ -6665,7 +6693,7 @@ function $0ae614c5c7babb43$var$render_stuff(data, existing_filter, i18n_, filter
6665
6693
  return (_value$is_checked_$ = (_value7 = value()) === null || _value7 === void 0 ? void 0 : (_value7$is_checked_ = _value7.is_checked_) === null || _value7$is_checked_ === void 0 ? void 0 : (_value7$is_checked_$ = _value7$is_checked_[0]) === null || _value7$is_checked_$ === void 0 ? void 0 : _value7$is_checked_$.call(_value7$is_checked_)) !== null && _value$is_checked_$ !== void 0 ? _value$is_checked_$ : false;
6666
6694
  },
6667
6695
  input_ref_: input => {
6668
- input.addEventListener("change", $b8hua$catchify1(() => $b8hua$untrack(() => {
6696
+ input.addEventListener("change", $b8hua$catchify(() => $b8hua$untrack(() => {
6669
6697
  var _value9;
6670
6698
  const {
6671
6699
  checked: checked
@@ -6752,7 +6780,7 @@ function $0ae614c5c7babb43$var$batching_filter_state_syncer(props) {
6752
6780
  existing_filter_: existing_filter_
6753
6781
  } = props;
6754
6782
  let sync_queued = false;
6755
- const sync_fn = $b8hua$catchify1(async () => {
6783
+ const sync_fn = $b8hua$catchify(async () => {
6756
6784
  sync_queued = false;
6757
6785
  // if we change, update filter state - next microtask, so that "reactions" to the change can process before we send it off to the API
6758
6786
  const set_filter = existing_filter_();
@@ -6814,13 +6842,13 @@ function $0ae614c5c7babb43$var$create_updating_signal(_ref3) {
6814
6842
  $b8hua$createComputed($b8hua$on(read_checked, trigger_sync_, {
6815
6843
  defer: true
6816
6844
  }));
6817
- $b8hua$createComputed($b8hua$on(read_checked, $b8hua$catchify1(new_value => {
6845
+ $b8hua$createComputed($b8hua$on(read_checked, $b8hua$catchify(new_value => {
6818
6846
  if (updating_blocked) return;
6819
6847
  for (const child of child_objects) child.is_checked_[1](new_value);
6820
6848
  }), {
6821
6849
  defer: true
6822
6850
  }));
6823
- $b8hua$createEffect($b8hua$on(get_child_object_values, $b8hua$catchify1(() => {
6851
+ $b8hua$createEffect($b8hua$on(get_child_object_values, $b8hua$catchify(() => {
6824
6852
  const all_kids_checked = get_child_object_values.every(accessor => accessor());
6825
6853
  if (all_kids_checked === read_checked()) return;
6826
6854
  updating_blocked = true;
@@ -7001,7 +7029,7 @@ const $830ea8efda59884e$export$414f6a19d38e655c = _ref => {
7001
7029
  const MakeButton = attributes => {
7002
7030
  const label = $b8hua$createMemo(() => value().name_ || value().value_ + "");
7003
7031
  const count_zero = $b8hua$createMemo(() => value().count_ === 0);
7004
- return $b8hua$ssrElement("button", $b8hua$mergeProps1(attributes, {
7032
+ return $b8hua$ssrElement("button", $b8hua$mergeProps(attributes, {
7005
7033
  get disabled() {
7006
7034
  return count_zero() && !is_selected();
7007
7035
  },
@@ -7272,7 +7300,7 @@ function $2cb856c297c53e6c$export$82ed4b28ecb67608(_ref) {
7272
7300
  }) : []);
7273
7301
  });
7274
7302
  $b8hua$onCleanup(() => set_view_more_button_below_group_());
7275
- $b8hua$createEffect($b8hua$catchify1(async () => {
7303
+ $b8hua$createEffect($b8hua$catchify(async () => {
7276
7304
  if (!togglable_rest()) {
7277
7305
  await collapse();
7278
7306
  set_having_expanding_in_dom(false); // Once animation has finished, remove expanding from DOM
@@ -7313,7 +7341,7 @@ var $d2988f745661df9c$export$2e2bcd8739ae039 = {
7313
7341
  var $905f44be08b7378e$var$_tmpl$ = '<path d="M4.617 12.738a.48.48 0 0 1-.164-.027c-.051-.023-.094-.055-.129-.098L.125 8.414A.39.39 0 0 1 0 8.117c0-.113.039-.211.125-.293s.18-.125.293-.125.215.043.297.125l3.902 3.902L16.086.262c.082-.082.18-.125.297-.125s.211.043.293.125.125.184.125.301-.043.215-.125.297L4.914 12.613c-.039.043-.086.078-.141.098s-.102.027-.156.027zm0 0"></path>';
7314
7342
  function $905f44be08b7378e$export$f2ca6fc699ca1fb4() {
7315
7343
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7316
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
7344
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
7317
7345
  xmlns: "http://www.w3.org/2000/svg",
7318
7346
  width: "16.8",
7319
7347
  height: "14"
@@ -8018,7 +8046,7 @@ const $702d7656a373973e$export$824dde41348efed1 = /*@__PURE__*/(() => {
8018
8046
 
8019
8047
  const observe_to_signal = (element, setter) => {
8020
8048
  const computed_style = getComputedStyle(element);
8021
- const resize_observer = new ResizeObserver($b8hua$catchify1(() => {
8049
+ const resize_observer = new ResizeObserver($b8hua$catchify(() => {
8022
8050
  setter(element.getBoundingClientRect().width + parseFloat(computed_style.marginLeft) + parseFloat(computed_style.marginRight) + parseFloat(computed_style.borderRightWidth) + parseFloat(computed_style.borderLeftWidth));
8023
8051
  }));
8024
8052
  resize_observer.observe(element);
@@ -8429,7 +8457,7 @@ function $284849364a6ef73a$var$_get_cache_obj_for_endpoint2(endpoint) {
8429
8457
  return (_classPrivateFieldGet4 = $b8hua$babelruntimehelpersclassPrivateFieldGet(this, $284849364a6ef73a$var$_cache_objs))[endpoint] || (_classPrivateFieldGet4[endpoint] = {
8430
8458
  in_progress_: {},
8431
8459
  cache_: {},
8432
- finalization_registry_: $b8hua$babelruntimehelpersclassPrivateFieldGet(this, $284849364a6ef73a$var$_supports_finalization_registry) ? new FinalizationRegistry($b8hua$catchify1(key => {
8460
+ finalization_registry_: $b8hua$babelruntimehelpersclassPrivateFieldGet(this, $284849364a6ef73a$var$_supports_finalization_registry) ? new FinalizationRegistry($b8hua$catchify(key => {
8433
8461
  const our_cache = $b8hua$babelruntimehelpersclassPrivateFieldGet(this, $284849364a6ef73a$var$_cache_objs)[endpoint].cache_;
8434
8462
  $b8hua$dlog1("[Search API]: removing", key, "from", our_cache);
8435
8463
  delete our_cache[key];
@@ -8471,7 +8499,7 @@ async function $284849364a6ef73a$var$_run_url_creator_for_suggest2(merchant, mar
8471
8499
  // Filter out our transformed ancestors
8472
8500
  const transformedAncestors = Object.fromEntries(transformerResult.filter(item => item.is_suggestion === false).map(item => [item.listing_id, item]));
8473
8501
  // Add the now transformed ancestors into the ancestors of the listing suggestions
8474
- const transformedSuggestions = transformerResult.filter(item => item.is_suggestion !== false).map(item => $b8hua$mergeProps(item, {
8502
+ const transformedSuggestions = transformerResult.filter(item => item.is_suggestion !== false).map(item => $b8hua$mergeProps1(item, {
8475
8503
  // Use mergeProps instead of spread since page_url and other properties could be a getter that solid components should call
8476
8504
  ancestors: item.ancestors.map(ancestor => {
8477
8505
  const newAncestor = transformedAncestors[ancestor.listing_id];
@@ -8568,11 +8596,11 @@ async function $284849364a6ef73a$var$_cached_request2(_ref4) {
8568
8596
  result = $ed0fefda39a0f15d$export$967e966fca9515e(result);
8569
8597
  cache_obj.cache_[body] = new WeakRef(result);
8570
8598
  resolve_in_progress(result);
8571
- setTimeout($b8hua$catchify1(() => {
8599
+ setTimeout($b8hua$catchify(() => {
8572
8600
  if ($b8hua$babelruntimehelpersclassPrivateFieldGet(this, $284849364a6ef73a$var$_supports_finalization_registry)) cache_obj.finalization_registry_.register(result, body); // delete key from cache when value (WeakRefs) are collected
8573
8601
  else
8574
8602
  // delete things from cache after 5 minutes, so it doesn't get too heavy
8575
- setTimeout($b8hua$catchify1(() => delete cache_obj.cache_[body]), 300000);
8603
+ setTimeout($b8hua$catchify(() => delete cache_obj.cache_[body]), 300000);
8576
8604
  }), 60000 // cache values for at least 60 seconds
8577
8605
  );
8578
8606
 
@@ -8604,7 +8632,7 @@ function $9d3d794b62318ecc$export$477caf01aecaeb2a(options) {
8604
8632
  const [get_selected_filters_, set_selected_filters] = selected_filters_;
8605
8633
  const [get_has_sideways_filter_clearing_flag_, set_has_sideways_filter_clearing_flag] = sideways_filter_clearing_flag_;
8606
8634
  const [get_current_href, set_current_href] = $b8hua$createSignal((_globalThis$location$ = globalThis === null || globalThis === void 0 ? void 0 : (_globalThis$location = globalThis.location) === null || _globalThis$location === void 0 ? void 0 : _globalThis$location.href) !== null && _globalThis$location$ !== void 0 ? _globalThis$location$ : "https://example.com");
8607
- const history_change_handler = $b8hua$catchify1(() => set_current_href(location.href));
8635
+ const history_change_handler = $b8hua$catchify(() => set_current_href(location.href));
8608
8636
  const owner = $b8hua$getOwner() || $b8hua$createRoot(() => $b8hua$getOwner());
8609
8637
  const {
8610
8638
  sorting_query_param_: sorting_query_param_,
@@ -8980,7 +9008,7 @@ function $8ef6232475d44150$export$7de92c4c2205ebf3(_ref) {
8980
9008
  return (0, $981356a8bf29ad72$export$6c9030e511152266) + get_showing_recommendation_rows() * Math.max(...possible_num_columns);
8981
9009
  });
8982
9010
  // Don't tear down elements every time one updates the page - don't put them within <Show>
8983
- const elements = $b8hua$ssr($8ef6232475d44150$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(i18n_.search_recs_title_()), $b8hua$escape($ca55612a53dbbdd2$export$a2cc176055f8f08()), $b8hua$escape($b8hua$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $b8hua$mergeProps1({
9011
+ const elements = $b8hua$ssr($8ef6232475d44150$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(i18n_.search_recs_title_()), $b8hua$escape($ca55612a53dbbdd2$export$a2cc176055f8f08()), $b8hua$escape($b8hua$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $b8hua$mergeProps({
8984
9012
  rows: rows_object,
8985
9013
  layout: "grid",
8986
9014
  element_attributes: {
@@ -9053,13 +9081,13 @@ function $a61a2051e15c8d7a$export$5196e4c01fa56fcb(_ref) {
9053
9081
  } = _ref;
9054
9082
  let close_toast_;
9055
9083
  const stay_open_promise = new Promise(r => close_toast_ = r);
9056
- $b8hua$catchify1(async () => {
9084
+ $b8hua$catchify(async () => {
9057
9085
  const closing_animation_duration = 300; // ms
9058
9086
  const element = $b8hua$ssrElement("div", more_attributes, () => $b8hua$escape(children), true);
9059
9087
  const [, set_is_showing_toast] = $a61a2051e15c8d7a$export$22970a0140fc759c;
9060
9088
  // if this is a memory leak the garbage collector is stupid - does someone know?
9061
- for (const ev of ["pointerover", "focusin"]) element.addEventListener(ev, $b8hua$catchify1(() => closing_animation.pause()));
9062
- for (const ev of ["pointerout", "focusout"]) element.addEventListener(ev, $b8hua$catchify1(() => closing_animation.play()));
9089
+ for (const ev of ["pointerover", "focusin"]) element.addEventListener(ev, $b8hua$catchify(() => closing_animation.pause()));
9090
+ for (const ev of ["pointerout", "focusout"]) element.addEventListener(ev, $b8hua$catchify(() => closing_animation.play()));
9063
9091
  const body = await (0, $b8hua$observer).wait_for_element("body");
9064
9092
  const x_translate = "translateX(-50%) ";
9065
9093
  let remove_keyboard_listener;
@@ -9084,7 +9112,7 @@ function $a61a2051e15c8d7a$export$5196e4c01fa56fcb(_ref) {
9084
9112
  // let other toasts close us if they open while we're still here
9085
9113
  $a61a2051e15c8d7a$var$closing_functions.add(close_toast_);
9086
9114
  set_is_showing_toast(true);
9087
- const handler = $b8hua$catchify1(_ref2 => {
9115
+ const handler = $b8hua$catchify(_ref2 => {
9088
9116
  let {
9089
9117
  key: key
9090
9118
  } = _ref2;
@@ -9219,7 +9247,7 @@ function $d8a66ba54a42eb3e$export$e026af0c7b64ea5f(_ref) {
9219
9247
  }, {
9220
9248
  defer: true
9221
9249
  }));
9222
- $b8hua$createComputed($b8hua$on(get_search_query_, $b8hua$catchify1(() => {
9250
+ $b8hua$createComputed($b8hua$on(get_search_query_, $b8hua$catchify(() => {
9223
9251
  // when a query was submitted, clear filters if clear was pressed before
9224
9252
  const clear_value = $b8hua$untrack(get_clear_filters_next_submit);
9225
9253
  if (clear_value) {
@@ -9246,11 +9274,11 @@ function $07d90b8270ece8de$export$84bba84a7b837187(read_search_query) {
9246
9274
  const key = "depict_searches";
9247
9275
  const previous_searches = $b8hua$createSignal(JSON.parse(ls[key] || "[]"));
9248
9276
  const [read_previous_searches, write_previous_searches] = previous_searches;
9249
- $b8hua$createEffect($b8hua$catchify1(() => {
9277
+ $b8hua$createEffect($b8hua$catchify(() => {
9250
9278
  const json_encoded = JSON.stringify(read_previous_searches());
9251
9279
  if (ls[key] !== json_encoded) ls[key] = json_encoded;
9252
9280
  }));
9253
- $b8hua$createComputed($b8hua$catchify1(() => {
9281
+ $b8hua$createComputed($b8hua$catchify(() => {
9254
9282
  const searches = $b8hua$untrack(read_previous_searches);
9255
9283
  const current_query = read_search_query();
9256
9284
  if (!current_query)
@@ -9296,7 +9324,7 @@ async function $86b0ff0c85e5fc6c$export$e16630ecb9644a1c(_ref) {
9296
9324
  function $33e7d1906c93db7d$export$205efb947c7ffd78(handler) {
9297
9325
  let passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
9298
9326
  let override_element = arguments.length > 2 ? arguments[2] : undefined;
9299
- const catchified_handler = $b8hua$catchify1(handler);
9327
+ const catchified_handler = $b8hua$catchify(handler);
9300
9328
  const owner = $b8hua$getOwner();
9301
9329
  // Some customers (e.g. equestrian) have `height: 100%` and/or `overflow-x: hidden` on the body, which means that scroll events won't get dispatched on `window`. The pages who get it on <body> won't get it on `window` and vice-versa, so there shouldn't be a worry about duplicate calling of the handler.
9302
9330
  // Use observer in case that this gets called before body exists
@@ -9341,7 +9369,7 @@ function $96d57a48e7bce64f$export$181cceed5c91919e(callback, alsoRaF, passiveLis
9341
9369
  $b8hua$createEffect(() => {
9342
9370
  if (alsoRaF !== null && alsoRaF !== void 0 && alsoRaF()) {
9343
9371
  let disposed = false;
9344
- const fn = $b8hua$catchify1(() => {
9372
+ const fn = $b8hua$catchify(() => {
9345
9373
  if (disposed) return;
9346
9374
  probablyCallCallback();
9347
9375
  requestAnimationFrame(fn);
@@ -9354,10 +9382,10 @@ function $96d57a48e7bce64f$export$181cceed5c91919e(callback, alsoRaF, passiveLis
9354
9382
  // "resize" doesn't fire sometimes when it should, also it doesn't when showing/hiding scrollbars which disabling scrolling does
9355
9383
  // this works
9356
9384
  // keeping resize just in case
9357
- const resize_resize_observer = new ResizeObserver($b8hua$catchify1(probablyCallCallback));
9385
+ const resize_resize_observer = new ResizeObserver($b8hua$catchify(probablyCallCallback));
9358
9386
  resize_resize_observer.observe(document.documentElement);
9359
9387
  (0, $b8hua$observer).wait_for_element("body").then(resize_resize_observer.observe.bind(resize_resize_observer));
9360
- $b8hua$onCleanup($b8hua$catchify1(() => resize_resize_observer.disconnect()));
9388
+ $b8hua$onCleanup($b8hua$catchify(() => resize_resize_observer.disconnect()));
9361
9389
  return probablyCallCallback;
9362
9390
  }
9363
9391
  const $1308a7816c3d4f2d$export$3f238c96c45e6cc6 = 1;
@@ -9390,7 +9418,7 @@ function $1308a7816c3d4f2d$export$b3ad617e9036868(_ref, input_field, alignment,
9390
9418
  }, pollAlignment);
9391
9419
  let ro;
9392
9420
  if (alignment & $1308a7816c3d4f2d$export$902f8b4a7dae5d78 || alignment & $1308a7816c3d4f2d$export$5097308c5200105a) {
9393
- ro = new ResizeObserver($b8hua$catchify1(records => {
9421
+ ro = new ResizeObserver($b8hua$catchify(records => {
9394
9422
  records.forEach(_ref2 => {
9395
9423
  let {
9396
9424
  contentRect: {
@@ -9414,7 +9442,7 @@ function $1308a7816c3d4f2d$export$b3ad617e9036868(_ref, input_field, alignment,
9414
9442
  }));
9415
9443
  ro.observe(input_field);
9416
9444
  }
9417
- $b8hua$onCleanup($b8hua$catchify1(() => {
9445
+ $b8hua$onCleanup($b8hua$catchify(() => {
9418
9446
  var _ro;
9419
9447
  return (_ro = ro) === null || _ro === void 0 ? void 0 : _ro.disconnect();
9420
9448
  }));
@@ -9629,7 +9657,7 @@ function $b69740fc6de9f17e$export$83fd5de5504a7a67(_ref) {
9629
9657
  fill: "forwards",
9630
9658
  easing: "ease-in-out"
9631
9659
  });
9632
- animation.addEventListener("finish", $b8hua$catchify1(() => {
9660
+ animation.addEventListener("finish", $b8hua$catchify(() => {
9633
9661
  if (unpermit_when_possible) set_permitted_to_show(false);
9634
9662
  animation = undefined;
9635
9663
  element.style.display = "none";
@@ -9697,7 +9725,7 @@ function $6d2962bc9370f884$export$5e4aed86c12acdd9(_ref) {
9697
9725
  is_first_load = true;
9698
9726
  });
9699
9727
  // percentage_in_view_ has equals: false so it should update even when set to the same value. That is to make sure that if the user bounces around below the "viewport" of our product listing we still start fetching as soon as is_loading_more becomes false again and we get IntersectionObserverEntries
9700
- $b8hua$createEffect($b8hua$catchify1(async () => {
9728
+ $b8hua$createEffect($b8hua$catchify(async () => {
9701
9729
  const be_above_percentage = is_first_load ? 50 : 75; // if first load, load earlier
9702
9730
  if (percentage_in_view_() < be_above_percentage || is_loading_more) return;
9703
9731
  if (!get_last_cursor()) {
@@ -9831,7 +9859,7 @@ var $64d94dcaa058dc7b$var$_tmpl$ = ["<style", ' type="text/css">', "</style>"];
9831
9859
  const $64d94dcaa058dc7b$export$c500183c31c2b22e = "--spans-columns";
9832
9860
  function $64d94dcaa058dc7b$export$ab6b147eec64fea5(props) {
9833
9861
  const container_class = "x" + $b8hua$createUniqueId();
9834
- const container_element_ = $b8hua$ssrElement("div", $b8hua$mergeProps1(() => props.element_attributes, {
9862
+ const container_element_ = $b8hua$ssrElement("div", $b8hua$mergeProps(() => props.element_attributes, {
9835
9863
  classList: {
9836
9864
  [container_class]: true
9837
9865
  }
@@ -10142,7 +10170,7 @@ function $7faea0096f14b59b$export$3925f87b1545cfc6(_ref) {
10142
10170
  } = slider;
10143
10171
  const Layout = props => $63f1f8dbcd07d3b0$export$445d8d3f5f706a40(props, insert_here, true);
10144
10172
  // Do like this, so we don't have to call mergeProps ourselves
10145
- $b8hua$createComponent(Layout, $b8hua$mergeProps1(layout_options_, {
10173
+ $b8hua$createComponent(Layout, $b8hua$mergeProps(layout_options_, {
10146
10174
  rows: "all",
10147
10175
  get cols_at_size() {
10148
10176
  return modified_cols_at_size();
@@ -10217,7 +10245,7 @@ function $69602b3d8fd54c38$export$9dd50d35b9d94fdf(_ref) {
10217
10245
  number_of_results_: number_of_results_,
10218
10246
  type: type
10219
10247
  } = _ref;
10220
- const contents = $b8hua$createMemo($b8hua$catchify1(() => {
10248
+ const contents = $b8hua$createMemo($b8hua$catchify(() => {
10221
10249
  const q = get_search_query_();
10222
10250
  return i18n_[type === $69602b3d8fd54c38$export$2452208c79fe93ea.content ? "get_showing_pages_for_" : "get_showing_results_for_"]()($b8hua$ssr($69602b3d8fd54c38$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(q)), $b8hua$ssr($69602b3d8fd54c38$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(formatted_number_of_results_())), !!q, number_of_results_());
10223
10251
  }));
@@ -10303,7 +10331,7 @@ var $79af35736fe8e5c8$var$_tmpl$ = '<path d="M6.199 10.254a.35.35 0 0 0-.496 0L3
10303
10331
  $79af35736fe8e5c8$var$_tmpl$2 = '<path d="M10.852 6.301H8.051a.35.35 0 0 1-.352-.352V4.551a.35.35 0 0 1 .352-.352h2.801a.35.35 0 0 1 .348.352v1.398a.35.35 0 0 1-.348.352zm-2.453-.699H10.5v-.703H8.398zm3.851 3.5H8.051c-.195 0-.352-.16-.352-.352V7.352A.35.35 0 0 1 8.051 7h4.199c.191 0 .352.156.352.352V8.75c0 .191-.16.352-.352.352zm-3.852-.703h3.5V7.7h-3.5zm5.25 3.499H8.051a.35.35 0 0 1-.352-.348v-1.402a.35.35 0 0 1 .352-.348h5.598a.35.35 0 0 1 .352.348v1.402a.35.35 0 0 1-.352.348zm-5.25-.699H13.3V10.5H8.398zm0 0"></path>';
10304
10332
  function $79af35736fe8e5c8$export$da32f7add8a22e86() {
10305
10333
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10306
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
10334
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
10307
10335
  xmlns: "http://www.w3.org/2000/svg",
10308
10336
  width: "14",
10309
10337
  height: "14",
@@ -10313,7 +10341,7 @@ function $79af35736fe8e5c8$export$da32f7add8a22e86() {
10313
10341
  var $73e3c96bc365e0e9$var$_tmpl$ = '<path d="M6.199 10.254a.35.35 0 0 0-.496 0L3.5 12.453V.348a.35.35 0 0 0-.7 0v12.105L.598 10.254c-.137-.137-.359-.137-.492 0a.35.35 0 0 0 0 .492l2.797 2.801a.35.35 0 0 0 .496 0L6.2 10.746c.137-.137.137-.355 0-.492zm3.25 1.644H8.051a.35.35 0 0 1-.352-.348v-1.402a.35.35 0 0 1 .352-.348h1.398a.35.35 0 0 1 .352.348v1.402a.35.35 0 0 1-.352.348zm-1.051-.699h.703V10.5h-.703zm2.454-2.097H8.051c-.195 0-.352-.16-.352-.352V7.352A.35.35 0 0 1 8.051 7h2.801a.35.35 0 0 1 .348.352V8.75c0 .191-.156.352-.348.352zm-2.453-.703H10.5V7.7H8.398zm3.851-2.098H8.051a.35.35 0 0 1-.352-.352V4.551a.35.35 0 0 1 .352-.352h4.199c.191 0 .352.156.352.352v1.398c0 .195-.16.352-.352.352zm-3.852-.699h3.5v-.703h-3.5zm5.25-2.102H8.051a.35.35 0 0 1-.352-.352V1.75c0-.191.156-.352.352-.352h5.598c.195 0 .352.16.352.352v1.398a.35.35 0 0 1-.352.352zm-5.25-.699H13.3v-.699H8.398zm0 0"></path>';
10314
10342
  function $73e3c96bc365e0e9$export$d10e63059ddb9fd4() {
10315
10343
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10316
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
10344
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
10317
10345
  xmlns: "http://www.w3.org/2000/svg",
10318
10346
  width: "14",
10319
10347
  height: "14",
@@ -10381,7 +10409,7 @@ function $082c4ed3e22f8d71$export$9bf11afa910f536e(_ref) {
10381
10409
  set_search_sorting_open(true);
10382
10410
  }
10383
10411
  });
10384
- $b8hua$onCleanup($b8hua$catchify1(() => {
10412
+ $b8hua$onCleanup($b8hua$catchify(() => {
10385
10413
  if (!sorting_expanded() && !filters_expanded()) {
10386
10414
  set_search_filters_open(false);
10387
10415
  set_search_sorting_open(false);
@@ -10429,7 +10457,7 @@ function $082c4ed3e22f8d71$export$9bf11afa910f536e(_ref) {
10429
10457
  })));
10430
10458
  },
10431
10459
  get children() {
10432
- return $b8hua$ssr($082c4ed3e22f8d71$var$_tmpl$5, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent((0, $f6b0500577e1b210$export$3f1a388cc0d8fed7), $b8hua$mergeProps1(args_for_filtering_, {
10460
+ return $b8hua$ssr($082c4ed3e22f8d71$var$_tmpl$5, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent((0, $f6b0500577e1b210$export$3f1a388cc0d8fed7), $b8hua$mergeProps(args_for_filtering_, {
10433
10461
  are_in_modal_: true
10434
10462
  }))));
10435
10463
  }
@@ -10493,7 +10521,7 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
10493
10521
  const [sorting_open, set_sorting_open] = search_sorting_open_;
10494
10522
  const [get_current_sorting_] = current_sorting_;
10495
10523
  const [is_small, set_is_small] = $b8hua$createSignal(false);
10496
- const dismiss_modal_ = $b8hua$catchify1(() => {
10524
+ const dismiss_modal_ = $b8hua$catchify(() => {
10497
10525
  set_filters_open(false);
10498
10526
  set_sorting_open(false);
10499
10527
  });
@@ -10594,7 +10622,7 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
10594
10622
  }));else set_extra_els_in_results_container_($b8hua$ssr($7396052a1484264f$var$_tmpl$2, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent((0, $cfdbd124dd09d713$export$1f1775a58da589b5), sorting_options))));
10595
10623
  }
10596
10624
  });
10597
- $b8hua$catchify1(async () => {
10625
+ $b8hua$catchify(async () => {
10598
10626
  ({
10599
10627
  open_modal_: open_modal_,
10600
10628
  close_modal_: close_modal_
@@ -10772,7 +10800,7 @@ function $6a16b21155984cef$var$ActualFloatingButtons(_ref2) {
10772
10800
  }
10773
10801
  old_pos = new_pos;
10774
10802
  });
10775
- const touchstart_handler = $b8hua$catchify1(e => {
10803
+ const touchstart_handler = $b8hua$catchify(e => {
10776
10804
  is_in_touch_scroll = true;
10777
10805
  if (e.touches.length === 1) {
10778
10806
  // we had no touches but then we got some. Adding a new touch cancels the inertia. We are in a new touch so do reset the diff
@@ -10780,12 +10808,12 @@ function $6a16b21155984cef$var$ActualFloatingButtons(_ref2) {
10780
10808
  diff_over_second_or_touch = 0;
10781
10809
  }
10782
10810
  });
10783
- const touchend_handler = $b8hua$catchify1(e => {
10811
+ const touchend_handler = $b8hua$catchify(e => {
10784
10812
  if (e.touches.length === 0)
10785
10813
  // scroll gesture of any type (pinch can also be used as scroll, etc.) ended
10786
10814
  inertia_timeout = setTimeout(
10787
10815
  // inertia ends after 500ms (educated guess)
10788
- $b8hua$catchify1(() => {
10816
+ $b8hua$catchify(() => {
10789
10817
  is_in_touch_scroll = false;
10790
10818
  diff_over_second_or_touch = 0;
10791
10819
  }), 500);
@@ -10803,9 +10831,9 @@ function $6a16b21155984cef$var$ActualFloatingButtons(_ref2) {
10803
10831
  const everything_closed = !get_search_filters_open_() && !get_search_sorting_open_();
10804
10832
  if (!$b8hua$untrack(modal_is_closed) && everything_closed)
10805
10833
  // I think the point of this is to delay the animation a bit IIRC
10806
- timeout = setTimeout($b8hua$catchify1(() => set_if_modal_is_closed(true)), 200);else set_if_modal_is_closed(everything_closed);
10834
+ timeout = setTimeout($b8hua$catchify(() => set_if_modal_is_closed(true)), 200);else set_if_modal_is_closed(everything_closed);
10807
10835
  });
10808
- $b8hua$createComputed($b8hua$catchify1(async () => {
10836
+ $b8hua$createComputed($b8hua$catchify(async () => {
10809
10837
  const element = sort_and_filter_element_();
10810
10838
  if (!element) return;
10811
10839
  await (0, $b8hua$observer).wait_for_element(element);
@@ -10824,7 +10852,7 @@ function $ec225bf1f1627ea8$export$210f130a61ac1e8d(fn) {
10824
10852
  let last_queued;
10825
10853
  let last_value;
10826
10854
  let initial_run = true;
10827
- $b8hua$createComputed($b8hua$catchify1(async () => {
10855
+ $b8hua$createComputed($b8hua$catchify(async () => {
10828
10856
  last_value = fn();
10829
10857
  if (initial_run) {
10830
10858
  initial_run = false;
@@ -10872,7 +10900,7 @@ function $5e6abec0dab4e610$export$6e49da55e449af7c(_ref) {
10872
10900
  }]); // get rid of old data the browser saves the old state and will restore it later on
10873
10901
  };
10874
10902
 
10875
- $b8hua$createComputed($b8hua$catchify1(() => {
10903
+ $b8hua$createComputed($b8hua$catchify(() => {
10876
10904
  const last_result = get_last_result_in_viewport_();
10877
10905
  if (last_result == undefined || last_result <= 0 || last_result == Infinity) return;
10878
10906
  if (isNaN(last_result)) {
@@ -10899,7 +10927,7 @@ function $5e6abec0dab4e610$export$6e49da55e449af7c(_ref) {
10899
10927
  set_to_later = last_result;
10900
10928
  // If a delayed push timeout is already running, just changing the value that will be pushed is sufficient
10901
10929
  if (timeout) return;
10902
- timeout = setTimeout($b8hua$catchify1(() => {
10930
+ timeout = setTimeout($b8hua$catchify(() => {
10903
10931
  timeout = undefined;
10904
10932
  last_time_history_changed = +new Date();
10905
10933
  set_min_results_loaded(set_to_later);
@@ -11010,7 +11038,7 @@ function $22470de5f42cc35d$export$f631859cab12b342(_ref) {
11010
11038
  if (!result) return;
11011
11039
  return {
11012
11040
  href: result.page_url,
11013
- onClick: $b8hua$catchify1(ev => router_.navigate_.go_to_({
11041
+ onClick: $b8hua$catchify(ev => router_.navigate_.go_to_({
11014
11042
  new_url_: result.page_url,
11015
11043
  is_replace_: false,
11016
11044
  event_: ev
@@ -11025,7 +11053,7 @@ function $22470de5f42cc35d$export$f631859cab12b342(_ref) {
11025
11053
  if (content_result_) return $b8hua$ssrElement("a", attributes, () => $b8hua$escape(children), true);
11026
11054
  return $b8hua$ssrElement("div", attributes, () => $b8hua$escape(children), true);
11027
11055
  };
11028
- return $b8hua$ssr($22470de5f42cc35d$var$_tmpl$2, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent(LinkIfPossible, $b8hua$mergeProps1(make_link_attributes, {
11056
+ return $b8hua$ssr($22470de5f42cc35d$var$_tmpl$2, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent(LinkIfPossible, $b8hua$mergeProps(make_link_attributes, {
11029
11057
  tabIndex: "-1",
11030
11058
  get children() {
11031
11059
  return $b8hua$createComponent((0, $3c5e15c6ee4227a9$export$605674723bcc715c), {
@@ -11033,7 +11061,7 @@ function $22470de5f42cc35d$export$f631859cab12b342(_ref) {
11033
11061
  height: "28"
11034
11062
  });
11035
11063
  }
11036
- }))), $b8hua$escape($b8hua$createComponent(LinkIfPossible, $b8hua$mergeProps1({
11064
+ }))), $b8hua$escape($b8hua$createComponent(LinkIfPossible, $b8hua$mergeProps({
11037
11065
  "class": "content-title line-clamp"
11038
11066
  }, make_link_attributes, {
11039
11067
  get title() {
@@ -11191,7 +11219,7 @@ function $d53ebed6f63304e4$export$6d0c9c22f6652669(_ref) {
11191
11219
  return (0, $69602b3d8fd54c38$export$2452208c79fe93ea).content;
11192
11220
  },
11193
11221
  number_of_results_: num_results
11194
- })), $b8hua$escape($b8hua$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $b8hua$mergeProps1({
11222
+ })), $b8hua$escape($b8hua$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $b8hua$mergeProps({
11195
11223
  layout: "grid",
11196
11224
  element_attributes: {
11197
11225
  class: "cards"
@@ -11394,7 +11422,7 @@ function $937791b86d3d1509$export$44f738469d5570cf(_ref) {
11394
11422
  // We might only have changed the left position which align_field doesn't know about, make it poll the position for a while
11395
11423
  setPollAlignment_(true);
11396
11424
  if (disableResizePollingTimeout) clearTimeout(disableResizePollingTimeout);
11397
- disableResizePollingTimeout = setTimeout($b8hua$catchify1(() => {
11425
+ disableResizePollingTimeout = setTimeout($b8hua$catchify(() => {
11398
11426
  setPollAlignment_(false);
11399
11427
  disableResizePollingTimeout = undefined;
11400
11428
  }), 1000);
@@ -11527,7 +11555,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11527
11555
  } : {})
11528
11556
  };
11529
11557
  });
11530
- const [search_results_] = $b8hua$createResource(search_query_base_, $b8hua$catchify1(async base_query => {
11558
+ const [search_results_] = $b8hua$createResource(search_query_base_, $b8hua$catchify(async base_query => {
11531
11559
  set_all_products_loaded(false);
11532
11560
  // only first page of results
11533
11561
  return await $5e6abec0dab4e610$export$cc42dd29bf655ab6({
@@ -11575,7 +11603,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11575
11603
  const [, setModalFieldStyle] = modal_field_style;
11576
11604
  const [, setModalBackdropStyle] = modal_backdrop_style;
11577
11605
  const [get_search_field_elements, set_search_field_elements] = $b8hua$createSignal();
11578
- const SafeSearchField = $b8hua$catchify1((0, $584c06c09cf4609d$export$b94867ecbd698f21));
11606
+ const SafeSearchField = $b8hua$catchify((0, $584c06c09cf4609d$export$b94867ecbd698f21));
11579
11607
  const [sort_or_filter_open_, set_sort_or_filter_open_] = $b8hua$createSignal(false);
11580
11608
  const [desktop_filter_elements_, set_desktop_filter_elements] = $b8hua$createSignal();
11581
11609
  const n_hits = $b8hua$createMemo(() => {
@@ -11591,7 +11619,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11591
11619
  var _search_results_4, _search_results_4$con;
11592
11620
  return ((_search_results_4 = search_results_()) !== null && _search_results_4 !== void 0 && (_search_results_4$con = _search_results_4.content_search_links) !== null && _search_results_4$con !== void 0 && _search_results_4$con.length ? i18n_.no_products_ : i18n_.no_results_text_)();
11593
11621
  });
11594
- const results_for = $b8hua$createComponent((0, $69602b3d8fd54c38$export$9dd50d35b9d94fdf), $b8hua$mergeProps1({
11622
+ const results_for = $b8hua$createComponent((0, $69602b3d8fd54c38$export$9dd50d35b9d94fdf), $b8hua$mergeProps({
11595
11623
  get type() {
11596
11624
  return (0, $69602b3d8fd54c38$export$2452208c79fe93ea).products;
11597
11625
  },
@@ -11635,7 +11663,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11635
11663
  $b8hua$runWithOwner(owner, () => results_filters[1](matches ? [results_for, filters_opener] : $b8hua$ssr($da279c5a540c6846$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(results_for), $b8hua$escape(filters_opener))));
11636
11664
  }).remove);
11637
11665
  $3a2bed57c9a57e21$export$d31a1a1a83ad9413(search_results_, selected_filters_);
11638
- $b8hua$catchify1((0, $5e6abec0dab4e610$export$6e49da55e449af7c))({
11666
+ $b8hua$catchify((0, $5e6abec0dab4e610$export$6e49da55e449af7c))({
11639
11667
  scroll_restoration_data_: scroll_restoration_data_,
11640
11668
  last_result_in_viewport_: last_result_in_viewport_,
11641
11669
  id_: get_search_query_,
@@ -11681,8 +11709,8 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11681
11709
  setModalBodyStyle({});
11682
11710
  modalAlignmentSignalsRef_ === null || modalAlignmentSignalsRef_ === void 0 || modalAlignmentSignalsRef_(alignmentSignals_);
11683
11711
  const [pollAlignment, setPollAlignment_] = $b8hua$createSignal(false);
11684
- const align_position = $b8hua$catchify1((0, $1308a7816c3d4f2d$export$b3ad617e9036868))(alignmentSignals_, search_field, (0, $1308a7816c3d4f2d$export$3f238c96c45e6cc6) | (0, $1308a7816c3d4f2d$export$7895aadd1956b1c7) | (modalVersionUsed_ === 1 ? (0, $1308a7816c3d4f2d$export$902f8b4a7dae5d78) : (0, $1308a7816c3d4f2d$export$6060bc6bee850eb6) | (0, $1308a7816c3d4f2d$export$5097308c5200105a)), true, pollAlignment);
11685
- div_with_field_class.addEventListener("click", $b8hua$catchify1(e => {
11712
+ const align_position = $b8hua$catchify((0, $1308a7816c3d4f2d$export$b3ad617e9036868))(alignmentSignals_, search_field, (0, $1308a7816c3d4f2d$export$3f238c96c45e6cc6) | (0, $1308a7816c3d4f2d$export$7895aadd1956b1c7) | (modalVersionUsed_ === 1 ? (0, $1308a7816c3d4f2d$export$902f8b4a7dae5d78) : (0, $1308a7816c3d4f2d$export$6060bc6bee850eb6) | (0, $1308a7816c3d4f2d$export$5097308c5200105a)), true, pollAlignment);
11713
+ div_with_field_class.addEventListener("click", $b8hua$catchify(e => {
11686
11714
  var _target$matches, _target$closest, _on_open_, _ref4;
11687
11715
  const target = e.target;
11688
11716
  const sel = ".submit";
@@ -12089,7 +12117,7 @@ class $eb064bc3350276c1$export$ac6237957a15b3f0 {
12089
12117
  BackIcon_: BackIcon_
12090
12118
  });
12091
12119
  $68e6625c8d51f847$export$5162a71f252e6122();
12092
- $b8hua$catchify1(async () => {
12120
+ $b8hua$catchify(async () => {
12093
12121
  const {
12094
12122
  open_modal_: open_modal_,
12095
12123
  close_modal_: close_modal_
@@ -12353,7 +12381,7 @@ function $eb064bc3350276c1$export$f2dc7e4e4aa11abb(props) {
12353
12381
  function $37e8c97bb6876197$export$828dcdd425fd3231(aligner) {
12354
12382
  const style_element = document.createElement("style");
12355
12383
  document.head.append(style_element);
12356
- const resize_observer = new ResizeObserver($b8hua$catchify1(() => {
12384
+ const resize_observer = new ResizeObserver($b8hua$catchify(() => {
12357
12385
  const styles = $cc64aabf2c7a1f1a$export$1233ca167bf71f9a({
12358
12386
  ".depict.plp .depict-search-modal .search-field": {
12359
12387
  "height": "".concat(aligner === null || aligner === void 0 ? void 0 : aligner.clientHeight, "px")
@@ -12424,7 +12452,7 @@ const $169c13c0531d91d2$export$d86a33413558014e = openModalParams => {
12424
12452
  }, dispose_aligner];
12425
12453
  };
12426
12454
  function $573c007c697a1831$export$d0596b5cae35ad4(open_search) {
12427
- const handler = $b8hua$catchify1(e => {
12455
+ const handler = $b8hua$catchify(e => {
12428
12456
  const {
12429
12457
  key: key,
12430
12458
  target: target
@@ -12443,7 +12471,7 @@ function $573c007c697a1831$export$d0596b5cae35ad4(open_search) {
12443
12471
  function $e60a76195ac6d408$export$689e204eadb33baf(pr) {
12444
12472
  let old_url;
12445
12473
  let disconnect_link_observer;
12446
- const link_handler = $b8hua$catchify1(e => {
12474
+ const link_handler = $b8hua$catchify(e => {
12447
12475
  const link = e.currentTarget || e.target;
12448
12476
  if (link.href === old_url) {
12449
12477
  history.pushState(history.state, "", link.href);
@@ -12452,7 +12480,7 @@ function $e60a76195ac6d408$export$689e204eadb33baf(pr) {
12452
12480
  });
12453
12481
  let remove_added_listeners;
12454
12482
  let resolve_remove_added_listeners;
12455
- pr.addEventListener("open", $b8hua$catchify1(() => {
12483
+ pr.addEventListener("open", $b8hua$catchify(() => {
12456
12484
  remove_added_listeners = new Promise(r => resolve_remove_added_listeners = r);
12457
12485
  disconnect_link_observer = (0, $b8hua$observer).onexists("a", async _ref => {
12458
12486
  let {
@@ -12463,12 +12491,12 @@ function $e60a76195ac6d408$export$689e204eadb33baf(pr) {
12463
12491
  element.removeEventListener("click", link_handler);
12464
12492
  });
12465
12493
  }));
12466
- pr.addEventListener("close", $b8hua$catchify1(() => {
12494
+ pr.addEventListener("close", $b8hua$catchify(() => {
12467
12495
  var _disconnect_link_obse, _resolve_remove_added;
12468
12496
  (_disconnect_link_obse = disconnect_link_observer) === null || _disconnect_link_obse === void 0 || _disconnect_link_obse();
12469
12497
  (_resolve_remove_added = resolve_remove_added_listeners) === null || _resolve_remove_added === void 0 || _resolve_remove_added();
12470
12498
  }));
12471
- $b8hua$catchify1(async () => {
12499
+ $b8hua$catchify(async () => {
12472
12500
  for await (const href of (0, $b8hua$href_change_ipns)) if (!pr.is_page_(new URL(href))) old_url = href;
12473
12501
  })();
12474
12502
  }
@@ -12566,7 +12594,7 @@ class $f9fd3017c20b774a$export$3ccaa27d81dd8556 extends EventTarget {
12566
12594
  });
12567
12595
  $f9fd3017c20b774a$var$_classPrivateFieldInitSpec(this, $f9fd3017c20b774a$var$_unload, {
12568
12596
  writable: true,
12569
- value: /*@__PURE__*/$b8hua$catchify1(() => {
12597
+ value: /*@__PURE__*/$b8hua$catchify(() => {
12570
12598
  var _classPrivateFieldGet3;
12571
12599
  if (!$b8hua$babelruntimehelpersclassPrivateFieldGet(this, $f9fd3017c20b774a$var$_is_open)) return;
12572
12600
  (_classPrivateFieldGet3 = $b8hua$babelruntimehelpersclassPrivateFieldGet(this, $f9fd3017c20b774a$var$_disconnect_observer)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.call(this);
@@ -12580,7 +12608,7 @@ class $f9fd3017c20b774a$export$3ccaa27d81dd8556 extends EventTarget {
12580
12608
  });
12581
12609
  $f9fd3017c20b774a$var$_classPrivateFieldInitSpec(this, $f9fd3017c20b774a$var$_load, {
12582
12610
  writable: true,
12583
- value: /*@__PURE__*/$b8hua$catchify1(async els => {
12611
+ value: /*@__PURE__*/$b8hua$catchify(async els => {
12584
12612
  $b8hua$babelruntimehelpersclassPrivateFieldSet(this, $f9fd3017c20b774a$var$_is_open, true);
12585
12613
  // So that #load doesn't get called again
12586
12614
  let set_should_stay_inserted;
@@ -12644,7 +12672,7 @@ class $f9fd3017c20b774a$export$3ccaa27d81dd8556 extends EventTarget {
12644
12672
  async function $f9fd3017c20b774a$var$_listen2() {
12645
12673
  const [exit_ipns, exitable_ipns] = $b8hua$make_asyncIterable_exiter((0, $b8hua$href_change_ipns));
12646
12674
  $b8hua$babelruntimehelpersclassPrivateFieldSet(this, $f9fd3017c20b774a$var$_stop_listening, exit_ipns);
12647
- const caught_page_check_fn = $b8hua$catchify1(this.is_page_, "page check failed");
12675
+ const caught_page_check_fn = $b8hua$catchify(this.is_page_, "page check failed");
12648
12676
  for await (const href of exitable_ipns) {
12649
12677
  const url = new URL(href);
12650
12678
  if (!caught_page_check_fn(url)) {
@@ -12662,12 +12690,12 @@ function $f9fd3017c20b774a$var$_get_rendered_recs2() {
12662
12690
  this.addEventListener("close", dispose, {
12663
12691
  once: true
12664
12692
  });
12665
- return $b8hua$catchify1(this.render_, "rendering failed")() || [];
12693
+ return $b8hua$catchify(this.render_, "rendering failed")() || [];
12666
12694
  });
12667
12695
  }
12668
12696
  function $f9fd3017c20b774a$var$_empty_page_bugfix2() {
12669
12697
  // Called when a "page" is "opened" using PageReplacer
12670
- const on_maybe_popstate = $b8hua$catchify1(what_happened => {
12698
+ const on_maybe_popstate = $b8hua$catchify(what_happened => {
12671
12699
  if (what_happened !== "popstate") return;
12672
12700
  const cleaned_current_url = $f9fd3017c20b774a$var$clean_url(location.href);
12673
12701
  if (!$f9fd3017c20b774a$var$_classStaticPrivateFieldSpecGet($f9fd3017c20b774a$export$3ccaa27d81dd8556, $f9fd3017c20b774a$export$3ccaa27d81dd8556, $f9fd3017c20b774a$var$_visited_urls).has(cleaned_current_url)) {
@@ -12710,7 +12738,7 @@ var $f9fd3017c20b774a$var$_visited_urls = {
12710
12738
  writable: true,
12711
12739
  value: /*@__PURE__*/(() => {
12712
12740
  // Keep track of all URLs that have been visited since the document that was initially loaded (loaded means the process where the browser creates a new `document` and `window` object).
12713
- $b8hua$catchify1(async () => {
12741
+ $b8hua$catchify(async () => {
12714
12742
  // Static initialization blocks aren't supported in MobileSafari yet, otherwise this would be one.
12715
12743
  // I don't think we want to ship a library that users are *forced* to transpile, it should run in the newest version of all major browsers. So we'll just use a function wrapper for now (adding "last 1 ios version" to the build target does a bunch of other unneeded transpilations).
12716
12744
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Static_initialization_blocks
@@ -12767,7 +12795,7 @@ function $a3026fb727bc7550$export$316f6f283ae64765(props) {
12767
12795
  field_: $b8hua$createSignal({}),
12768
12796
  backdrop_: backdropAlignmentSignal_
12769
12797
  };
12770
- const defaultHandler = $b8hua$catchify1(e => {
12798
+ const defaultHandler = $b8hua$catchify(e => {
12771
12799
  const {
12772
12800
  modalVersionUsed_: modalVersionUsed_
12773
12801
  } = shared_properties;
@@ -12899,7 +12927,7 @@ function $43fbb365ed0ac99e$export$466cdc317043f6cb(_ref) {
12899
12927
  $b8hua$createComputed(() => {
12900
12928
  var _place_holdey_quickli, _place_holdey_quickli2;
12901
12929
  if ((_place_holdey_quickli = place_holdey_quicklinks_data()) !== null && _place_holdey_quickli !== void 0 && (_place_holdey_quickli2 = _place_holdey_quickli[0]) !== null && _place_holdey_quickli2 !== void 0 && _place_holdey_quickli2.listing_id) {
12902
- if (last_was_placeholder) queueMicrotask($b8hua$catchify1(() => {
12930
+ if (last_was_placeholder) queueMicrotask($b8hua$catchify(() => {
12903
12931
  var _sliding_element;
12904
12932
  (_sliding_element = sliding_element) === null || _sliding_element === void 0 || _sliding_element.scrollTo({
12905
12933
  left: 0
@@ -12968,7 +12996,7 @@ function $43fbb365ed0ac99e$export$466cdc317043f6cb(_ref) {
12968
12996
  } else if (!(((_intersecting_items_o = intersecting_items_object[selected_index()]) === null || _intersecting_items_o === void 0 ? void 0 : _intersecting_items_o.intersectionRatio) >= 0.95)) {
12969
12997
  // negated larger than to handle left side of comparison being undefined
12970
12998
  let done_work = false;
12971
- $b8hua$runWithOwner(owner, () => $b8hua$createComputed($b8hua$catchify1(() => {
12999
+ $b8hua$runWithOwner(owner, () => $b8hua$createComputed($b8hua$catchify(() => {
12972
13000
  if (done_work || !Array.isArray(quicklinks_data_())) return;
12973
13001
  const sel_index = selected_index();
12974
13002
  const target_element = sel_index >= 0 ? sel_index : 0;
@@ -13125,7 +13153,7 @@ function $a4777acaffa35a82$export$3945d6db2dfd3d12(_ref) {
13125
13153
  const handler = () => allow_filter_clearing = false;
13126
13154
  window.addEventListener("popstate", handler); // popstate only gets called when using back/forwards button of browser or the history navigate to achieve the same, but not on pushState or replaceState
13127
13155
  $b8hua$onCleanup(() => window.removeEventListener("popstate", handler));
13128
- $b8hua$createEffect($b8hua$on(crumb_data_, $b8hua$catchify1(new_crumb_data => {
13156
+ $b8hua$createEffect($b8hua$on(crumb_data_, $b8hua$catchify(new_crumb_data => {
13129
13157
  const id_of_new_data = id_to_query_for_();
13130
13158
  const type_of_id_of_new_data = id_type_();
13131
13159
  if (allow_filter_clearing && previous_crumb_data && new_crumb_data && (id_of_new_data !== id_when_we_got_previous_data.id_ || type_of_id_of_new_data !== id_when_we_got_previous_data.type_)) {
@@ -13210,11 +13238,11 @@ function $3b772ef9a35560fe$export$780a853d15174484(_ref) {
13210
13238
  } = _ref;
13211
13239
  if (type === "image") {
13212
13240
  const [wrapperSize, setWrapperSize] = $b8hua$createSignal();
13213
- return $b8hua$createComponent((0, $b8hua$Dynamic), $b8hua$mergeProps1({
13241
+ return $b8hua$createComponent((0, $b8hua$Dynamic), $b8hua$mergeProps({
13214
13242
  component: link ? "a" : "div",
13215
13243
  "class": "d-standard-content-wrapper",
13216
13244
  get onClick() {
13217
- return $b8hua$catchify(ev => link && router_.navigate_.go_to_({
13245
+ return $b8hua$catchify1(ev => link && router_.navigate_.go_to_({
13218
13246
  new_url_: link,
13219
13247
  is_replace_: false,
13220
13248
  event_: ev
@@ -13224,12 +13252,14 @@ function $3b772ef9a35560fe$export$780a853d15174484(_ref) {
13224
13252
  href: link
13225
13253
  }, {
13226
13254
  get children() {
13227
- return $b8hua$createComponent((0, $56047603f9d212b6$export$6e5611bc7e57e477), {
13228
- get size() {
13229
- return $b8hua$createMemo(() => {
13230
- var _wrapperSize;
13231
- return ((_wrapperSize = wrapperSize()) === null || _wrapperSize === void 0 ? void 0 : _wrapperSize()) || 0;
13232
- });
13255
+ return $b8hua$createComponent((0, $98688279b9059f50$export$140423fa4bfb6d63), {
13256
+ size: () => {
13257
+ var _wrapperSize, _wrapperSize$;
13258
+ return ((_wrapperSize = wrapperSize()) === null || _wrapperSize === void 0 ? void 0 : (_wrapperSize$ = _wrapperSize[0]) === null || _wrapperSize$ === void 0 ? void 0 : _wrapperSize$.call(_wrapperSize)) || 0;
13259
+ },
13260
+ sizeHeight: () => {
13261
+ var _wrapperSize2, _wrapperSize2$;
13262
+ return ((_wrapperSize2 = wrapperSize()) === null || _wrapperSize2 === void 0 ? void 0 : (_wrapperSize2$ = _wrapperSize2[1]) === null || _wrapperSize2$ === void 0 ? void 0 : _wrapperSize2$.call(_wrapperSize2)) || 0;
13233
13263
  },
13234
13264
  src: mediaUrl,
13235
13265
  "class": "d-standard-content"
@@ -13344,7 +13374,7 @@ function $4b4b262708b516ee$export$f7d2f673fc2f091d(_ref) {
13344
13374
  // Make "Get products in listing" request to get products in listing
13345
13375
  const [plp_products_] = $b8hua$createResource(products_query_base_,
13346
13376
  // only first page of results, unless the history state says we should load more (can't do that in load more thing, I tested, they need to be added at once for the browser to not give up scroll restoration)
13347
- $b8hua$catchify(base_query => $5e6abec0dab4e610$export$cc42dd29bf655ab6({
13377
+ $b8hua$catchify1(base_query => $5e6abec0dab4e610$export$cc42dd29bf655ab6({
13348
13378
  id_: $b8hua$untrack(id_to_query_for_),
13349
13379
  scroll_restoration_data_: scroll_restoration_data_,
13350
13380
  min_products_to_fetch_: min_products_to_fetch_,
@@ -13364,7 +13394,7 @@ function $4b4b262708b516ee$export$f7d2f673fc2f091d(_ref) {
13364
13394
  id_type_: id_type_()
13365
13395
  }));
13366
13396
  // Make "Get Listing" request to get quicklinks, breadcrumbs, title, etc
13367
- const [plp_meta] = $b8hua$createResource(meta_query_base, $b8hua$catchify(query => depict_api_.get_listing(query)));
13397
+ const [plp_meta] = $b8hua$createResource(meta_query_base, $b8hua$catchify1(query => depict_api_.get_listing(query)));
13368
13398
  const contentBlocksByRow = $12ff24fdc4b26d88$export$7a92d995f1bf3592(history_content_blocks_, plp_meta, content_blocks_by_row_, router_);
13369
13399
  const available_sortings_ = $b8hua$createMemo(() => {
13370
13400
  var _plp_products_, _plp_products_$sorts;
@@ -13499,7 +13529,7 @@ function $4b4b262708b516ee$export$f7d2f673fc2f091d(_ref) {
13499
13529
  filterModalParent_: filterModalParent_,
13500
13530
  ...extra_sort_and_filter_args_
13501
13531
  });
13502
- $b8hua$catchify((0, $5e6abec0dab4e610$export$6e49da55e449af7c))({
13532
+ $b8hua$catchify1((0, $5e6abec0dab4e610$export$6e49da55e449af7c))({
13503
13533
  scroll_restoration_data_: scroll_restoration_data_,
13504
13534
  last_result_in_viewport_: last_result_in_viewport_,
13505
13535
  id_: id_to_query_for_,
@@ -13513,7 +13543,7 @@ function $4b4b262708b516ee$export$f7d2f673fc2f091d(_ref) {
13513
13543
  $b8hua$createComputed(() => {
13514
13544
  if (plp_products_.loading) set_can_write_scroll_restoration(false);else if (plp_products_()) set_can_write_scroll_restoration(true);
13515
13545
  });
13516
- $b8hua$createRenderEffect($b8hua$catchify(async () => {
13546
+ $b8hua$createRenderEffect($b8hua$catchify1(async () => {
13517
13547
  var _only_show_filters_op;
13518
13548
  const slim = is_slim_();
13519
13549
  const only_show_filters_opener = (_only_show_filters_op = only_show_filters_opener_) === null || _only_show_filters_op === void 0 ? void 0 : _only_show_filters_op();
@@ -13656,7 +13686,7 @@ function $4b4b262708b516ee$var$add_us_to_crumbs(plp_meta) {
13656
13686
  var _plp_meta3;
13657
13687
  const api_value = (_plp_meta3 = plp_meta()) === null || _plp_meta3 === void 0 ? void 0 : _plp_meta3.breadcrumbs;
13658
13688
  if (!api_value) return api_value;
13659
- return [...api_value, $b8hua$mergeProps(plp_meta(), {
13689
+ return [...api_value, $b8hua$mergeProps1(plp_meta(), {
13660
13690
  get page_url() {
13661
13691
  return href_accessor();
13662
13692
  }
@@ -13770,4 +13800,4 @@ function $8821a19349c36651$export$e2bf8ce7779e827e(props) {
13770
13800
  }, "Entire CategoryPage failed");
13771
13801
  }
13772
13802
  $b8hua$add_to_version_info("ui", (0, $8db9a15135765c11$export$83d89fbfd8236492));
13773
- export { $ff7feae4dddd6073$export$92aa5d691d588f3f as remap_blocks_to_index, $715f7f2e53146662$export$d4d96868197be50e as useMobileHover, $a35e6f680c5bbc60$export$54299a3c81f5425 as useVisibilityState, $002f09d00aac50b2$export$eaa625fb39439e37 as useSlidableInformation, $618bd53ea0a41cd4$export$80bb7300ce6a8be3 as useProductCardIsVisible, $618bd53ea0a41cd4$export$f223d69ed12f5fb7 as CurrentlyIntersectingContext, $8e8b179489080711$export$5bad61ecde080b1f as useExpandingContainerReactive, $bb34cd283e904784$export$2c9f9bf2092486aa as LooksSliderOrGrid, $22dd375b476673e2$export$44809a8a3e867e30 as LookCard, $ac571292d606f30b$export$7e1297a3a19f10d8 as PseudoRouter, $6d75ec14f537c37f$export$83bb9af5671e1dbe as promiseSafeStructuredClone, $68e6625c8d51f847$export$5162a71f252e6122 as preserve_items_in_history_dot_state, $68e6625c8d51f847$export$3064e1e8c6513da3 as prefixes_to_preserve_in_history_dot_state, $9b35d1384e31813a$export$29d28dadc2d6b631 as allowNativeNavigation, $b026fa9c9c904a98$export$1ea76ea778b880dd as modalVersionSymbol, $a604a8ffa4e4c03f$export$e417c49320921907 as createDeparallelizedNoDropResource, $01c33966d9ddb108$export$f50b88e2a00918b5 as throw_globally, $40411f2ec772c376$export$9265e66f26f8e383 as ClassicSearchModal, $06fcd2a345efd24d$export$b0c55aa2e87c4be7 as SearchModalV2, $98688279b9059f50$export$9d4a4b669b1929ab as ModernResponsiveContainedImage, $6a439680ae7e9ba3$export$3e41faf802a29e71 as Tab, $6a439680ae7e9ba3$export$b2539bed5023c21c as Tabs, $6b0fd8fd20df8ccf$export$d4973c31938cbfd1 as ShopTheLookButton, $972f6bce0f9d61be$export$e183a13865960371 as history_dot_state_to_state, $2855bffe06ef7a03$export$916e6850778505f6 as strip_encoded_filter_and_sort, $2855bffe06ef7a03$export$58aa3f171519b6d7 as encode_filters, $2855bffe06ef7a03$export$f934fa24c3a86811 as decode_filters, $2855bffe06ef7a03$export$62acb285a7579555 as encode_sorting, $2855bffe06ef7a03$export$766e9676e74997d3 as decode_sorting, $4df489344a0f97c7$export$d7b7ab832c20e2f4 as shopifyContainedImageContextSymbol, $5441862cd2f5e111$export$e68cff63f76bd15b as ListingProvider, $5441862cd2f5e111$export$8d0c4fdbb05a2f2e as useListing, $1e69163caedaab4e$export$11354f017ddc9790 as ProductCardIndexProvider, $1e69163caedaab4e$export$e3faf4d95300054f as useProductCardIndex, $4df489344a0f97c7$export$e4b984597b71e989 as ShopifyContainedImage, $002f09d00aac50b2$export$6649caad96ef8870 as SlidableItems, $fc830a7ee59416ef$export$ebdc3711f7e02ccd as make_accurate_width_accessor, $d5d7e58c5c9d8db0$export$9574e176201e5e8d as RecommendationSlider, $b432b11321ad4c97$export$9756467d34d91cdb as RecommendationGrid, $56047603f9d212b6$export$6e5611bc7e57e477 as ShopifyResponsiveImg, $56047603f9d212b6$export$e6fffe67d4cdd848 as makeSizeAccessor, $801e8845d3fa3653$export$94026ee33dbabc26 as ImageContainer, $74777e8fe65b3dcb$export$b69d0d92862de18b as SentryErrorBoundary, $74777e8fe65b3dcb$export$240ecf5363d76c0f as ExtraSentryContextProvider, $ad371564683947ab$export$6c6d7a51fa9aa15d as ExpandingDetails, $e18ab2868df26f40$export$f091cbac892643a4 as accessor_of_object_to_object_with_accessor_values, $4711a82d08d2021b$export$fecbb157621501bd as SelectedFilters, $f6b0500577e1b210$export$3f1a388cc0d8fed7 as FilterBody, $44aa24b1bb793549$export$b288c38ae3fddb56 as create_modified_filters, $63f1f8dbcd07d3b0$export$d21e32dfedac04be as SolidLayout, $63f1f8dbcd07d3b0$export$445d8d3f5f706a40 as SolidLayoutWithProvidedElement, $d5f1e6a0f9117286$export$79b1565500412d9b as general_modal_abstraction, $9783d437ad61594c$export$3b621d86b1566b2 as CrossIcon, $ca6ab5f08bd28bca$export$8be2714ec7f169ee as GenericSliderArrowButton, $50aebf5b445518eb$export$58e808b1db15d3bc as fetchDepictRecommendations, $fa332ea03168857c$export$b91cec6bdc6b32a1 as CategoryTitle, $702d7656a373973e$export$824dde41348efed1 as embedded_num_products, $160ea2b55d8772d2$export$c1a6b039e689a58e as get_listings, $f5f54892fd0c7d9f$export$f34314aa9505732e as DepictCategory, $eb064bc3350276c1$export$ac6237957a15b3f0 as DepictSearch, $eb064bc3350276c1$export$bde3eb976dfded9 as get_search_query_updating_blocked_signal, $eb064bc3350276c1$export$f2dc7e4e4aa11abb as SearchPage, $f3b7124b76123e44$export$aa14a9f43128f61f as ProductCardError, $169c13c0531d91d2$export$d86a33413558014e as open_modal_with_alignment, $5eaa00b951637e96$export$ee1733d9a8495996 as DefaultInstantCardPlaceholder, $1308a7816c3d4f2d$export$b3ad617e9036868 as align_field, $1308a7816c3d4f2d$export$3f238c96c45e6cc6 as ALIGN_TOP, $1308a7816c3d4f2d$export$902f8b4a7dae5d78 as ALIGN_WIDTH_ON_MODAL, $1308a7816c3d4f2d$export$7895aadd1956b1c7 as ALIGN_LEFT, $1308a7816c3d4f2d$export$6060bc6bee850eb6 as SET_CENTERED_LEFT, $a9c7ba6087881ac2$export$6daf8749b65a1b77 as convert_sdk_cols_at_size_to_layout, $cc64aabf2c7a1f1a$export$1233ca167bf71f9a as styles_to_valid_css_string, $e56d241d0f33d459$export$fe334901e8bebd57 as disable_scrolling, $573c007c697a1831$export$d0596b5cae35ad4 as open_search_with_shift_slash, $284849364a6ef73a$export$e015ed2f2950f2e3 as DepictAPI, $00a5b94f0c11efbb$export$d9f36cf74e24d595 as media_query_to_accessor, $e60a76195ac6d408$export$689e204eadb33baf as setup_fast_leave, $a61a2051e15c8d7a$export$5196e4c01fa56fcb as show_toast, $60ec7a29849d81db$export$a71e92cfbb498adc as SolidFormatPrice, $37e8c97bb6876197$export$828dcdd425fd3231 as connect_search_field_height_to_aligner_height, $bc2337c9a05ecd18$export$acb3eaade4b23afd as BasePlaceholder, $ceafb6fb91c6f394$export$89c6019e4baa40b1 as TextPlaceholder, $3ab4aa97880fb88d$export$3f37af283f8fb843 as ImagePlaceholder, $f9fd3017c20b774a$export$3ccaa27d81dd8556 as PageReplacer, $d399250dfa491636$export$864d304a0bc46829 as defaultGridSpacing, $d399250dfa491636$export$c3834fa86c616831 as defaultColsAtSize, $d399250dfa491636$export$7bf543b9d9be2c22 as defaultCategoryTitlePlugin, $8db9a15135765c11$export$83d89fbfd8236492 as version, $a3026fb727bc7550$export$316f6f283ae64765 as SearchField, $62a8813a51fbd22f$export$5b7c3ce0ebe51f86 as BreadCrumbs, $62a8813a51fbd22f$export$de035477d6fef996 as QuickLinks, $8821a19349c36651$export$e2bf8ce7779e827e as CategoryPage };
13803
+ export { $98688279b9059f50$export$140423fa4bfb6d63 as ModernResponsiveImage, $80c7883e020be192$export$f98b8d5ea7207a1 as setExtraDisplayTransformers, $80c7883e020be192$export$b2d94be4f02525b2 as getExtraDisplayTransformers, $ff7feae4dddd6073$export$92aa5d691d588f3f as remap_blocks_to_index, $715f7f2e53146662$export$d4d96868197be50e as useMobileHover, $a35e6f680c5bbc60$export$54299a3c81f5425 as useVisibilityState, $002f09d00aac50b2$export$eaa625fb39439e37 as useSlidableInformation, $618bd53ea0a41cd4$export$80bb7300ce6a8be3 as useProductCardIsVisible, $618bd53ea0a41cd4$export$f223d69ed12f5fb7 as CurrentlyIntersectingContext, $8e8b179489080711$export$5bad61ecde080b1f as useExpandingContainerReactive, $bb34cd283e904784$export$2c9f9bf2092486aa as LooksSliderOrGrid, $22dd375b476673e2$export$44809a8a3e867e30 as LookCard, $ac571292d606f30b$export$7e1297a3a19f10d8 as PseudoRouter, $6d75ec14f537c37f$export$83bb9af5671e1dbe as promiseSafeStructuredClone, $68e6625c8d51f847$export$5162a71f252e6122 as preserve_items_in_history_dot_state, $68e6625c8d51f847$export$3064e1e8c6513da3 as prefixes_to_preserve_in_history_dot_state, $9b35d1384e31813a$export$29d28dadc2d6b631 as allowNativeNavigation, $b026fa9c9c904a98$export$1ea76ea778b880dd as modalVersionSymbol, $a604a8ffa4e4c03f$export$e417c49320921907 as createDeparallelizedNoDropResource, $01c33966d9ddb108$export$f50b88e2a00918b5 as throw_globally, $40411f2ec772c376$export$9265e66f26f8e383 as ClassicSearchModal, $06fcd2a345efd24d$export$b0c55aa2e87c4be7 as SearchModalV2, $98688279b9059f50$export$9d4a4b669b1929ab as ModernResponsiveContainedImage, $6a439680ae7e9ba3$export$3e41faf802a29e71 as Tab, $6a439680ae7e9ba3$export$b2539bed5023c21c as Tabs, $6b0fd8fd20df8ccf$export$d4973c31938cbfd1 as ShopTheLookButton, $972f6bce0f9d61be$export$e183a13865960371 as history_dot_state_to_state, $2855bffe06ef7a03$export$916e6850778505f6 as strip_encoded_filter_and_sort, $2855bffe06ef7a03$export$58aa3f171519b6d7 as encode_filters, $2855bffe06ef7a03$export$f934fa24c3a86811 as decode_filters, $2855bffe06ef7a03$export$62acb285a7579555 as encode_sorting, $2855bffe06ef7a03$export$766e9676e74997d3 as decode_sorting, $4df489344a0f97c7$export$d7b7ab832c20e2f4 as shopifyContainedImageContextSymbol, $5441862cd2f5e111$export$e68cff63f76bd15b as ListingProvider, $5441862cd2f5e111$export$8d0c4fdbb05a2f2e as useListing, $1e69163caedaab4e$export$11354f017ddc9790 as ProductCardIndexProvider, $1e69163caedaab4e$export$e3faf4d95300054f as useProductCardIndex, $4df489344a0f97c7$export$e4b984597b71e989 as ShopifyContainedImage, $002f09d00aac50b2$export$6649caad96ef8870 as SlidableItems, $fc830a7ee59416ef$export$ebdc3711f7e02ccd as make_accurate_width_accessor, $d5d7e58c5c9d8db0$export$9574e176201e5e8d as RecommendationSlider, $b432b11321ad4c97$export$9756467d34d91cdb as RecommendationGrid, $56047603f9d212b6$export$6e5611bc7e57e477 as ShopifyResponsiveImg, $801e8845d3fa3653$export$94026ee33dbabc26 as ImageContainer, $74777e8fe65b3dcb$export$b69d0d92862de18b as SentryErrorBoundary, $74777e8fe65b3dcb$export$240ecf5363d76c0f as ExtraSentryContextProvider, $ad371564683947ab$export$6c6d7a51fa9aa15d as ExpandingDetails, $e18ab2868df26f40$export$f091cbac892643a4 as accessor_of_object_to_object_with_accessor_values, $4711a82d08d2021b$export$fecbb157621501bd as SelectedFilters, $f6b0500577e1b210$export$3f1a388cc0d8fed7 as FilterBody, $44aa24b1bb793549$export$b288c38ae3fddb56 as create_modified_filters, $63f1f8dbcd07d3b0$export$d21e32dfedac04be as SolidLayout, $63f1f8dbcd07d3b0$export$445d8d3f5f706a40 as SolidLayoutWithProvidedElement, $d5f1e6a0f9117286$export$79b1565500412d9b as general_modal_abstraction, $9783d437ad61594c$export$3b621d86b1566b2 as CrossIcon, $ca6ab5f08bd28bca$export$8be2714ec7f169ee as GenericSliderArrowButton, $50aebf5b445518eb$export$58e808b1db15d3bc as fetchDepictRecommendations, $fa332ea03168857c$export$b91cec6bdc6b32a1 as CategoryTitle, $702d7656a373973e$export$824dde41348efed1 as embedded_num_products, $160ea2b55d8772d2$export$c1a6b039e689a58e as get_listings, $f5f54892fd0c7d9f$export$f34314aa9505732e as DepictCategory, $eb064bc3350276c1$export$ac6237957a15b3f0 as DepictSearch, $eb064bc3350276c1$export$bde3eb976dfded9 as get_search_query_updating_blocked_signal, $eb064bc3350276c1$export$f2dc7e4e4aa11abb as SearchPage, $f3b7124b76123e44$export$aa14a9f43128f61f as ProductCardError, $169c13c0531d91d2$export$d86a33413558014e as open_modal_with_alignment, $5eaa00b951637e96$export$ee1733d9a8495996 as DefaultInstantCardPlaceholder, $1308a7816c3d4f2d$export$b3ad617e9036868 as align_field, $1308a7816c3d4f2d$export$3f238c96c45e6cc6 as ALIGN_TOP, $1308a7816c3d4f2d$export$902f8b4a7dae5d78 as ALIGN_WIDTH_ON_MODAL, $1308a7816c3d4f2d$export$7895aadd1956b1c7 as ALIGN_LEFT, $1308a7816c3d4f2d$export$6060bc6bee850eb6 as SET_CENTERED_LEFT, $a9c7ba6087881ac2$export$6daf8749b65a1b77 as convert_sdk_cols_at_size_to_layout, $cc64aabf2c7a1f1a$export$1233ca167bf71f9a as styles_to_valid_css_string, $e56d241d0f33d459$export$fe334901e8bebd57 as disable_scrolling, $573c007c697a1831$export$d0596b5cae35ad4 as open_search_with_shift_slash, $284849364a6ef73a$export$e015ed2f2950f2e3 as DepictAPI, $00a5b94f0c11efbb$export$d9f36cf74e24d595 as media_query_to_accessor, $e60a76195ac6d408$export$689e204eadb33baf as setup_fast_leave, $a61a2051e15c8d7a$export$5196e4c01fa56fcb as show_toast, $60ec7a29849d81db$export$a71e92cfbb498adc as SolidFormatPrice, $37e8c97bb6876197$export$828dcdd425fd3231 as connect_search_field_height_to_aligner_height, $bc2337c9a05ecd18$export$acb3eaade4b23afd as BasePlaceholder, $ceafb6fb91c6f394$export$89c6019e4baa40b1 as TextPlaceholder, $3ab4aa97880fb88d$export$3f37af283f8fb843 as ImagePlaceholder, $f9fd3017c20b774a$export$3ccaa27d81dd8556 as PageReplacer, $d399250dfa491636$export$864d304a0bc46829 as defaultGridSpacing, $d399250dfa491636$export$c3834fa86c616831 as defaultColsAtSize, $d399250dfa491636$export$7bf543b9d9be2c22 as defaultCategoryTitlePlugin, $8db9a15135765c11$export$83d89fbfd8236492 as version, $a3026fb727bc7550$export$316f6f283ae64765 as SearchField, $62a8813a51fbd22f$export$5b7c3ce0ebe51f86 as BreadCrumbs, $62a8813a51fbd22f$export$de035477d6fef996 as QuickLinks, $8821a19349c36651$export$e2bf8ce7779e827e as CategoryPage, $4be619ec2cd7bba3$export$54c6d6ff54e72743 as makeSizeAccessors };