@depict-ai/ui 4.7.33 → 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,44 +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.33";
14
-
15
- // Value first so shopify merchants can set (extra) display transformers in the shopify app
16
- // Calling these functions normally doesn't do anything, but our shopify app respects them
17
- // Them being here is value first too because this can be easily imported in the product card editor
18
- let $80c7883e020be192$var$extraDisplayTransformers;
19
- const $80c7883e020be192$export$b2d94be4f02525b2 = () => $80c7883e020be192$var$extraDisplayTransformers;
20
- const $80c7883e020be192$export$f98b8d5ea7207a1 = displayTransformers => $80c7883e020be192$var$extraDisplayTransformers = displayTransformers;
21
- function $00a5b94f0c11efbb$export$d9f36cf74e24d595(media_query) {
22
- const signal = $b8hua$createSignal(false);
23
- $b8hua$onCleanup($b8hua$javascript_media_query(media_query, _ref => {
24
- let {
25
- matches: matches
26
- } = _ref;
27
- return signal[1](matches);
28
- }).remove);
29
- 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
+ });
30
23
  }
31
- function $40e2fa435715a1a0$export$a79e666719b3647c(cols_at_size_) {
32
- const size_active = $b8hua$createMemo(() => cols_at_size_().map(_ref => {
33
- let [n_cols, min_width, max_width] = _ref;
34
- const media_query = $b8hua$layout_media_query_header(min_width, max_width).replaceAll("@media", "");
35
- const matches = $00a5b94f0c11efbb$export$d9f36cf74e24d595(media_query);
36
- return [matches, n_cols];
37
- }));
38
- const n_cols_currently_showing = $b8hua$createMemo(() => {
39
- try {
40
- const [, n_cols_currently_showing] = size_active().find(_ref2 => {
41
- let [media_query] = _ref2;
42
- 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_;
43
185
  });
44
- return n_cols_currently_showing;
45
- } catch (e) {
46
- $b8hua$dwarn("No active size found in columnsAtSize - can't render content blocks or looks");
47
- 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;
48
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
+ });
49
239
  });
50
- 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);
51
255
  }
52
256
  var $bc2337c9a05ecd18$var$_tmpl$ = ["<span", ' class="', '" style="', '"></span>'];
53
257
  function $bc2337c9a05ecd18$export$acb3eaade4b23afd(props) {
@@ -85,16 +289,203 @@ function $3ab4aa97880fb88d$export$3f37af283f8fb843(props) {
85
289
  }
86
290
  });
87
291
  }
88
- var $ff7feae4dddd6073$var$_tmpl$ = ["<div", ' class="', '" style="', '">', "</div>"];
89
- function $ff7feae4dddd6073$export$791ef57e62e21c3f(_ref) {
90
- let {
91
- content_blocks_: incoming_content_blocks,
92
- cols_at_size_: cols_at_size_,
93
- set_top_row_shortened_by_: set_top_row_shortened_by_
94
- } = _ref;
95
- // these are by row
96
- const [content_blocks, set_content_blocks] = $b8hua$createStore([]);
97
- const n_cols_currently_showing_ = $40e2fa435715a1a0$export$a79e666719b3647c(cols_at_size_);
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_);
98
489
  $b8hua$createEffect(() => {
99
490
  const incoming_value = incoming_content_blocks();
100
491
  if (!incoming_value) {
@@ -224,7 +615,7 @@ function $ff7feae4dddd6073$var$wrap_blocks_in_div(rendered_content_blocks, max_s
224
615
  })));
225
616
  }
226
617
  });
227
- return $b8hua$mergeProps(block, {
618
+ return $b8hua$mergeProps1(block, {
228
619
  // Create content divs for the blocks with as much fine-grained diffing as possible?
229
620
  content: () => {
230
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
@@ -295,11 +686,11 @@ function $715f7f2e53146662$var$doHeavyCalculations() {
295
686
  const [, setElementsHovered] = $715f7f2e53146662$var$elementsHoveredSignal;
296
687
  const elementAtTouch = new Map();
297
688
  const updateSet = () => setElementsHovered(new Set([...elementAtTouch.values()].filter(v => v)));
298
- const setPositionHandler = $b8hua$catchify(evt => {
689
+ const setPositionHandler = $b8hua$catchify1(evt => {
299
690
  for (const touch of evt.changedTouches) elementAtTouch.set(touch.identifier, document.elementFromPoint(touch.clientX, touch.clientY));
300
691
  updateSet();
301
692
  });
302
- const deleteTouchHandler = $b8hua$catchify(evt => {
693
+ const deleteTouchHandler = $b8hua$catchify1(evt => {
303
694
  for (const touch of evt.changedTouches) elementAtTouch.delete(touch.identifier);
304
695
  updateSet();
305
696
  });
@@ -425,20 +816,6 @@ function $cb64b315b25cfc59$var$unwrapping_helper(elements) {
425
816
  } else if (typeof elements == "function") result.push(...$cb64b315b25cfc59$var$unwrapping_helper(elements()));else if (elements != undefined && typeof elements != "boolean") result.push(elements);
426
817
  return result;
427
818
  }
428
- const $1e69163caedaab4e$var$ProductCardIndexContext = /*@__PURE__*/$b8hua$createContext();
429
- function $1e69163caedaab4e$export$11354f017ddc9790(props) {
430
- return $b8hua$createComponent($1e69163caedaab4e$var$ProductCardIndexContext.Provider, {
431
- get value() {
432
- return props.index_;
433
- },
434
- get children() {
435
- return props.children;
436
- }
437
- });
438
- }
439
- function $1e69163caedaab4e$export$e3faf4d95300054f() {
440
- return $b8hua$useContext($1e69163caedaab4e$var$ProductCardIndexContext);
441
- }
442
819
 
443
820
  /**
444
821
  * This is a function that will safely clone an object that may contain promises.
@@ -667,7 +1044,7 @@ function $618bd53ea0a41cd4$export$4a14175d33d81a96(_ref) {
667
1044
  };
668
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.
669
1046
  const shouldObserve = $b8hua$createMemo(() => alwaysObserveCards_ || listenersForIntersecting() > 0);
670
- const intersection_observer = new IntersectionObserver($b8hua$catchify1(records => {
1047
+ const intersection_observer = new IntersectionObserver($b8hua$catchify(records => {
671
1048
  const intersectingValue = currentlyIntersecting();
672
1049
  for (let i = 0; i < records.length; i++) {
673
1050
  const record = records[i];
@@ -963,7 +1340,7 @@ var $63f1f8dbcd07d3b0$var$_tmpl$ = ["<div", ' class="', '">', "</div>"],
963
1340
  $63f1f8dbcd07d3b0$var$_tmpl$2 = ["<style", ' type="text/css">', "</style>"];
964
1341
  function $63f1f8dbcd07d3b0$export$d21e32dfedac04be(props) {
965
1342
  const container_class = "x" + $b8hua$createUniqueId();
966
- const container_element_ = $b8hua$ssrElement("div", $b8hua$mergeProps1(() => props.element_attributes, {
1343
+ const container_element_ = $b8hua$ssrElement("div", $b8hua$mergeProps(() => props.element_attributes, {
967
1344
  classList: {
968
1345
  [container_class]: true
969
1346
  }
@@ -1023,531 +1400,170 @@ function $63f1f8dbcd07d3b0$export$445d8d3f5f706a40(props, container_element) {
1023
1400
  const max_rows = rows_or_empty_object().max_rows;
1024
1401
  if (!isNaN(max_rows) && max_rows >= 0 && rows_visible > max_rows) set_rows_visible()(max_rows);
1025
1402
  });
1026
- $b8hua$createEffect(() => set_force_style_update(" ")); // force style update after hydration due to https://discord.com/channels/722131463138705510/722167424186843267/1151544212517552168
1027
- $b8hua$createRenderEffect(() => {
1028
- // Be careful to only read show_all_rows in here (ofc doesn't apply to nested effects)
1029
- if (show_all_rows()) {
1030
- // no view more functionality requested
1031
- set_styling(() => col_styling);
1032
- return;
1033
- }
1034
- update_children_count();
1035
- if (!(0, $b8hua$isServer)) {
1036
- const mutation_observer = new MutationObserver($b8hua$catchify1(update_children_count));
1037
- mutation_observer.observe(container_element, {
1038
- childList: true
1039
- });
1040
- $b8hua$onCleanup(() => mutation_observer.disconnect());
1041
- }
1042
- set_styling(
1043
- // this is needed because solid will think that the memo-accessor is a setter function otherwise
1044
- () => $b8hua$createMemo(() => {
1045
- const {
1046
- rows_per_click: rows_per_click,
1047
- max_rows = -1,
1048
- start_rows: start_rows
1049
- } = rows_or_empty_object();
1050
- const rows_visible = get_rows_visible();
1051
- const children_count = get_children_count();
1052
- return force_style_update() + col_styling() + props.cols_at_size.map(options => {
1053
- const [recs_per_row, min, max] = options;
1054
- let should_hide_view_more_button;
1055
- let visible_recs;
1056
- if (props.disable_partial_rows) {
1057
- visible_recs = $b8hua$layout_get_visible_recs_without_partial_rows(rows_visible, children_count, options);
1058
- const visible_recs_next_show_more = $b8hua$layout_get_visible_recs_without_partial_rows(rows_visible + (rows_per_click || 0),
1059
- // Should this really be zero when we default rows_per_click to 1?
1060
- children_count, options);
1061
- should_hide_view_more_button = visible_recs === visible_recs_next_show_more;
1062
- } else {
1063
- visible_recs = $b8hua$layout_get_total_rec_amount_for_row(rows_visible, options);
1064
- should_hide_view_more_button = visible_recs >= children_count;
1065
- }
1066
- const should_hide_button_final = should_hide_view_more_button || max_rows !== -1 && rows_visible >= max_rows;
1067
- // 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
1068
- 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;
1069
- 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}") : "", "}");
1070
- }).join("");
1071
- }));
1072
- });
1073
- 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
1074
- if (insert_after_container) container_element.after(style_element);
1075
- return [container_element, view_more_button_container(), view_less_button_container(), style_element];
1076
- }
1077
- var $39ddb986053fb759$var$_tmpl$ = ["<h2", ' class="recs-title">', "</h2>"];
1078
- function $39ddb986053fb759$export$d41d19e89346fa2(_ref) {
1079
- let {
1080
- recommendations_resource_: recommendations_resource_,
1081
- product_card_template_: product_card_template_,
1082
- layout_options_: layout_options_,
1083
- title_: title_,
1084
- NoResultsFallback_: NoResultsFallback_,
1085
- placeholderCacheKey_: placeholderCacheKey_
1086
- } = _ref;
1087
- const is_showing_something = $b8hua$createMemo(() => {
1088
- var _recommendations_reso;
1089
- return recommendations_resource_.loading || ((_recommendations_reso = recommendations_resource_()) === null || _recommendations_reso === void 0 ? void 0 : _recommendations_reso.length);
1090
- });
1091
- const title = $b8hua$createMemo(() => title_ === null || title_ === void 0 ? void 0 : title_()); // In case getter/accessor creates elements, don't create them twice
1092
- const num_placeholders_ = () => 20;
1093
- const slider = [$b8hua$createComponent((0, $b8hua$Show), {
1094
- get when() {
1095
- return title();
1096
- },
1097
- get children() {
1098
- return $b8hua$ssr($39ddb986053fb759$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(title()));
1099
- }
1100
- }), $b8hua$createComponent((0, $002f09d00aac50b2$export$6649caad96ef8870), {
1101
- arrow_height_: 25,
1102
- arrow_width_: 12.5,
1103
- disable_fading_: true,
1104
- slider_ref_: slider => {
1105
- const {
1106
- insert_here: insert_here,
1107
- container: container
1108
- } = slider;
1109
- const Layout = props => $63f1f8dbcd07d3b0$export$445d8d3f5f706a40(props, insert_here, true);
1110
- // Do like this, so we don't have to call mergeProps ourselves
1111
- $b8hua$createComponent(Layout, $b8hua$mergeProps1({
1112
- rows: "all",
1113
- layout: "slider"
1114
- }, layout_options_));
1115
- $b8hua$slider_fractional_factory(0, 0.75).constructor_plugin.call(slider, {}); // enable fractional scrolling
1116
- insert_here.before($ca55612a53dbbdd2$export$a2cc176055f8f08());
1117
- container.classList.add("products");
1118
- },
1119
- get children() {
1120
- return $b8hua$createComponent((0, $b8hua$Suspense), {
1121
- get fallback() {
1122
- return $bdd80c7862246dc2$export$f33414a4df0afd3f({
1123
- num_placeholders_: num_placeholders_,
1124
- product_card_template_: product_card_template_,
1125
- placeholderCacheKey_: placeholderCacheKey_
1126
- });
1127
- },
1128
- get children() {
1129
- return (() => {
1130
- // IIFE to make sure we access both the recommendations_resource and the resources containing the product card rendering results themselves within the Suspense boundary
1131
- const displays_by_key_ = $2d7bad8684bc7f44$export$7f8bd308237ab5a5($b8hua$createMemo(() => recommendations_resource_() || []));
1132
- const {
1133
- renderedDisplays_: renderedDisplays_
1134
- } = $618bd53ea0a41cd4$export$4a14175d33d81a96({
1135
- displays_by_key_: displays_by_key_,
1136
- product_card_template_: product_card_template_
1137
- });
1138
- return renderedDisplays_;
1139
- })();
1140
- }
1141
- });
1142
- }
1143
- })];
1144
- return $b8hua$createComponent((0, $b8hua$Show), {
1145
- get when() {
1146
- return is_showing_something();
1147
- },
1148
- get fallback() {
1149
- return NoResultsFallback_ === null || NoResultsFallback_ === void 0 ? void 0 : NoResultsFallback_();
1150
- },
1151
- children: slider
1152
- });
1153
- }
1154
- function $83e8cf2c0b87a58a$export$23fca46f3143581f(component, error_message) {
1155
- const component_in_error_boundary = do_with_elements => {
1156
- const error_boundary_wrapped = $74777e8fe65b3dcb$export$b69d0d92862de18b({
1157
- severity_: "error",
1158
- message_: error_message,
1159
- get children() {
1160
- const elements = component();
1161
- do_with_elements === null || do_with_elements === void 0 || do_with_elements(elements);
1162
- return elements;
1163
- }
1164
- });
1165
- // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
1166
- if (typeof error_boundary_wrapped === "function")
1167
- // @ts-ignore
1168
- return error_boundary_wrapped();
1169
- // On the server it returns a string, so we just return that
1170
- return error_boundary_wrapped;
1171
- };
1172
- const owner = $b8hua$getOwner();
1173
- if (owner == null) return $b8hua$createRoot(dispose => {
1174
- // 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
1175
- return component_in_error_boundary(elements => {
1176
- const have_multiple = Array.isArray(elements);
1177
- if (have_multiple ? !(elements !== null && elements !== void 0 && elements.length) : !elements) return;
1178
- (0, $b8hua$observer).onremoved(have_multiple ? elements[0] : elements, _ref => {
1179
- let {
1180
- element: element
1181
- } = _ref;
1182
- if (document.documentElement.contains(element)) return; // If element has instantly been re-inserted, don't dispose
1183
- // See https://depictaiworkspace.slack.com/archives/C050GHEPBTR/p1695809102791259?thread_ts=1695106805.459729&cid=C050GHEPBTR
1184
- dispose();
1185
- });
1186
- });
1187
- });else
1188
- // we're already in a root so cleanups are handled
1189
- return component_in_error_boundary();
1190
- }
1191
- const $5441862cd2f5e111$var$ListingContext = /*@__PURE__*/$b8hua$createContext();
1192
- function $5441862cd2f5e111$export$e68cff63f76bd15b(props) {
1193
- const our_object = {};
1194
- return $b8hua$createComponent($5441862cd2f5e111$var$ListingContext.Provider, {
1195
- value: our_object,
1196
- get children() {
1197
- return props.children;
1198
- }
1199
- });
1200
- }
1201
- function $5441862cd2f5e111$export$8d0c4fdbb05a2f2e() {
1202
- return $b8hua$useContext($5441862cd2f5e111$var$ListingContext);
1203
- }
1204
- function $ceafb6fb91c6f394$export$89c6019e4baa40b1(props) {
1205
- const style = $b8hua$createMemo(() => {
1206
- const {
1207
- style: style,
1208
- height: height,
1209
- width: width
1210
- } = props;
1211
- return {
1212
- ...(style || {}),
1213
- height: height !== null && height !== void 0 ? height : "1em",
1214
- ...(width && {
1215
- width: width
1216
- })
1217
- };
1218
- });
1219
- return $b8hua$createComponent((0, $bc2337c9a05ecd18$export$acb3eaade4b23afd), {
1220
- get style() {
1221
- return style();
1222
- },
1223
- get ["class"]() {
1224
- return props.class;
1225
- }
1226
- });
1227
- }
1228
- 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>"];
1229
- const $5eaa00b951637e96$export$8a2234b5b1a5ebd4 = "--image-aspect-ratio";
1230
- function $5eaa00b951637e96$export$ee1733d9a8495996() {
1231
- return $b8hua$ssr($5eaa00b951637e96$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape($b8hua$createComponent((0, $3ab4aa97880fb88d$export$3f37af283f8fb843), {
1232
- aspectRatio: "var(".concat($5eaa00b951637e96$export$8a2234b5b1a5ebd4, ", 1)")
1233
- })), $b8hua$escape($b8hua$createComponent((0, $ceafb6fb91c6f394$export$89c6019e4baa40b1), {
1234
- width: "20ch",
1235
- height: "1em"
1236
- })), $b8hua$escape($b8hua$createComponent((0, $ceafb6fb91c6f394$export$89c6019e4baa40b1), {
1237
- width: "5ch",
1238
- height: "1em",
1239
- "class": "price"
1240
- })));
1241
- }
1242
- var $801e8845d3fa3653$var$_tmpl$ = ["<div", ' style="', '"', ">", "</div>"];
1243
- function $801e8845d3fa3653$export$94026ee33dbabc26(props) {
1244
- 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));
1245
- }
1246
- let $6db93f70c2db1486$var$browserIsBugged = false;
1247
- function $6db93f70c2db1486$export$2972b890694ced75(callback, _ref) {
1248
- let {
1249
- timeout: timeout
1250
- } = _ref;
1251
- if ($6db93f70c2db1486$var$browserIsBugged) timeout /= 4;
1252
- const cancel = () => {
1253
- cancelIdleCallback(idleHandle);
1254
- clearTimeout(racingTimeout);
1255
- };
1256
- const idleHandle = requestIdleCallback(deadline => {
1257
- cancel();
1258
- return callback(deadline);
1259
- }, {
1260
- timeout: timeout
1261
- });
1262
- const racingTimeout = setTimeout(() => {
1263
- $b8hua$dwarn("Browser did not respect requestIdleCallback timeout");
1264
- $6db93f70c2db1486$var$browserIsBugged = true;
1265
- cancel();
1266
- callback({
1267
- didTimeout: false,
1268
- timeRemaining() {
1269
- return 500;
1270
- }
1271
- });
1272
- }, timeout + 1000);
1273
- return cancel;
1274
- }
1275
- function $56047603f9d212b6$export$e6fffe67d4cdd848(whatToWatch) {
1276
- const [size, setSize] = $b8hua$createSignal(0);
1277
- const resizeObserver = new ResizeObserver($b8hua$catchify1(records => {
1278
- for (let j = 0; j < records.length; j++) {
1279
- const {
1280
- width: width
1281
- } = records[j].contentRect;
1282
- if (!width) continue;
1283
- setSize(Math.ceil(width));
1284
- }
1285
- }));
1286
- // 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.
1287
- // It doesn't seem to work even when waiting for it to be in the DOM, also wait an animation frame
1288
- const disconnect = (0, $b8hua$observer).onexists(whatToWatch, _ref => {
1289
- let {
1290
- element: element
1291
- } = _ref;
1292
- return requestAnimationFrame($b8hua$catchify1(() => resizeObserver.observe(element)));
1293
- });
1294
- $b8hua$onCleanup(() => {
1295
- resizeObserver.disconnect();
1296
- disconnect();
1297
- });
1298
- return size;
1299
- }
1300
- const $56047603f9d212b6$var$onIdleFunctionsSymbol = /*@__PURE__*/Symbol("onIdleFunctions");
1301
- const $56047603f9d212b6$export$f8945274f08a3105 = /*@__PURE__*/Symbol("listingContextAspectRatios");
1302
- const $56047603f9d212b6$export$6066eb417ed2e9f7 = /*@__PURE__*/Symbol("listingContextAspectRatios");
1303
- function $56047603f9d212b6$export$6e5611bc7e57e477(props) {
1304
- const src_options = $b8hua$createMemo(() => {
1305
- const {
1306
- src: src,
1307
- customUrls: customUrls
1308
- } = props;
1309
- const fallback_src = (customUrls || $56047603f9d212b6$export$1d6267828870adda)(src, 400);
1310
- 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);
1311
- // The order here *might* matter - I've seen mobile safari always start with loading the 400px version when it was reversed
1312
- return {
1313
- srcset: srcset,
1314
- src: fallback_src
1315
- };
1316
- });
1317
- // Work around https://github.com/solidjs/solid/issues/1828
1318
- const img = new Image(); // Need to use new Image or browser might not start loading image before it's in the DOM
1319
- 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 <-
1320
- ]);
1321
-
1322
- const [hasSetSize, setHasSetSize] = $b8hua$createSignal(false);
1323
- const [hasDecoded, setHasDecoded] = $b8hua$createSignal(false);
1324
- const productCardIndexAccessor = $1e69163caedaab4e$export$e3faf4d95300054f();
1325
- 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
1326
- const listingContext = $5441862cd2f5e111$export$8d0c4fdbb05a2f2e();
1327
- const isPrioritisedImage = $b8hua$createMemo(() => (productCardIndexAccessor === null || productCardIndexAccessor === void 0 ? void 0 : productCardIndexAccessor()) < 8);
1328
- const shouldActuallyEnableLazyLoading = $b8hua$createMemo(() => {
1329
- const {
1330
- loading: loading
1331
- } = props;
1332
- if (loading === "force-lazy") return true;
1333
- return loading === "lazy" && !isPrioritisedImage();
1334
- });
1335
- const modifiedOtherAttributes = $b8hua$mergeProps(otherAttributes, {
1336
- get loading() {
1337
- return shouldActuallyEnableLazyLoading() ? "lazy" : undefined;
1338
- }
1339
- });
1340
- // 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
1341
- // Happened on singular, they have some weird observer (+we also have one but ours is at least 3x more efficient)
1342
- const executeWhenIdleBatched = (fn, isSizesUpdate) => {
1343
- if (typeof requestIdleCallback !== "function") return setTimeout(fn); // Old browsers don't get optimisation
1344
- if ((!isSizesUpdate || !sizeSetFastPath) && $b8hua$untrack(isPrioritisedImage)) return fn(); // If we're one of the first 8 images, execute the callbacks immediately (improves lighthouse metrics)
1345
- // 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)
1346
- const existingStack = listingContext === null || listingContext === void 0 ? void 0 : listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol];
1347
- if (existingStack) return existingStack.add(fn);
1348
- const newStack = new Set([fn]);
1349
- if (listingContext) listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol] = newStack;
1350
- const processStackWhenIdle = () => $6db93f70c2db1486$export$2972b890694ced75($b8hua$catchify1(deadline => {
1351
- const start = performance.now();
1352
- const thirdDeadlineTime = deadline.timeRemaining() / 3; // observers coming after this take up 2-3x the time so don't use all of it
1353
- for (const fn of newStack) {
1354
- newStack.delete(fn);
1355
- fn();
1356
- const timeTaken = performance.now() - start;
1357
- if ((!deadline.timeRemaining() || timeTaken > thirdDeadlineTime) && newStack.size) {
1358
- // There's still work to be done but no time, so schedule another idle callback
1359
- processStackWhenIdle();
1360
- return;
1361
- }
1362
- }
1363
- // Stack is empty
1364
- if (listingContext) delete listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol];
1365
- }), {
1366
- timeout: 15000
1367
- } // 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
1368
- );
1369
-
1370
- processStackWhenIdle();
1371
- };
1372
- let sizeSetFastPath = false;
1373
- let hasDecodedFastPath = false;
1374
- let timeoutSet = false;
1375
- let gotCleanedUp = false;
1376
- let srcJustChanged = true;
1377
- img.classList.add("s-responsive-image");
1378
- if (listingContext) {
1379
- let prevValue;
1380
- const aspectRatios = listingContext[$56047603f9d212b6$export$f8945274f08a3105] || (listingContext[$56047603f9d212b6$export$f8945274f08a3105] = new Set());
1381
- const [, setMostPrevalentAspectRatio] = listingContext[$56047603f9d212b6$export$6066eb417ed2e9f7] || (listingContext[$56047603f9d212b6$export$6066eb417ed2e9f7] = $b8hua$createSignal());
1382
- img.addEventListener("load", $b8hua$catchify1(() => {
1383
- if (props.keyRatioUpdating) {
1384
- if (!srcJustChanged) return;
1385
- srcJustChanged = false;
1386
- }
1387
- // 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
1388
- const aspectRatio_ = img.naturalWidth / img.naturalHeight;
1389
- if (prevValue) aspectRatios.delete(prevValue);
1390
- const newValue = !isNaN(aspectRatio_) ? {
1391
- aspectRatio_: aspectRatio_
1392
- } : undefined;
1393
- if (newValue) aspectRatios.add(newValue);
1394
- prevValue = newValue;
1395
- // Do all calculations resulting of an update directly, for performance
1396
- const asArray = [...aspectRatios].map(_ref2 => {
1397
- let {
1398
- aspectRatio_: aspectRatio_
1399
- } = _ref2;
1400
- return aspectRatio_;
1401
- });
1402
- const mostPrevalentAspectRatio = $b8hua$findMostFrequentItem(asArray);
1403
- setMostPrevalentAspectRatio(mostPrevalentAspectRatio);
1404
- }));
1405
- $b8hua$onCleanup(() => prevValue && aspectRatios.delete(prevValue));
1406
- }
1407
- $b8hua$onCleanup(() => gotCleanedUp = true);
1408
- $b8hua$spread(img, $b8hua$mergeProps(modifiedOtherAttributes), false, true);
1409
- $b8hua$createRenderEffect(() => {
1410
- props.src;
1411
- srcJustChanged = true;
1412
- });
1413
- $b8hua$createEffect(() => {
1414
- if (!props.size()) return; // wait until we have a size, run every time the size changes
1415
- if (timeoutSet) return;
1416
- const handler = $b8hua$catchify1(() => {
1417
- if (gotCleanedUp) return;
1418
- img.sizes = sizePX(); // use latest available value of props.size
1419
- if (!sizeSetFastPath) {
1420
- setHasSetSize(true);
1421
- sizeSetFastPath = true;
1422
- }
1423
- timeoutSet = false;
1424
- });
1425
- // Throttle the updating of sizes to avoid unnecessary image re-fetches during resize
1426
- // And also because we first set src after sizes has been set, wait with loading and decoding images until browser is idle
1427
- // This greatly improves performance when loading (more) products
1428
- // See https://depictaiworkspace.slack.com/archives/C05NJ0K3WRL/p1698220617663139
1429
- timeoutSet = true; // Important to set timeoutSet before the call to executeWhenIdleBatched since if this is an important image executeWhenIdleBatched will execute fn immediately
1430
- executeWhenIdleBatched(handler, true);
1431
- });
1432
- 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
1433
- $b8hua$createEffect(() => {
1434
- 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
1435
- Object.assign(img, src_options());
1436
- // Add to DOM once decoded to not require/block any paints before image has completed loading and avoid showing broken image symbol
1437
- // We can do this because there has to be a container around us giving us a size
1438
- // No need to listen if we're already in the DOM
1439
- if (hasDecodedFastPath) return;
1440
- if (shouldActuallyEnableLazyLoading()) {
1441
- // For lazy loading there's no decoding to wait for as it only occurs when the image is visible
1442
- // Make sure src is set before we put the image into the DOM though so no broken image symbol is shown
1443
- setHasDecoded(true);
1444
- hasDecodedFastPath = true;
1403
+ $b8hua$createEffect(() => set_force_style_update(" ")); // force style update after hydration due to https://discord.com/channels/722131463138705510/722167424186843267/1151544212517552168
1404
+ $b8hua$createRenderEffect(() => {
1405
+ // Be careful to only read show_all_rows in here (ofc doesn't apply to nested effects)
1406
+ if (show_all_rows()) {
1407
+ // no view more functionality requested
1408
+ set_styling(() => col_styling);
1445
1409
  return;
1446
1410
  }
1447
- 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"
1448
- .then(async () => {
1449
- // Also wait with inserting image (i.e. paint) until browser is idle
1450
- await new Promise(r => executeWhenIdleBatched(r, false));
1451
- if (gotCleanedUp) return;
1452
- setHasDecoded(true);
1453
- hasDecodedFastPath = true;
1454
- });
1411
+ update_children_count();
1412
+ if (!(0, $b8hua$isServer)) {
1413
+ const mutation_observer = new MutationObserver($b8hua$catchify(update_children_count));
1414
+ mutation_observer.observe(container_element, {
1415
+ childList: true
1416
+ });
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("");
1448
+ }));
1449
+ });
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);
1455
1467
  });
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()));
1476
+ }
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
+ })];
1456
1521
  return $b8hua$createComponent((0, $b8hua$Show), {
1457
1522
  get when() {
1458
- return hasDecoded();
1523
+ return is_showing_something();
1459
1524
  },
1460
- children: img
1525
+ get fallback() {
1526
+ return NoResultsFallback_ === null || NoResultsFallback_ === void 0 ? void 0 : NoResultsFallback_();
1527
+ },
1528
+ children: slider
1461
1529
  });
1462
1530
  }
1463
- function $56047603f9d212b6$var$make_srcset(url, resolutions, customGenerateImageUrl_) {
1464
- return resolutions.map(width => "".concat((customGenerateImageUrl_ || $56047603f9d212b6$export$1d6267828870adda)(url, width), " ").concat(width, "w")).join(", ");
1465
- }
1466
- function $56047603f9d212b6$export$1d6267828870adda(url, width) {
1467
- // 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)
1468
- // 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)
1469
- // That way we can just to string concatenation which is insanely fast
1470
- return url + "&width=" + encodeURIComponent(width);
1471
- }
1472
- const $4df489344a0f97c7$var$backupSizeSignal = /*@__PURE__*/$b8hua$createSignal();
1473
- const $4df489344a0f97c7$export$d7b7ab832c20e2f4 = /*@__PURE__*/Symbol("ShopifyContainedImage");
1474
- function $4df489344a0f97c7$export$e4b984597b71e989(props) {
1475
- const context = $5441862cd2f5e111$export$8d0c4fdbb05a2f2e();
1476
- if (context && !context[$4df489344a0f97c7$export$d7b7ab832c20e2f4])
1477
- // create a signal that's the same for all items in this listing
1478
- context[$4df489344a0f97c7$export$d7b7ab832c20e2f4] = $b8hua$createSignal();
1479
- 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
1480
- const [mostPrevalentAspectRatio] = context ? context[(0, $56047603f9d212b6$export$6066eb417ed2e9f7)] || (context[(0, $56047603f9d212b6$export$6066eb417ed2e9f7)] = $b8hua$createSignal()) : [];
1481
- const container = $801e8845d3fa3653$export$94026ee33dbabc26({
1482
- // Write getters manually instead of using JSX, so we can do more complex logic in the aspectRatio getter without increasing bundle size
1483
- get class() {
1484
- return props.class;
1485
- },
1486
- get aspectRatio() {
1487
- if (props.autoAdjustAspectRatio) {
1488
- const targetRatio = mostPrevalentAspectRatio === null || mostPrevalentAspectRatio === void 0 ? void 0 : mostPrevalentAspectRatio();
1489
- 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;
1490
1540
  }
1491
- return props.aspectRatio;
1492
- }
1493
- });
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
+ };
1494
1549
  const owner = $b8hua$getOwner();
1495
- let createdSizeAccessor = false;
1496
- let wasCleanedUp = false;
1497
- $b8hua$createEffect(() => {
1498
- if (currentImageSize() || wasCleanedUp) return; // We get into the effect when onCleanup is called if we don't have wasCleanedUp
1499
- // ensure we always have a size accessor
1500
- // 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
1501
- createdSizeAccessor = true;
1502
- setCurrentImageSize(() => $b8hua$runWithOwner(owner, () => $56047603f9d212b6$export$e6fffe67d4cdd848(container)));
1503
- });
1504
- $b8hua$onCleanup(() => {
1505
- wasCleanedUp = true; // important to set this before the function call below and always, so the dead effects don't create dead size accessors
1506
- if (!createdSizeAccessor) return;
1507
- $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
1508
- });
1509
-
1510
- $b8hua$insert(container, $b8hua$createComponent((0, $56047603f9d212b6$export$6e5611bc7e57e477), $b8hua$mergeProps1({
1511
- get size() {
1512
- return $b8hua$createMemo(() => {
1513
- var _currentImageSize;
1514
- 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();
1515
1562
  });
1516
- },
1517
- get src() {
1518
- return props.src;
1519
- }
1520
- }, () => props.imgProps, {
1521
- get style() {
1522
- var _props$imgProps;
1523
- return (_props$imgProps = props.imgProps) === null || _props$imgProps === void 0 ? void 0 : _props$imgProps.style;
1524
- }
1525
- })));
1526
- return container;
1527
- }
1528
- const $98688279b9059f50$var$customUrls = (url, width) => {
1529
- var _url$startsWith;
1530
- if (url !== null && url !== void 0 && (_url$startsWith = url.startsWith) !== null && _url$startsWith !== void 0 && _url$startsWith.call(url, "https://cdn.shopify.com"))
1531
- // 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,
1532
- // 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.
1533
- return $56047603f9d212b6$export$1d6267828870adda(url, width);
1534
- // 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)
1535
- return "https://app.depict.ai/cdn-cgi/image/width=".concat(width, ",format=auto/").concat(url);
1536
- };
1537
- function $98688279b9059f50$export$9d4a4b669b1929ab(props) {
1538
- return $b8hua$createComponent((0, $4df489344a0f97c7$export$e4b984597b71e989), $b8hua$mergeProps1(props, {
1539
- get imgProps() {
1540
- return {
1541
- ...props.imgProps,
1542
- customUrls: $98688279b9059f50$var$customUrls
1543
- };
1544
- }
1545
- }));
1546
- }
1547
- function $98688279b9059f50$export$140423fa4bfb6d63(props) {
1548
- return $b8hua$createComponent((0, $56047603f9d212b6$export$6e5611bc7e57e477), $b8hua$mergeProps1(props, {
1549
- customUrls: $98688279b9059f50$var$customUrls
1550
- }));
1563
+ });
1564
+ });else
1565
+ // we're already in a root so cleanups are handled
1566
+ return component_in_error_boundary();
1551
1567
  }
1552
1568
  function $60ec7a29849d81db$export$a71e92cfbb498adc(props) {
1553
1569
  return $b8hua$createMemo(() => {
@@ -1599,7 +1615,7 @@ function $f84b097e079b0a33$export$b73ed90f0ee50dc3(_ref) {
1599
1615
  var _variantToUse5;
1600
1616
  return (_variantToUse5 = variantToUse()) === null || _variantToUse5 === void 0 ? void 0 : _variantToUse5.title;
1601
1617
  });
1602
- return $b8hua$ssrElement("a", $b8hua$mergeProps1({
1618
+ return $b8hua$ssrElement("a", $b8hua$mergeProps({
1603
1619
  "class": "look-item"
1604
1620
  }, () => enableLink() ? {
1605
1621
  href: href()
@@ -1643,7 +1659,7 @@ function $f84b097e079b0a33$export$b73ed90f0ee50dc3(_ref) {
1643
1659
  return (animationEffectExists() ? isExpandedThrottledByOurEffectRun() : userWantsExpanded()) || animationIsRunning();
1644
1660
  },
1645
1661
  get children() {
1646
- 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({
1647
1663
  "class": "d-title line-clamp"
1648
1664
  }, () => title() && {
1649
1665
  title: title()
@@ -1739,7 +1755,7 @@ async function $c4103af154850e50$var$checkIfIsAffectedByChromeBug326498383() {
1739
1755
  const waitAFrame = () => new Promise(r => requestAnimationFrame(() => requestAnimationFrame(r)));
1740
1756
  const timeoutPromise = new Promise(r => {
1741
1757
  resolveTimeoutPromise = r;
1742
- setTimeout($b8hua$catchify1(() => {
1758
+ setTimeout($b8hua$catchify(() => {
1743
1759
  r();
1744
1760
  div.remove();
1745
1761
  }), 500);
@@ -1824,7 +1840,7 @@ function $275d06a183ca0a29$export$ebf0b1d4f90c09ae(_ref) {
1824
1840
  priceFormatting_: priceFormatting_,
1825
1841
  outerRef_: el => $b8hua$createEffect(() => {
1826
1842
  if (index !== 0) return;
1827
- 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)));
1828
1844
  resizeObserver.observe(el);
1829
1845
  $b8hua$onCleanup(() => resizeObserver.disconnect());
1830
1846
  })
@@ -1843,7 +1859,7 @@ function $275d06a183ca0a29$var$scrollingFunctionForChrome(element, targetScrollY
1843
1859
  let start;
1844
1860
  const startingY = element.scrollTop;
1845
1861
  const diff = targetScrollY - startingY;
1846
- const step = $b8hua$catchify1(timestamp => {
1862
+ const step = $b8hua$catchify(timestamp => {
1847
1863
  if (!start) start = timestamp;
1848
1864
  // Elapsed milliseconds since start of scrolling.
1849
1865
  const time = timestamp - start;
@@ -1875,7 +1891,7 @@ function $22dd375b476673e2$export$44809a8a3e867e30(_ref) {
1875
1891
  const index = $1e69163caedaab4e$export$e3faf4d95300054f();
1876
1892
  const [containerWidth_, setContainerWidth] = $b8hua$createSignal();
1877
1893
  const [containerHeight_, setContainerHeight] = $b8hua$createSignal();
1878
- const clickHandler = $b8hua$catchify1(_ref2 => {
1894
+ const clickHandler = $b8hua$catchify(_ref2 => {
1879
1895
  let {
1880
1896
  target: target
1881
1897
  } = _ref2;
@@ -2005,7 +2021,7 @@ class $ac571292d606f30b$export$7e1297a3a19f10d8 {
2005
2021
  * @param is_replace_ if you want to replace the current URL in history instead of pushing a new one
2006
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
2007
2023
  */
2008
- go_to_: $b8hua$catchify1(async _ref => {
2024
+ go_to_: $b8hua$catchify(async _ref => {
2009
2025
  let {
2010
2026
  new_url_: raw_new_url,
2011
2027
  event_: event_,
@@ -2119,7 +2135,7 @@ function $e3efeb558d952696$export$7da560f849543dff(_ref) {
2119
2135
  get children() {
2120
2136
  return $b8hua$ssr($e3efeb558d952696$var$_tmpl$2, $b8hua$ssrHydrationKey(), $b8hua$escape(title()));
2121
2137
  }
2122
- }), $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({
2123
2139
  get rows() {
2124
2140
  return rows_object_();
2125
2141
  },
@@ -2250,7 +2266,7 @@ function $bb34cd283e904784$export$2c9f9bf2092486aa(props) {
2250
2266
  return $b8hua$createComponent((0, $39ddb986053fb759$export$d41d19e89346fa2), sharedOptions);
2251
2267
  },
2252
2268
  get children() {
2253
- return $b8hua$createComponent((0, $e3efeb558d952696$export$7da560f849543dff), $b8hua$mergeProps1(sharedOptions, {
2269
+ return $b8hua$createComponent((0, $e3efeb558d952696$export$7da560f849543dff), $b8hua$mergeProps(sharedOptions, {
2254
2270
  view_more_button_: () => {
2255
2271
  var _props$gridOptions_;
2256
2272
  return (_props$gridOptions_ = props.gridOptions_) === null || _props$gridOptions_ === void 0 ? void 0 : _props$gridOptions_.view_more_button;
@@ -2309,7 +2325,7 @@ async function $bb34cd283e904784$var$runDisplayTransformersForLooks(baseData, li
2309
2325
  }) : displaysToTransform;
2310
2326
  const transformedListings = await transformedListingsPromise;
2311
2327
  const transformedDisplayById = Object.fromEntries(transformedProducts.map(display => [$6a4c7ed6d005505c$export$548d053aba053d79(display), display]));
2312
- return transformedListings.map(listing => $b8hua$mergeProps(listing, {
2328
+ return transformedListings.map(listing => $b8hua$mergeProps1(listing, {
2313
2329
  // use mergeProps because in preview browser we add getters in this object, that would be called too early otherwise
2314
2330
  displays: (displayIdsPerListingId[listing.listing_id] || []).map(displayId => transformedDisplayById[displayId]).filter(v => v)
2315
2331
  }));
@@ -2548,7 +2564,7 @@ function $f7414b949aeabc90$export$62f101a8aa597bf8(_ref) {
2548
2564
  // don't wait if it's the first request
2549
2565
  write_current_instant_query(value);
2550
2566
  clearTimeout(timeout);
2551
- timeout = setTimeout($b8hua$catchify1(() => write_current_instant_query(value)), 250);
2567
+ timeout = setTimeout($b8hua$catchify(() => write_current_instant_query(value)), 250);
2552
2568
  });
2553
2569
  const [search_results] = $b8hua$createResource($b8hua$createMemo(() => ({
2554
2570
  // <-- key order important, see comment below
@@ -2556,7 +2572,7 @@ function $f7414b949aeabc90$export$62f101a8aa597bf8(_ref) {
2556
2572
  market: market_(),
2557
2573
  locale: i18n_.backend_locale_(),
2558
2574
  query: read_current_instant_query()
2559
- })), $b8hua$catchify1(async variable_data => {
2575
+ })), $b8hua$catchify(async variable_data => {
2560
2576
  return depict_api_.query({
2561
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
2562
2578
  limit: $b8hua$untrack(has_sort_or_filters_) ? max_cards : min_products_to_fetch_,
@@ -2672,7 +2688,7 @@ function $a09bb7c652acf957$export$3340fdd8259bd4fd(_ref) {
2672
2688
  if (process.env.GA === "false") return;
2673
2689
  let debounce_timeout;
2674
2690
  const stop_timeout = () => clearTimeout(debounce_timeout);
2675
- const send_to_ga = $b8hua$catchify1(() => {
2691
+ const send_to_ga = $b8hua$catchify(() => {
2676
2692
  const fake_url = new URL(location.href);
2677
2693
  const {
2678
2694
  searchParams: searchParams
@@ -2685,12 +2701,12 @@ function $a09bb7c652acf957$export$3340fdd8259bd4fd(_ref) {
2685
2701
  $b8hua$onCleanup(() => {
2686
2702
  setTimeout(
2687
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
2688
- $b8hua$catchify1(() => {
2704
+ $b8hua$catchify(() => {
2689
2705
  if ($b8hua$untrack(get_search_query_) === $b8hua$untrack(get_search_field_value_)) stop_timeout();
2690
2706
  }));
2691
2707
  });
2692
2708
  let first_call = true;
2693
- $b8hua$createEffect($b8hua$catchify1(() => {
2709
+ $b8hua$createEffect($b8hua$catchify(() => {
2694
2710
  get_search_field_value_();
2695
2711
  if (first_call) {
2696
2712
  // we only want to do stuff when it changes
@@ -2710,7 +2726,7 @@ function $e8776b492383c292$export$91c3b6774e8be0f5(_ref) {
2710
2726
  const [get_current_href, set_current_href] = $b8hua$createSignal(location.href);
2711
2727
  const [exit_iterable, exitable_iterable] = $b8hua$make_asyncIterable_exiter((0, $b8hua$href_change_ipns));
2712
2728
  $b8hua$onCleanup(exit_iterable);
2713
- $b8hua$catchify1(async () => {
2729
+ $b8hua$catchify(async () => {
2714
2730
  for await (const href of exitable_iterable)
2715
2731
  // use native links so ppl can cmdclick/right click and open in new tab and see target URL
2716
2732
  set_current_href(href);
@@ -2729,7 +2745,7 @@ function $6d95ef50ee01d5a1$export$5d2caaa6b530761c() {
2729
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>';
2730
2746
  function $9783d437ad61594c$export$3b621d86b1566b2() {
2731
2747
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2732
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
2748
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
2733
2749
  xmlns: "http://www.w3.org/2000/svg",
2734
2750
  width: "21.064",
2735
2751
  height: "21.064",
@@ -2835,7 +2851,7 @@ function $02b6641aa50ce528$export$ba17c5b7e6dda39f(_ref) {
2835
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>';
2836
2852
  function $ef0f18a578b32578$export$82eafebb825fc23f() {
2837
2853
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2838
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
2854
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
2839
2855
  xmlns: "http://www.w3.org/2000/svg",
2840
2856
  width: "20",
2841
2857
  height: "22",
@@ -2845,7 +2861,7 @@ function $ef0f18a578b32578$export$82eafebb825fc23f() {
2845
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>';
2846
2862
  function $3c5e15c6ee4227a9$export$605674723bcc715c() {
2847
2863
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2848
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
2864
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
2849
2865
  xmlns: "http://www.w3.org/2000/svg",
2850
2866
  width: "32",
2851
2867
  height: "32",
@@ -3124,7 +3140,7 @@ function $75e33704f2a83029$var$actual_navigation_working_on_fake_data(_ref2) {
3124
3140
  if (!$b8hua$untrack(() => read_updating_blocked())) previous_value = sfv;
3125
3141
  });
3126
3142
  const owner = $b8hua$getOwner();
3127
- const handler = $b8hua$catchify1(_ref3 => {
3143
+ const handler = $b8hua$catchify(_ref3 => {
3128
3144
  let {
3129
3145
  keyCode: keyCode
3130
3146
  } = _ref3;
@@ -3191,7 +3207,7 @@ function $75e33704f2a83029$var$actual_navigation_working_on_fake_data(_ref2) {
3191
3207
  const el = element_();
3192
3208
  if (!el) return;
3193
3209
  el.addEventListener("keyup", handler);
3194
- $b8hua$onCleanup($b8hua$catchify1(() => el.removeEventListener("keyup", handler)));
3210
+ $b8hua$onCleanup($b8hua$catchify(() => el.removeEventListener("keyup", handler)));
3195
3211
  });
3196
3212
  }
3197
3213
  function $c4dee1ef44de29ca$export$af0124069c150252(_ref) {
@@ -3404,7 +3420,7 @@ let $c3820807ac1e6fd7$export$44dad306455dddf;
3404
3420
 
3405
3421
  function $fc830a7ee59416ef$export$ebdc3711f7e02ccd(what_to_watch) {
3406
3422
  const [width, setWidth] = $b8hua$createSignal();
3407
- const resizeObserver = new ResizeObserver($b8hua$catchify1(records => {
3423
+ const resizeObserver = new ResizeObserver($b8hua$catchify(records => {
3408
3424
  for (let j = 0; j < records.length; j++) {
3409
3425
  var _records$j$borderBoxS, _records$j$borderBoxS2, _records$j$borderBoxS3;
3410
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;
@@ -3417,7 +3433,7 @@ function $fc830a7ee59416ef$export$ebdc3711f7e02ccd(what_to_watch) {
3417
3433
  let {
3418
3434
  element: element
3419
3435
  } = _ref;
3420
- return requestAnimationFrame($b8hua$catchify1(() => {
3436
+ return requestAnimationFrame($b8hua$catchify(() => {
3421
3437
  const current_size = what_to_watch.getBoundingClientRect().width;
3422
3438
  if (current_size)
3423
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.
@@ -3434,7 +3450,7 @@ function $fc830a7ee59416ef$export$ebdc3711f7e02ccd(what_to_watch) {
3434
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>';
3435
3451
  function $83c36ed4520d0335$export$f7658c347b037c3f() {
3436
3452
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
3437
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
3453
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
3438
3454
  xmlns: "http://www.w3.org/2000/svg",
3439
3455
  width: "21",
3440
3456
  height: "20",
@@ -3464,7 +3480,7 @@ function $584c06c09cf4609d$export$b94867ecbd698f21(_ref) {
3464
3480
  let input_element;
3465
3481
  // This is the div where we recommend (and ourselves do) attach the event listener to that opens the search modal.
3466
3482
  let field_div;
3467
- $b8hua$createEffect($b8hua$catchify1(async () => {
3483
+ $b8hua$createEffect($b8hua$catchify(async () => {
3468
3484
  if (disabled_) return;
3469
3485
  // we aren't in DOM yet unfortunately, wouldn't even be with onMount
3470
3486
  await (0, $b8hua$observer).wait_for_element(input_element);
@@ -3482,7 +3498,7 @@ function $584c06c09cf4609d$export$b94867ecbd698f21(_ref) {
3482
3498
  const BackButton = () => $b8hua$createComponent((0, $b8hua$Show), {
3483
3499
  when: on_back_,
3484
3500
  get children() {
3485
- return $b8hua$ssrElement("button", $b8hua$mergeProps1({
3501
+ return $b8hua$ssrElement("button", $b8hua$mergeProps({
3486
3502
  "class": "back",
3487
3503
  type: "button",
3488
3504
  get ["aria-label"]() {
@@ -3496,7 +3512,7 @@ function $584c06c09cf4609d$export$b94867ecbd698f21(_ref) {
3496
3512
  }), () => isNewModal ? $b8hua$escape($b8hua$createComponent((0, $9783d437ad61594c$export$3b621d86b1566b2), {})) : $b8hua$escape($b8hua$createComponent(BackIcon_, {})), true);
3497
3513
  }
3498
3514
  });
3499
- const ClearButton = () => $b8hua$ssrElement("button", $b8hua$mergeProps1({
3515
+ const ClearButton = () => $b8hua$ssrElement("button", $b8hua$mergeProps({
3500
3516
  type: "button",
3501
3517
  get ["class"]() {
3502
3518
  return "clear ".concat(searchFieldEmpty() ? "empty" : "");
@@ -3544,7 +3560,7 @@ function $e56d241d0f33d459$export$fe334901e8bebd57() {
3544
3560
  offset: 0
3545
3561
  }, 1);
3546
3562
  animation.pause();
3547
- const fn = $b8hua$catchify1(animation.play.bind(animation));
3563
+ const fn = $b8hua$catchify(animation.play.bind(animation));
3548
3564
  cleanup_fns.push(fn);
3549
3565
  $b8hua$onCleanup(fn);
3550
3566
  } catch (e) {
@@ -3555,7 +3571,7 @@ function $e56d241d0f33d459$export$fe334901e8bebd57() {
3555
3571
  const style = element.style;
3556
3572
  const original_value = style.overflow;
3557
3573
  style.overflow = "hidden";
3558
- const fn = $b8hua$catchify1(() => style.overflow = original_value);
3574
+ const fn = $b8hua$catchify(() => style.overflow = original_value);
3559
3575
  cleanup_fns.push(fn);
3560
3576
  $b8hua$onCleanup(fn);
3561
3577
  }
@@ -3578,8 +3594,8 @@ function $a82a41ab7188eda2$export$93d9bfd0c9c1a5b8(close_modal, search_query_url
3578
3594
  let set_initial_values = false;
3579
3595
  let old_pathname;
3580
3596
  let old_param_value;
3581
- $b8hua$onCleanup($b8hua$catchify1(exit_iterable));
3582
- $b8hua$catchify1(async () => {
3597
+ $b8hua$onCleanup($b8hua$catchify(exit_iterable));
3598
+ $b8hua$catchify(async () => {
3583
3599
  for await (const href of exitable_iterable) {
3584
3600
  const u_o = new URL(href);
3585
3601
  const new_pathname = u_o.pathname;
@@ -3651,7 +3667,7 @@ function $40411f2ec772c376$var$RawClassicSearchModal(_ref) {
3651
3667
  } = alignmentSignals_ || {};
3652
3668
  const [bodyAlignmentStyle] = bodyAlignmentSignal;
3653
3669
  const [get_modal_search_results, set_modal_search_results_] = $b8hua$createSignal();
3654
- const close_on_escape_handler = $b8hua$catchify1(_ref2 => {
3670
+ const close_on_escape_handler = $b8hua$catchify(_ref2 => {
3655
3671
  let {
3656
3672
  key: key
3657
3673
  } = _ref2;
@@ -3678,7 +3694,7 @@ function $40411f2ec772c376$var$RawClassicSearchModal(_ref) {
3678
3694
  if (disable_scrolling_) $e56d241d0f33d459$export$fe334901e8bebd57();
3679
3695
  $a82a41ab7188eda2$export$93d9bfd0c9c1a5b8(close_modal_, search_query_url_param_name_);
3680
3696
  window.addEventListener("keydown", close_on_escape_handler);
3681
- $b8hua$onCleanup($b8hua$catchify1(() => window.removeEventListener("keydown", close_on_escape_handler)));
3697
+ $b8hua$onCleanup($b8hua$catchify(() => window.removeEventListener("keydown", close_on_escape_handler)));
3682
3698
  if (closing_animation_) register_closing_animation_(closing_animation_);
3683
3699
  $a09bb7c652acf957$export$3340fdd8259bd4fd({
3684
3700
  get_search_field_value_: get_search_field_value_,
@@ -4065,7 +4081,7 @@ function $26db6925469636a4$export$67152d26d4f56ee8(_ref) {
4065
4081
  var _listing_;
4066
4082
  return (_listing_ = listing_()) === null || _listing_ === void 0 ? void 0 : _listing_.page_url;
4067
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
4068
- const LinkToListing = props => $b8hua$ssrElement("a", $b8hua$mergeProps1(props, {
4084
+ const LinkToListing = props => $b8hua$ssrElement("a", $b8hua$mergeProps(props, {
4069
4085
  get href() {
4070
4086
  return href();
4071
4087
  }
@@ -4376,7 +4392,7 @@ function $4acc866f8fdfc002$export$af1fb307bbba2417(_ref) {
4376
4392
  $b8hua$createComputed($b8hua$on(search_field_value_[0], () => !suggestions_updating_blocked() && set_selected_index(undefined), {
4377
4393
  defer: true
4378
4394
  })); // reset autocomplete position if query changes
4379
- return [$b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps1(sharedSuggestionProps, {
4395
+ return [$b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps(sharedSuggestionProps, {
4380
4396
  get title_() {
4381
4397
  return i18n_.popular_;
4382
4398
  },
@@ -4386,7 +4402,7 @@ function $4acc866f8fdfc002$export$af1fb307bbba2417(_ref) {
4386
4402
  return itemIndexes_.suggestionsIndex_;
4387
4403
  },
4388
4404
  showPlaceholders_: () => showPlaceholders() || noResults_() && !noResultsPopularSuggestions.latest
4389
- })), $b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps1(sharedSuggestionProps, {
4405
+ })), $b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps(sharedSuggestionProps, {
4390
4406
  get title_() {
4391
4407
  return i18n_.previous_;
4392
4408
  },
@@ -4397,7 +4413,7 @@ function $4acc866f8fdfc002$export$af1fb307bbba2417(_ref) {
4397
4413
  },
4398
4414
  extraTitleRowElements_: () => $b8hua$ssr($4acc866f8fdfc002$var$_tmpl$, $b8hua$ssrHydrationKey(), $b8hua$escape(i18n_.clear_all_from_filter_crumbs_())),
4399
4415
  showPlaceholders_: () => false
4400
- })), $b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps1(sharedSuggestionProps, {
4416
+ })), $b8hua$createComponent((0, $5175a47d13b7c228$export$d4994a86c6235f72), $b8hua$mergeProps(sharedSuggestionProps, {
4401
4417
  get title_() {
4402
4418
  return i18n_.content_;
4403
4419
  },
@@ -4537,7 +4553,7 @@ function $06fcd2a345efd24d$var$RawSearchModalV2(_ref) {
4537
4553
  const random_classname_body = $b8hua$make_random_classname();
4538
4554
  const backdropRandomClassname = $b8hua$make_random_classname();
4539
4555
  const [get_modal_search_results_, set_modal_search_results_] = $b8hua$createSignal();
4540
- const close_on_escape_handler = $b8hua$catchify1(evt => {
4556
+ const close_on_escape_handler = $b8hua$catchify(evt => {
4541
4557
  if (evt.key === "Escape") {
4542
4558
  evt.preventDefault(); // Prevent the browser from closing/cancelling the modal so our animations have time to run
4543
4559
  close_modal_();
@@ -4640,7 +4656,7 @@ function $06fcd2a345efd24d$var$RawSearchModalV2(_ref) {
4640
4656
  $b8hua$createEffect($b8hua$on(get_search_field_value_, () => {
4641
4657
  setShowStaleListingSuggestions(true);
4642
4658
  clearTimeout(listingSuggestionsDebounceTimeout);
4643
- listingSuggestionsDebounceTimeout = setTimeout($b8hua$catchify1(() => setShowStaleListingSuggestions(false)), 350);
4659
+ listingSuggestionsDebounceTimeout = setTimeout($b8hua$catchify(() => setShowStaleListingSuggestions(false)), 350);
4644
4660
  }, {
4645
4661
  defer: true
4646
4662
  }));
@@ -4778,7 +4794,7 @@ function $06fcd2a345efd24d$var$RawSearchModalV2(_ref) {
4778
4794
  }
4779
4795
  });
4780
4796
  if (setSearchFieldOuterWidth_) {
4781
- 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)));
4782
4798
  resizeObserver.observe(search_field);
4783
4799
  $b8hua$onCleanup(() => resizeObserver.disconnect());
4784
4800
  }
@@ -4812,7 +4828,7 @@ function $6a439680ae7e9ba3$export$b2539bed5023c21c(props) {
4812
4828
  return $b8hua$createComponent($6a439680ae7e9ba3$var$TabsContext.Provider, {
4813
4829
  value: new (0, $b8hua$ListenableSet)(),
4814
4830
  get children() {
4815
- return $b8hua$createComponent($6a439680ae7e9ba3$var$ActualTabs, $b8hua$mergeProps1(props, {
4831
+ return $b8hua$createComponent($6a439680ae7e9ba3$var$ActualTabs, $b8hua$mergeProps(props, {
4816
4832
  get children() {
4817
4833
  return props.children;
4818
4834
  }
@@ -4828,7 +4844,7 @@ function $6a439680ae7e9ba3$var$ActualTabs(props) {
4828
4844
  });
4829
4845
  const isSelected = $b8hua$createSelector(currentlySelected);
4830
4846
  const owner = $b8hua$getOwner();
4831
- const updateTabsSignal = $b8hua$catchify(() => $b8hua$runWithOwner(owner, () => setTabsReactive([...ourTabsSet])));
4847
+ const updateTabsSignal = $b8hua$catchify1(() => $b8hua$runWithOwner(owner, () => setTabsReactive([...ourTabsSet])));
4832
4848
  const ourTabsSet = $6a439680ae7e9ba3$var$useTabs();
4833
4849
  const location = $b8hua$use_href_accessor1();
4834
4850
  const linkWithChangedHash = hash => {
@@ -4842,7 +4858,7 @@ function $6a439680ae7e9ba3$var$ActualTabs(props) {
4842
4858
  },
4843
4859
  children: item => {
4844
4860
  const weSelected = $b8hua$createMemo(() => isSelected(item().id));
4845
- return $b8hua$createComponent((0, $b8hua$Dynamic), $b8hua$mergeProps1({
4861
+ return $b8hua$createComponent((0, $b8hua$Dynamic), $b8hua$mergeProps({
4846
4862
  get component() {
4847
4863
  return props.AnchorComponent;
4848
4864
  },
@@ -4925,7 +4941,7 @@ function $6a439680ae7e9ba3$export$3e41faf802a29e71(props) {
4925
4941
  if (!currentTabs) throw new Error("Tab must be a child of Tabs");
4926
4942
  const id = $b8hua$createUniqueId();
4927
4943
  const ourSet = currentTabs;
4928
- const extendedProps = $b8hua$mergeProps({
4944
+ const extendedProps = $b8hua$mergeProps1({
4929
4945
  id: id
4930
4946
  }, props);
4931
4947
  ourSet.add(extendedProps);
@@ -4935,7 +4951,7 @@ function $6a439680ae7e9ba3$export$3e41faf802a29e71(props) {
4935
4951
  async function $d5f1e6a0f9117286$export$79b1565500412d9b(search_modal, modal_fn_opts, parent) {
4936
4952
  const body = parent || document.body || (await (0, $b8hua$observer).wait_for_element("body"));
4937
4953
  let dispose_and_remove;
4938
- const open_modal_ = $b8hua$catchify1(async function () {
4954
+ const open_modal_ = $b8hua$catchify(async function () {
4939
4955
  let extra_options_for_modal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4940
4956
  let on_dispose = arguments.length > 1 ? arguments[1] : undefined;
4941
4957
  // Below await is very intentional,
@@ -4970,7 +4986,7 @@ async function $d5f1e6a0f9117286$export$79b1565500412d9b(search_modal, modal_fn_
4970
4986
  actually_close();else if (!animation_started && closing_animation) {
4971
4987
  var _catchify;
4972
4988
  animation_started = +new Date();
4973
- (_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));
4974
4990
  } else actually_close();
4975
4991
  };
4976
4992
  return search_modal({
@@ -4983,7 +4999,7 @@ async function $d5f1e6a0f9117286$export$79b1565500412d9b(search_modal, modal_fn_
4983
4999
  });
4984
5000
  body.append(...modal_els);
4985
5001
  });
4986
- const close_modal_ = $b8hua$catchify1(() => {
5002
+ const close_modal_ = $b8hua$catchify(() => {
4987
5003
  if (dispose_and_remove) {
4988
5004
  // modal is open
4989
5005
  const dispose_fn = dispose_and_remove;
@@ -5000,7 +5016,7 @@ async function $d5f1e6a0f9117286$export$79b1565500412d9b(search_modal, modal_fn_
5000
5016
  function $972f6bce0f9d61be$export$e183a13865960371(params_to_default_value, router_) {
5001
5017
  const signals = {};
5002
5018
  const entries = Object.entries(params_to_default_value);
5003
- const event_handler = $b8hua$catchify1((what_happened, args) => {
5019
+ const event_handler = $b8hua$catchify((what_happened, args) => {
5004
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
5005
5021
  if (what_happened !== "popstate") return;
5006
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.
@@ -5032,8 +5048,8 @@ function $972f6bce0f9d61be$export$e183a13865960371(params_to_default_value, rout
5032
5048
  });
5033
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
5034
5050
  (0, $b8hua$instant_exec_on_suspect_history_change).add(event_handler);
5035
- $b8hua$onCleanup($b8hua$catchify1(() => (0, $b8hua$instant_exec_on_suspect_history_change).delete(event_handler)));
5036
- $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
5037
5053
  return signals;
5038
5054
  }
5039
5055
  function $972f6bce0f9d61be$var$history_state_change(signals, entries, state) {
@@ -5171,7 +5187,7 @@ function $0706a7702baafc06$export$6b35356958ae5587(props) {
5171
5187
  // If someone clicks on a product card in the shop the look modal, close the modal the next time the href changes
5172
5188
  for (const item of resolved()) {
5173
5189
  if (!(item instanceof Element)) return;
5174
- item.addEventListener("click", $b8hua$catchify1(() =>
5190
+ item.addEventListener("click", $b8hua$catchify(() =>
5175
5191
  // run with modal owner so we don't do stuff after the modal closes
5176
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)
5177
5193
  $b8hua$runWithOwner(props.modalOwner_, () => $b8hua$createEffect($b8hua$on(hrefWithoutHash, props.actually_close_modal_, {
@@ -5361,7 +5377,7 @@ function $6b0fd8fd20df8ccf$var$ActualShopTheLookButton(props) {
5361
5377
  }, true);
5362
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
5363
5379
  $b8hua$createEffect(() => !hasAnythingToShow() && closeModal()); // close modal if we ever get into the state of having it open and not having anything to show
5364
- $6b0fd8fd20df8ccf$var$modalProps = $b8hua$mergeProps(partForModal, {
5380
+ $6b0fd8fd20df8ccf$var$modalProps = $b8hua$mergeProps1(partForModal, {
5365
5381
  products_to_shop_: products_to_shop_
5366
5382
  });
5367
5383
  button.addEventListener("click", openModal);
@@ -5392,7 +5408,7 @@ function $6b0fd8fd20df8ccf$var$actualSetupModal() {
5392
5408
  (0, $68e6625c8d51f847$export$3064e1e8c6513da3).add(history_key);
5393
5409
  const actually_close_modal_ = () => set_history_value(false);
5394
5410
  const owner = $b8hua$getOwner();
5395
- $b8hua$catchify1(async () => {
5411
+ $b8hua$catchify(async () => {
5396
5412
  const {
5397
5413
  open_modal_: open_modal_,
5398
5414
  close_modal_: close_modal_
@@ -5467,15 +5483,15 @@ function $ad371564683947ab$export$6c6d7a51fa9aa15d(props) {
5467
5483
  $b8hua$insert(details_, [summary_, $b8hua$createComponent(ExpandingContainer, {
5468
5484
  children: children
5469
5485
  })], null);
5470
- if (!$b8hua$untrack(is_in_dom)) (0, $b8hua$observer).wait_for_element(details_).then($b8hua$catchify1(() => set_is_in_dom(true)));
5471
- $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 () => {
5472
5488
  const is_open = is_open_memo();
5473
5489
  if (!is_in_dom())
5474
5490
  // wait with setting state until we're in DOM, animation won't work otherwise
5475
5491
  return;
5476
5492
  if (dont_animate_if_instant_open_ && fresh_component && !timeout_started) {
5477
5493
  timeout_started = true;
5478
- setTimeout($b8hua$catchify1(() => fresh_component = false));
5494
+ setTimeout($b8hua$catchify(() => fresh_component = false));
5479
5495
  }
5480
5496
  if (is_open) {
5481
5497
  details_.open = true; // open up the toggle so the animation can happen
@@ -5483,10 +5499,10 @@ function $ad371564683947ab$export$6c6d7a51fa9aa15d(props) {
5483
5499
  await expand(0, do_duration);
5484
5500
  } else {
5485
5501
  const animation = await collapse();
5486
- 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));
5487
5503
  }
5488
5504
  }));
5489
- details_.addEventListener("toggle", $b8hua$catchify1(() => {
5505
+ details_.addEventListener("toggle", $b8hua$catchify(() => {
5490
5506
  const {
5491
5507
  open: open
5492
5508
  } = details_;
@@ -5496,11 +5512,11 @@ function $ad371564683947ab$export$6c6d7a51fa9aa15d(props) {
5496
5512
  }) // in case someone somehow toggles it without us intercepting it at least follow suit
5497
5513
  );
5498
5514
 
5499
- summary_.addEventListener("click", $b8hua$catchify1(ev => {
5515
+ summary_.addEventListener("click", $b8hua$catchify(ev => {
5500
5516
  ev.preventDefault();
5501
5517
  toggle();
5502
5518
  }));
5503
- summary_.addEventListener("keydown", $b8hua$catchify1(ev => {
5519
+ summary_.addEventListener("keydown", $b8hua$catchify(ev => {
5504
5520
  const {
5505
5521
  key: key
5506
5522
  } = ev;
@@ -5737,9 +5753,9 @@ function $4711a82d08d2021b$export$fecbb157621501bd(_ref) {
5737
5753
  });
5738
5754
  const [is_in_dom, set_is_in_dom] = $b8hua$createSignal(document.documentElement.contains(outmost_element));
5739
5755
  const hidden = $b8hua$createMemo(() => get_search_filters_open_() || get_search_sorting_open_());
5740
- 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)));
5741
5757
  outmost_element.classList.add("selected-filters");
5742
- $b8hua$createEffect($b8hua$catchify1(async () => {
5758
+ $b8hua$createEffect($b8hua$catchify(async () => {
5743
5759
  if (!is_in_dom())
5744
5760
  // wait with setting state until we're in DOM, animation won't work otherwise
5745
5761
  return;
@@ -5772,7 +5788,7 @@ const $19e828709c7723a0$export$48513f6b9f8ce62d = props => {
5772
5788
  };
5773
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>';
5774
5790
  function $ff3225aef892a467$export$f21ab0717a89c77f(props) {
5775
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1(props, {
5791
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps(props, {
5776
5792
  xmlns: "http://www.w3.org/2000/svg",
5777
5793
  width: "11",
5778
5794
  height: "12"
@@ -5895,7 +5911,7 @@ function $133484ef10e4e954$export$dd948f91abc3a1c4(_ref) {
5895
5911
  }) : []);
5896
5912
  });
5897
5913
  $b8hua$onCleanup(() => set_view_more_button_below_group_());
5898
- $b8hua$createEffect($b8hua$catchify1(async () => {
5914
+ $b8hua$createEffect($b8hua$catchify(async () => {
5899
5915
  if (!togglable_rest()) {
5900
5916
  await collapse();
5901
5917
  return;
@@ -6021,7 +6037,7 @@ function $1e7465a8ffa97f6c$export$e0d834a0ad870cda(_ref) {
6021
6037
  });
6022
6038
  $b8hua$createComputed(() => {
6023
6039
  clearTimeout(debounce_timeout);
6024
- debounce_timeout = setTimeout($b8hua$catchify1(range => $b8hua$untrack(() => {
6040
+ debounce_timeout = setTimeout($b8hua$catchify(range => $b8hua$untrack(() => {
6025
6041
  const default_data = defaultRange();
6026
6042
  const filter_object = {
6027
6043
  op: filter_().op,
@@ -6604,7 +6620,7 @@ function $0ae614c5c7babb43$export$a32086fa6616eafd(_ref) {
6604
6620
  }) : []);
6605
6621
  });
6606
6622
  $b8hua$onCleanup(() => set_view_more_button_below_group());
6607
- $b8hua$createEffect($b8hua$catchify1(async () => {
6623
+ $b8hua$createEffect($b8hua$catchify(async () => {
6608
6624
  if (!some_top_level_are_hidden()) {
6609
6625
  await collapse();
6610
6626
  return;
@@ -6677,7 +6693,7 @@ function $0ae614c5c7babb43$var$render_stuff(data, existing_filter, i18n_, filter
6677
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;
6678
6694
  },
6679
6695
  input_ref_: input => {
6680
- input.addEventListener("change", $b8hua$catchify1(() => $b8hua$untrack(() => {
6696
+ input.addEventListener("change", $b8hua$catchify(() => $b8hua$untrack(() => {
6681
6697
  var _value9;
6682
6698
  const {
6683
6699
  checked: checked
@@ -6764,7 +6780,7 @@ function $0ae614c5c7babb43$var$batching_filter_state_syncer(props) {
6764
6780
  existing_filter_: existing_filter_
6765
6781
  } = props;
6766
6782
  let sync_queued = false;
6767
- const sync_fn = $b8hua$catchify1(async () => {
6783
+ const sync_fn = $b8hua$catchify(async () => {
6768
6784
  sync_queued = false;
6769
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
6770
6786
  const set_filter = existing_filter_();
@@ -6826,13 +6842,13 @@ function $0ae614c5c7babb43$var$create_updating_signal(_ref3) {
6826
6842
  $b8hua$createComputed($b8hua$on(read_checked, trigger_sync_, {
6827
6843
  defer: true
6828
6844
  }));
6829
- $b8hua$createComputed($b8hua$on(read_checked, $b8hua$catchify1(new_value => {
6845
+ $b8hua$createComputed($b8hua$on(read_checked, $b8hua$catchify(new_value => {
6830
6846
  if (updating_blocked) return;
6831
6847
  for (const child of child_objects) child.is_checked_[1](new_value);
6832
6848
  }), {
6833
6849
  defer: true
6834
6850
  }));
6835
- $b8hua$createEffect($b8hua$on(get_child_object_values, $b8hua$catchify1(() => {
6851
+ $b8hua$createEffect($b8hua$on(get_child_object_values, $b8hua$catchify(() => {
6836
6852
  const all_kids_checked = get_child_object_values.every(accessor => accessor());
6837
6853
  if (all_kids_checked === read_checked()) return;
6838
6854
  updating_blocked = true;
@@ -7013,7 +7029,7 @@ const $830ea8efda59884e$export$414f6a19d38e655c = _ref => {
7013
7029
  const MakeButton = attributes => {
7014
7030
  const label = $b8hua$createMemo(() => value().name_ || value().value_ + "");
7015
7031
  const count_zero = $b8hua$createMemo(() => value().count_ === 0);
7016
- return $b8hua$ssrElement("button", $b8hua$mergeProps1(attributes, {
7032
+ return $b8hua$ssrElement("button", $b8hua$mergeProps(attributes, {
7017
7033
  get disabled() {
7018
7034
  return count_zero() && !is_selected();
7019
7035
  },
@@ -7284,7 +7300,7 @@ function $2cb856c297c53e6c$export$82ed4b28ecb67608(_ref) {
7284
7300
  }) : []);
7285
7301
  });
7286
7302
  $b8hua$onCleanup(() => set_view_more_button_below_group_());
7287
- $b8hua$createEffect($b8hua$catchify1(async () => {
7303
+ $b8hua$createEffect($b8hua$catchify(async () => {
7288
7304
  if (!togglable_rest()) {
7289
7305
  await collapse();
7290
7306
  set_having_expanding_in_dom(false); // Once animation has finished, remove expanding from DOM
@@ -7325,7 +7341,7 @@ var $d2988f745661df9c$export$2e2bcd8739ae039 = {
7325
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>';
7326
7342
  function $905f44be08b7378e$export$f2ca6fc699ca1fb4() {
7327
7343
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7328
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
7344
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
7329
7345
  xmlns: "http://www.w3.org/2000/svg",
7330
7346
  width: "16.8",
7331
7347
  height: "14"
@@ -8030,7 +8046,7 @@ const $702d7656a373973e$export$824dde41348efed1 = /*@__PURE__*/(() => {
8030
8046
 
8031
8047
  const observe_to_signal = (element, setter) => {
8032
8048
  const computed_style = getComputedStyle(element);
8033
- const resize_observer = new ResizeObserver($b8hua$catchify1(() => {
8049
+ const resize_observer = new ResizeObserver($b8hua$catchify(() => {
8034
8050
  setter(element.getBoundingClientRect().width + parseFloat(computed_style.marginLeft) + parseFloat(computed_style.marginRight) + parseFloat(computed_style.borderRightWidth) + parseFloat(computed_style.borderLeftWidth));
8035
8051
  }));
8036
8052
  resize_observer.observe(element);
@@ -8441,7 +8457,7 @@ function $284849364a6ef73a$var$_get_cache_obj_for_endpoint2(endpoint) {
8441
8457
  return (_classPrivateFieldGet4 = $b8hua$babelruntimehelpersclassPrivateFieldGet(this, $284849364a6ef73a$var$_cache_objs))[endpoint] || (_classPrivateFieldGet4[endpoint] = {
8442
8458
  in_progress_: {},
8443
8459
  cache_: {},
8444
- 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 => {
8445
8461
  const our_cache = $b8hua$babelruntimehelpersclassPrivateFieldGet(this, $284849364a6ef73a$var$_cache_objs)[endpoint].cache_;
8446
8462
  $b8hua$dlog1("[Search API]: removing", key, "from", our_cache);
8447
8463
  delete our_cache[key];
@@ -8483,7 +8499,7 @@ async function $284849364a6ef73a$var$_run_url_creator_for_suggest2(merchant, mar
8483
8499
  // Filter out our transformed ancestors
8484
8500
  const transformedAncestors = Object.fromEntries(transformerResult.filter(item => item.is_suggestion === false).map(item => [item.listing_id, item]));
8485
8501
  // Add the now transformed ancestors into the ancestors of the listing suggestions
8486
- 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, {
8487
8503
  // Use mergeProps instead of spread since page_url and other properties could be a getter that solid components should call
8488
8504
  ancestors: item.ancestors.map(ancestor => {
8489
8505
  const newAncestor = transformedAncestors[ancestor.listing_id];
@@ -8580,11 +8596,11 @@ async function $284849364a6ef73a$var$_cached_request2(_ref4) {
8580
8596
  result = $ed0fefda39a0f15d$export$967e966fca9515e(result);
8581
8597
  cache_obj.cache_[body] = new WeakRef(result);
8582
8598
  resolve_in_progress(result);
8583
- setTimeout($b8hua$catchify1(() => {
8599
+ setTimeout($b8hua$catchify(() => {
8584
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
8585
8601
  else
8586
8602
  // delete things from cache after 5 minutes, so it doesn't get too heavy
8587
- setTimeout($b8hua$catchify1(() => delete cache_obj.cache_[body]), 300000);
8603
+ setTimeout($b8hua$catchify(() => delete cache_obj.cache_[body]), 300000);
8588
8604
  }), 60000 // cache values for at least 60 seconds
8589
8605
  );
8590
8606
 
@@ -8616,7 +8632,7 @@ function $9d3d794b62318ecc$export$477caf01aecaeb2a(options) {
8616
8632
  const [get_selected_filters_, set_selected_filters] = selected_filters_;
8617
8633
  const [get_has_sideways_filter_clearing_flag_, set_has_sideways_filter_clearing_flag] = sideways_filter_clearing_flag_;
8618
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");
8619
- const history_change_handler = $b8hua$catchify1(() => set_current_href(location.href));
8635
+ const history_change_handler = $b8hua$catchify(() => set_current_href(location.href));
8620
8636
  const owner = $b8hua$getOwner() || $b8hua$createRoot(() => $b8hua$getOwner());
8621
8637
  const {
8622
8638
  sorting_query_param_: sorting_query_param_,
@@ -8992,7 +9008,7 @@ function $8ef6232475d44150$export$7de92c4c2205ebf3(_ref) {
8992
9008
  return (0, $981356a8bf29ad72$export$6c9030e511152266) + get_showing_recommendation_rows() * Math.max(...possible_num_columns);
8993
9009
  });
8994
9010
  // Don't tear down elements every time one updates the page - don't put them within <Show>
8995
- 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({
8996
9012
  rows: rows_object,
8997
9013
  layout: "grid",
8998
9014
  element_attributes: {
@@ -9065,13 +9081,13 @@ function $a61a2051e15c8d7a$export$5196e4c01fa56fcb(_ref) {
9065
9081
  } = _ref;
9066
9082
  let close_toast_;
9067
9083
  const stay_open_promise = new Promise(r => close_toast_ = r);
9068
- $b8hua$catchify1(async () => {
9084
+ $b8hua$catchify(async () => {
9069
9085
  const closing_animation_duration = 300; // ms
9070
9086
  const element = $b8hua$ssrElement("div", more_attributes, () => $b8hua$escape(children), true);
9071
9087
  const [, set_is_showing_toast] = $a61a2051e15c8d7a$export$22970a0140fc759c;
9072
9088
  // if this is a memory leak the garbage collector is stupid - does someone know?
9073
- for (const ev of ["pointerover", "focusin"]) element.addEventListener(ev, $b8hua$catchify1(() => closing_animation.pause()));
9074
- 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()));
9075
9091
  const body = await (0, $b8hua$observer).wait_for_element("body");
9076
9092
  const x_translate = "translateX(-50%) ";
9077
9093
  let remove_keyboard_listener;
@@ -9096,7 +9112,7 @@ function $a61a2051e15c8d7a$export$5196e4c01fa56fcb(_ref) {
9096
9112
  // let other toasts close us if they open while we're still here
9097
9113
  $a61a2051e15c8d7a$var$closing_functions.add(close_toast_);
9098
9114
  set_is_showing_toast(true);
9099
- const handler = $b8hua$catchify1(_ref2 => {
9115
+ const handler = $b8hua$catchify(_ref2 => {
9100
9116
  let {
9101
9117
  key: key
9102
9118
  } = _ref2;
@@ -9231,7 +9247,7 @@ function $d8a66ba54a42eb3e$export$e026af0c7b64ea5f(_ref) {
9231
9247
  }, {
9232
9248
  defer: true
9233
9249
  }));
9234
- $b8hua$createComputed($b8hua$on(get_search_query_, $b8hua$catchify1(() => {
9250
+ $b8hua$createComputed($b8hua$on(get_search_query_, $b8hua$catchify(() => {
9235
9251
  // when a query was submitted, clear filters if clear was pressed before
9236
9252
  const clear_value = $b8hua$untrack(get_clear_filters_next_submit);
9237
9253
  if (clear_value) {
@@ -9258,11 +9274,11 @@ function $07d90b8270ece8de$export$84bba84a7b837187(read_search_query) {
9258
9274
  const key = "depict_searches";
9259
9275
  const previous_searches = $b8hua$createSignal(JSON.parse(ls[key] || "[]"));
9260
9276
  const [read_previous_searches, write_previous_searches] = previous_searches;
9261
- $b8hua$createEffect($b8hua$catchify1(() => {
9277
+ $b8hua$createEffect($b8hua$catchify(() => {
9262
9278
  const json_encoded = JSON.stringify(read_previous_searches());
9263
9279
  if (ls[key] !== json_encoded) ls[key] = json_encoded;
9264
9280
  }));
9265
- $b8hua$createComputed($b8hua$catchify1(() => {
9281
+ $b8hua$createComputed($b8hua$catchify(() => {
9266
9282
  const searches = $b8hua$untrack(read_previous_searches);
9267
9283
  const current_query = read_search_query();
9268
9284
  if (!current_query)
@@ -9308,7 +9324,7 @@ async function $86b0ff0c85e5fc6c$export$e16630ecb9644a1c(_ref) {
9308
9324
  function $33e7d1906c93db7d$export$205efb947c7ffd78(handler) {
9309
9325
  let passive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
9310
9326
  let override_element = arguments.length > 2 ? arguments[2] : undefined;
9311
- const catchified_handler = $b8hua$catchify1(handler);
9327
+ const catchified_handler = $b8hua$catchify(handler);
9312
9328
  const owner = $b8hua$getOwner();
9313
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.
9314
9330
  // Use observer in case that this gets called before body exists
@@ -9353,7 +9369,7 @@ function $96d57a48e7bce64f$export$181cceed5c91919e(callback, alsoRaF, passiveLis
9353
9369
  $b8hua$createEffect(() => {
9354
9370
  if (alsoRaF !== null && alsoRaF !== void 0 && alsoRaF()) {
9355
9371
  let disposed = false;
9356
- const fn = $b8hua$catchify1(() => {
9372
+ const fn = $b8hua$catchify(() => {
9357
9373
  if (disposed) return;
9358
9374
  probablyCallCallback();
9359
9375
  requestAnimationFrame(fn);
@@ -9366,10 +9382,10 @@ function $96d57a48e7bce64f$export$181cceed5c91919e(callback, alsoRaF, passiveLis
9366
9382
  // "resize" doesn't fire sometimes when it should, also it doesn't when showing/hiding scrollbars which disabling scrolling does
9367
9383
  // this works
9368
9384
  // keeping resize just in case
9369
- const resize_resize_observer = new ResizeObserver($b8hua$catchify1(probablyCallCallback));
9385
+ const resize_resize_observer = new ResizeObserver($b8hua$catchify(probablyCallCallback));
9370
9386
  resize_resize_observer.observe(document.documentElement);
9371
9387
  (0, $b8hua$observer).wait_for_element("body").then(resize_resize_observer.observe.bind(resize_resize_observer));
9372
- $b8hua$onCleanup($b8hua$catchify1(() => resize_resize_observer.disconnect()));
9388
+ $b8hua$onCleanup($b8hua$catchify(() => resize_resize_observer.disconnect()));
9373
9389
  return probablyCallCallback;
9374
9390
  }
9375
9391
  const $1308a7816c3d4f2d$export$3f238c96c45e6cc6 = 1;
@@ -9402,7 +9418,7 @@ function $1308a7816c3d4f2d$export$b3ad617e9036868(_ref, input_field, alignment,
9402
9418
  }, pollAlignment);
9403
9419
  let ro;
9404
9420
  if (alignment & $1308a7816c3d4f2d$export$902f8b4a7dae5d78 || alignment & $1308a7816c3d4f2d$export$5097308c5200105a) {
9405
- ro = new ResizeObserver($b8hua$catchify1(records => {
9421
+ ro = new ResizeObserver($b8hua$catchify(records => {
9406
9422
  records.forEach(_ref2 => {
9407
9423
  let {
9408
9424
  contentRect: {
@@ -9426,7 +9442,7 @@ function $1308a7816c3d4f2d$export$b3ad617e9036868(_ref, input_field, alignment,
9426
9442
  }));
9427
9443
  ro.observe(input_field);
9428
9444
  }
9429
- $b8hua$onCleanup($b8hua$catchify1(() => {
9445
+ $b8hua$onCleanup($b8hua$catchify(() => {
9430
9446
  var _ro;
9431
9447
  return (_ro = ro) === null || _ro === void 0 ? void 0 : _ro.disconnect();
9432
9448
  }));
@@ -9641,7 +9657,7 @@ function $b69740fc6de9f17e$export$83fd5de5504a7a67(_ref) {
9641
9657
  fill: "forwards",
9642
9658
  easing: "ease-in-out"
9643
9659
  });
9644
- animation.addEventListener("finish", $b8hua$catchify1(() => {
9660
+ animation.addEventListener("finish", $b8hua$catchify(() => {
9645
9661
  if (unpermit_when_possible) set_permitted_to_show(false);
9646
9662
  animation = undefined;
9647
9663
  element.style.display = "none";
@@ -9709,7 +9725,7 @@ function $6d2962bc9370f884$export$5e4aed86c12acdd9(_ref) {
9709
9725
  is_first_load = true;
9710
9726
  });
9711
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
9712
- $b8hua$createEffect($b8hua$catchify1(async () => {
9728
+ $b8hua$createEffect($b8hua$catchify(async () => {
9713
9729
  const be_above_percentage = is_first_load ? 50 : 75; // if first load, load earlier
9714
9730
  if (percentage_in_view_() < be_above_percentage || is_loading_more) return;
9715
9731
  if (!get_last_cursor()) {
@@ -9843,7 +9859,7 @@ var $64d94dcaa058dc7b$var$_tmpl$ = ["<style", ' type="text/css">', "</style>"];
9843
9859
  const $64d94dcaa058dc7b$export$c500183c31c2b22e = "--spans-columns";
9844
9860
  function $64d94dcaa058dc7b$export$ab6b147eec64fea5(props) {
9845
9861
  const container_class = "x" + $b8hua$createUniqueId();
9846
- const container_element_ = $b8hua$ssrElement("div", $b8hua$mergeProps1(() => props.element_attributes, {
9862
+ const container_element_ = $b8hua$ssrElement("div", $b8hua$mergeProps(() => props.element_attributes, {
9847
9863
  classList: {
9848
9864
  [container_class]: true
9849
9865
  }
@@ -10154,7 +10170,7 @@ function $7faea0096f14b59b$export$3925f87b1545cfc6(_ref) {
10154
10170
  } = slider;
10155
10171
  const Layout = props => $63f1f8dbcd07d3b0$export$445d8d3f5f706a40(props, insert_here, true);
10156
10172
  // Do like this, so we don't have to call mergeProps ourselves
10157
- $b8hua$createComponent(Layout, $b8hua$mergeProps1(layout_options_, {
10173
+ $b8hua$createComponent(Layout, $b8hua$mergeProps(layout_options_, {
10158
10174
  rows: "all",
10159
10175
  get cols_at_size() {
10160
10176
  return modified_cols_at_size();
@@ -10229,7 +10245,7 @@ function $69602b3d8fd54c38$export$9dd50d35b9d94fdf(_ref) {
10229
10245
  number_of_results_: number_of_results_,
10230
10246
  type: type
10231
10247
  } = _ref;
10232
- const contents = $b8hua$createMemo($b8hua$catchify1(() => {
10248
+ const contents = $b8hua$createMemo($b8hua$catchify(() => {
10233
10249
  const q = get_search_query_();
10234
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_());
10235
10251
  }));
@@ -10315,7 +10331,7 @@ var $79af35736fe8e5c8$var$_tmpl$ = '<path d="M6.199 10.254a.35.35 0 0 0-.496 0L3
10315
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>';
10316
10332
  function $79af35736fe8e5c8$export$da32f7add8a22e86() {
10317
10333
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10318
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
10334
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
10319
10335
  xmlns: "http://www.w3.org/2000/svg",
10320
10336
  width: "14",
10321
10337
  height: "14",
@@ -10325,7 +10341,7 @@ function $79af35736fe8e5c8$export$da32f7add8a22e86() {
10325
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>';
10326
10342
  function $73e3c96bc365e0e9$export$d10e63059ddb9fd4() {
10327
10343
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10328
- return $b8hua$ssrElement("svg", $b8hua$mergeProps1({
10344
+ return $b8hua$ssrElement("svg", $b8hua$mergeProps({
10329
10345
  xmlns: "http://www.w3.org/2000/svg",
10330
10346
  width: "14",
10331
10347
  height: "14",
@@ -10393,7 +10409,7 @@ function $082c4ed3e22f8d71$export$9bf11afa910f536e(_ref) {
10393
10409
  set_search_sorting_open(true);
10394
10410
  }
10395
10411
  });
10396
- $b8hua$onCleanup($b8hua$catchify1(() => {
10412
+ $b8hua$onCleanup($b8hua$catchify(() => {
10397
10413
  if (!sorting_expanded() && !filters_expanded()) {
10398
10414
  set_search_filters_open(false);
10399
10415
  set_search_sorting_open(false);
@@ -10441,7 +10457,7 @@ function $082c4ed3e22f8d71$export$9bf11afa910f536e(_ref) {
10441
10457
  })));
10442
10458
  },
10443
10459
  get children() {
10444
- 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_, {
10445
10461
  are_in_modal_: true
10446
10462
  }))));
10447
10463
  }
@@ -10505,7 +10521,7 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
10505
10521
  const [sorting_open, set_sorting_open] = search_sorting_open_;
10506
10522
  const [get_current_sorting_] = current_sorting_;
10507
10523
  const [is_small, set_is_small] = $b8hua$createSignal(false);
10508
- const dismiss_modal_ = $b8hua$catchify1(() => {
10524
+ const dismiss_modal_ = $b8hua$catchify(() => {
10509
10525
  set_filters_open(false);
10510
10526
  set_sorting_open(false);
10511
10527
  });
@@ -10606,7 +10622,7 @@ function $7396052a1484264f$export$d7841e452f2e59a8(_ref) {
10606
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))));
10607
10623
  }
10608
10624
  });
10609
- $b8hua$catchify1(async () => {
10625
+ $b8hua$catchify(async () => {
10610
10626
  ({
10611
10627
  open_modal_: open_modal_,
10612
10628
  close_modal_: close_modal_
@@ -10784,7 +10800,7 @@ function $6a16b21155984cef$var$ActualFloatingButtons(_ref2) {
10784
10800
  }
10785
10801
  old_pos = new_pos;
10786
10802
  });
10787
- const touchstart_handler = $b8hua$catchify1(e => {
10803
+ const touchstart_handler = $b8hua$catchify(e => {
10788
10804
  is_in_touch_scroll = true;
10789
10805
  if (e.touches.length === 1) {
10790
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
@@ -10792,12 +10808,12 @@ function $6a16b21155984cef$var$ActualFloatingButtons(_ref2) {
10792
10808
  diff_over_second_or_touch = 0;
10793
10809
  }
10794
10810
  });
10795
- const touchend_handler = $b8hua$catchify1(e => {
10811
+ const touchend_handler = $b8hua$catchify(e => {
10796
10812
  if (e.touches.length === 0)
10797
10813
  // scroll gesture of any type (pinch can also be used as scroll, etc.) ended
10798
10814
  inertia_timeout = setTimeout(
10799
10815
  // inertia ends after 500ms (educated guess)
10800
- $b8hua$catchify1(() => {
10816
+ $b8hua$catchify(() => {
10801
10817
  is_in_touch_scroll = false;
10802
10818
  diff_over_second_or_touch = 0;
10803
10819
  }), 500);
@@ -10815,9 +10831,9 @@ function $6a16b21155984cef$var$ActualFloatingButtons(_ref2) {
10815
10831
  const everything_closed = !get_search_filters_open_() && !get_search_sorting_open_();
10816
10832
  if (!$b8hua$untrack(modal_is_closed) && everything_closed)
10817
10833
  // I think the point of this is to delay the animation a bit IIRC
10818
- 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);
10819
10835
  });
10820
- $b8hua$createComputed($b8hua$catchify1(async () => {
10836
+ $b8hua$createComputed($b8hua$catchify(async () => {
10821
10837
  const element = sort_and_filter_element_();
10822
10838
  if (!element) return;
10823
10839
  await (0, $b8hua$observer).wait_for_element(element);
@@ -10836,7 +10852,7 @@ function $ec225bf1f1627ea8$export$210f130a61ac1e8d(fn) {
10836
10852
  let last_queued;
10837
10853
  let last_value;
10838
10854
  let initial_run = true;
10839
- $b8hua$createComputed($b8hua$catchify1(async () => {
10855
+ $b8hua$createComputed($b8hua$catchify(async () => {
10840
10856
  last_value = fn();
10841
10857
  if (initial_run) {
10842
10858
  initial_run = false;
@@ -10884,7 +10900,7 @@ function $5e6abec0dab4e610$export$6e49da55e449af7c(_ref) {
10884
10900
  }]); // get rid of old data the browser saves the old state and will restore it later on
10885
10901
  };
10886
10902
 
10887
- $b8hua$createComputed($b8hua$catchify1(() => {
10903
+ $b8hua$createComputed($b8hua$catchify(() => {
10888
10904
  const last_result = get_last_result_in_viewport_();
10889
10905
  if (last_result == undefined || last_result <= 0 || last_result == Infinity) return;
10890
10906
  if (isNaN(last_result)) {
@@ -10911,7 +10927,7 @@ function $5e6abec0dab4e610$export$6e49da55e449af7c(_ref) {
10911
10927
  set_to_later = last_result;
10912
10928
  // If a delayed push timeout is already running, just changing the value that will be pushed is sufficient
10913
10929
  if (timeout) return;
10914
- timeout = setTimeout($b8hua$catchify1(() => {
10930
+ timeout = setTimeout($b8hua$catchify(() => {
10915
10931
  timeout = undefined;
10916
10932
  last_time_history_changed = +new Date();
10917
10933
  set_min_results_loaded(set_to_later);
@@ -11022,7 +11038,7 @@ function $22470de5f42cc35d$export$f631859cab12b342(_ref) {
11022
11038
  if (!result) return;
11023
11039
  return {
11024
11040
  href: result.page_url,
11025
- onClick: $b8hua$catchify1(ev => router_.navigate_.go_to_({
11041
+ onClick: $b8hua$catchify(ev => router_.navigate_.go_to_({
11026
11042
  new_url_: result.page_url,
11027
11043
  is_replace_: false,
11028
11044
  event_: ev
@@ -11037,7 +11053,7 @@ function $22470de5f42cc35d$export$f631859cab12b342(_ref) {
11037
11053
  if (content_result_) return $b8hua$ssrElement("a", attributes, () => $b8hua$escape(children), true);
11038
11054
  return $b8hua$ssrElement("div", attributes, () => $b8hua$escape(children), true);
11039
11055
  };
11040
- 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, {
11041
11057
  tabIndex: "-1",
11042
11058
  get children() {
11043
11059
  return $b8hua$createComponent((0, $3c5e15c6ee4227a9$export$605674723bcc715c), {
@@ -11045,7 +11061,7 @@ function $22470de5f42cc35d$export$f631859cab12b342(_ref) {
11045
11061
  height: "28"
11046
11062
  });
11047
11063
  }
11048
- }))), $b8hua$escape($b8hua$createComponent(LinkIfPossible, $b8hua$mergeProps1({
11064
+ }))), $b8hua$escape($b8hua$createComponent(LinkIfPossible, $b8hua$mergeProps({
11049
11065
  "class": "content-title line-clamp"
11050
11066
  }, make_link_attributes, {
11051
11067
  get title() {
@@ -11203,7 +11219,7 @@ function $d53ebed6f63304e4$export$6d0c9c22f6652669(_ref) {
11203
11219
  return (0, $69602b3d8fd54c38$export$2452208c79fe93ea).content;
11204
11220
  },
11205
11221
  number_of_results_: num_results
11206
- })), $b8hua$escape($b8hua$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $b8hua$mergeProps1({
11222
+ })), $b8hua$escape($b8hua$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $b8hua$mergeProps({
11207
11223
  layout: "grid",
11208
11224
  element_attributes: {
11209
11225
  class: "cards"
@@ -11406,7 +11422,7 @@ function $937791b86d3d1509$export$44f738469d5570cf(_ref) {
11406
11422
  // We might only have changed the left position which align_field doesn't know about, make it poll the position for a while
11407
11423
  setPollAlignment_(true);
11408
11424
  if (disableResizePollingTimeout) clearTimeout(disableResizePollingTimeout);
11409
- disableResizePollingTimeout = setTimeout($b8hua$catchify1(() => {
11425
+ disableResizePollingTimeout = setTimeout($b8hua$catchify(() => {
11410
11426
  setPollAlignment_(false);
11411
11427
  disableResizePollingTimeout = undefined;
11412
11428
  }), 1000);
@@ -11539,7 +11555,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11539
11555
  } : {})
11540
11556
  };
11541
11557
  });
11542
- 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 => {
11543
11559
  set_all_products_loaded(false);
11544
11560
  // only first page of results
11545
11561
  return await $5e6abec0dab4e610$export$cc42dd29bf655ab6({
@@ -11587,7 +11603,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11587
11603
  const [, setModalFieldStyle] = modal_field_style;
11588
11604
  const [, setModalBackdropStyle] = modal_backdrop_style;
11589
11605
  const [get_search_field_elements, set_search_field_elements] = $b8hua$createSignal();
11590
- const SafeSearchField = $b8hua$catchify1((0, $584c06c09cf4609d$export$b94867ecbd698f21));
11606
+ const SafeSearchField = $b8hua$catchify((0, $584c06c09cf4609d$export$b94867ecbd698f21));
11591
11607
  const [sort_or_filter_open_, set_sort_or_filter_open_] = $b8hua$createSignal(false);
11592
11608
  const [desktop_filter_elements_, set_desktop_filter_elements] = $b8hua$createSignal();
11593
11609
  const n_hits = $b8hua$createMemo(() => {
@@ -11603,7 +11619,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11603
11619
  var _search_results_4, _search_results_4$con;
11604
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_)();
11605
11621
  });
11606
- const results_for = $b8hua$createComponent((0, $69602b3d8fd54c38$export$9dd50d35b9d94fdf), $b8hua$mergeProps1({
11622
+ const results_for = $b8hua$createComponent((0, $69602b3d8fd54c38$export$9dd50d35b9d94fdf), $b8hua$mergeProps({
11607
11623
  get type() {
11608
11624
  return (0, $69602b3d8fd54c38$export$2452208c79fe93ea).products;
11609
11625
  },
@@ -11647,7 +11663,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11647
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))));
11648
11664
  }).remove);
11649
11665
  $3a2bed57c9a57e21$export$d31a1a1a83ad9413(search_results_, selected_filters_);
11650
- $b8hua$catchify1((0, $5e6abec0dab4e610$export$6e49da55e449af7c))({
11666
+ $b8hua$catchify((0, $5e6abec0dab4e610$export$6e49da55e449af7c))({
11651
11667
  scroll_restoration_data_: scroll_restoration_data_,
11652
11668
  last_result_in_viewport_: last_result_in_viewport_,
11653
11669
  id_: get_search_query_,
@@ -11693,8 +11709,8 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
11693
11709
  setModalBodyStyle({});
11694
11710
  modalAlignmentSignalsRef_ === null || modalAlignmentSignalsRef_ === void 0 || modalAlignmentSignalsRef_(alignmentSignals_);
11695
11711
  const [pollAlignment, setPollAlignment_] = $b8hua$createSignal(false);
11696
- 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);
11697
- 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 => {
11698
11714
  var _target$matches, _target$closest, _on_open_, _ref4;
11699
11715
  const target = e.target;
11700
11716
  const sel = ".submit";
@@ -12101,7 +12117,7 @@ class $eb064bc3350276c1$export$ac6237957a15b3f0 {
12101
12117
  BackIcon_: BackIcon_
12102
12118
  });
12103
12119
  $68e6625c8d51f847$export$5162a71f252e6122();
12104
- $b8hua$catchify1(async () => {
12120
+ $b8hua$catchify(async () => {
12105
12121
  const {
12106
12122
  open_modal_: open_modal_,
12107
12123
  close_modal_: close_modal_
@@ -12365,7 +12381,7 @@ function $eb064bc3350276c1$export$f2dc7e4e4aa11abb(props) {
12365
12381
  function $37e8c97bb6876197$export$828dcdd425fd3231(aligner) {
12366
12382
  const style_element = document.createElement("style");
12367
12383
  document.head.append(style_element);
12368
- const resize_observer = new ResizeObserver($b8hua$catchify1(() => {
12384
+ const resize_observer = new ResizeObserver($b8hua$catchify(() => {
12369
12385
  const styles = $cc64aabf2c7a1f1a$export$1233ca167bf71f9a({
12370
12386
  ".depict.plp .depict-search-modal .search-field": {
12371
12387
  "height": "".concat(aligner === null || aligner === void 0 ? void 0 : aligner.clientHeight, "px")
@@ -12436,7 +12452,7 @@ const $169c13c0531d91d2$export$d86a33413558014e = openModalParams => {
12436
12452
  }, dispose_aligner];
12437
12453
  };
12438
12454
  function $573c007c697a1831$export$d0596b5cae35ad4(open_search) {
12439
- const handler = $b8hua$catchify1(e => {
12455
+ const handler = $b8hua$catchify(e => {
12440
12456
  const {
12441
12457
  key: key,
12442
12458
  target: target
@@ -12455,7 +12471,7 @@ function $573c007c697a1831$export$d0596b5cae35ad4(open_search) {
12455
12471
  function $e60a76195ac6d408$export$689e204eadb33baf(pr) {
12456
12472
  let old_url;
12457
12473
  let disconnect_link_observer;
12458
- const link_handler = $b8hua$catchify1(e => {
12474
+ const link_handler = $b8hua$catchify(e => {
12459
12475
  const link = e.currentTarget || e.target;
12460
12476
  if (link.href === old_url) {
12461
12477
  history.pushState(history.state, "", link.href);
@@ -12464,7 +12480,7 @@ function $e60a76195ac6d408$export$689e204eadb33baf(pr) {
12464
12480
  });
12465
12481
  let remove_added_listeners;
12466
12482
  let resolve_remove_added_listeners;
12467
- pr.addEventListener("open", $b8hua$catchify1(() => {
12483
+ pr.addEventListener("open", $b8hua$catchify(() => {
12468
12484
  remove_added_listeners = new Promise(r => resolve_remove_added_listeners = r);
12469
12485
  disconnect_link_observer = (0, $b8hua$observer).onexists("a", async _ref => {
12470
12486
  let {
@@ -12475,12 +12491,12 @@ function $e60a76195ac6d408$export$689e204eadb33baf(pr) {
12475
12491
  element.removeEventListener("click", link_handler);
12476
12492
  });
12477
12493
  }));
12478
- pr.addEventListener("close", $b8hua$catchify1(() => {
12494
+ pr.addEventListener("close", $b8hua$catchify(() => {
12479
12495
  var _disconnect_link_obse, _resolve_remove_added;
12480
12496
  (_disconnect_link_obse = disconnect_link_observer) === null || _disconnect_link_obse === void 0 || _disconnect_link_obse();
12481
12497
  (_resolve_remove_added = resolve_remove_added_listeners) === null || _resolve_remove_added === void 0 || _resolve_remove_added();
12482
12498
  }));
12483
- $b8hua$catchify1(async () => {
12499
+ $b8hua$catchify(async () => {
12484
12500
  for await (const href of (0, $b8hua$href_change_ipns)) if (!pr.is_page_(new URL(href))) old_url = href;
12485
12501
  })();
12486
12502
  }
@@ -12578,7 +12594,7 @@ class $f9fd3017c20b774a$export$3ccaa27d81dd8556 extends EventTarget {
12578
12594
  });
12579
12595
  $f9fd3017c20b774a$var$_classPrivateFieldInitSpec(this, $f9fd3017c20b774a$var$_unload, {
12580
12596
  writable: true,
12581
- value: /*@__PURE__*/$b8hua$catchify1(() => {
12597
+ value: /*@__PURE__*/$b8hua$catchify(() => {
12582
12598
  var _classPrivateFieldGet3;
12583
12599
  if (!$b8hua$babelruntimehelpersclassPrivateFieldGet(this, $f9fd3017c20b774a$var$_is_open)) return;
12584
12600
  (_classPrivateFieldGet3 = $b8hua$babelruntimehelpersclassPrivateFieldGet(this, $f9fd3017c20b774a$var$_disconnect_observer)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.call(this);
@@ -12592,7 +12608,7 @@ class $f9fd3017c20b774a$export$3ccaa27d81dd8556 extends EventTarget {
12592
12608
  });
12593
12609
  $f9fd3017c20b774a$var$_classPrivateFieldInitSpec(this, $f9fd3017c20b774a$var$_load, {
12594
12610
  writable: true,
12595
- value: /*@__PURE__*/$b8hua$catchify1(async els => {
12611
+ value: /*@__PURE__*/$b8hua$catchify(async els => {
12596
12612
  $b8hua$babelruntimehelpersclassPrivateFieldSet(this, $f9fd3017c20b774a$var$_is_open, true);
12597
12613
  // So that #load doesn't get called again
12598
12614
  let set_should_stay_inserted;
@@ -12656,7 +12672,7 @@ class $f9fd3017c20b774a$export$3ccaa27d81dd8556 extends EventTarget {
12656
12672
  async function $f9fd3017c20b774a$var$_listen2() {
12657
12673
  const [exit_ipns, exitable_ipns] = $b8hua$make_asyncIterable_exiter((0, $b8hua$href_change_ipns));
12658
12674
  $b8hua$babelruntimehelpersclassPrivateFieldSet(this, $f9fd3017c20b774a$var$_stop_listening, exit_ipns);
12659
- 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");
12660
12676
  for await (const href of exitable_ipns) {
12661
12677
  const url = new URL(href);
12662
12678
  if (!caught_page_check_fn(url)) {
@@ -12674,12 +12690,12 @@ function $f9fd3017c20b774a$var$_get_rendered_recs2() {
12674
12690
  this.addEventListener("close", dispose, {
12675
12691
  once: true
12676
12692
  });
12677
- return $b8hua$catchify1(this.render_, "rendering failed")() || [];
12693
+ return $b8hua$catchify(this.render_, "rendering failed")() || [];
12678
12694
  });
12679
12695
  }
12680
12696
  function $f9fd3017c20b774a$var$_empty_page_bugfix2() {
12681
12697
  // Called when a "page" is "opened" using PageReplacer
12682
- const on_maybe_popstate = $b8hua$catchify1(what_happened => {
12698
+ const on_maybe_popstate = $b8hua$catchify(what_happened => {
12683
12699
  if (what_happened !== "popstate") return;
12684
12700
  const cleaned_current_url = $f9fd3017c20b774a$var$clean_url(location.href);
12685
12701
  if (!$f9fd3017c20b774a$var$_classStaticPrivateFieldSpecGet($f9fd3017c20b774a$export$3ccaa27d81dd8556, $f9fd3017c20b774a$export$3ccaa27d81dd8556, $f9fd3017c20b774a$var$_visited_urls).has(cleaned_current_url)) {
@@ -12722,7 +12738,7 @@ var $f9fd3017c20b774a$var$_visited_urls = {
12722
12738
  writable: true,
12723
12739
  value: /*@__PURE__*/(() => {
12724
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).
12725
- $b8hua$catchify1(async () => {
12741
+ $b8hua$catchify(async () => {
12726
12742
  // Static initialization blocks aren't supported in MobileSafari yet, otherwise this would be one.
12727
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).
12728
12744
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Static_initialization_blocks
@@ -12779,7 +12795,7 @@ function $a3026fb727bc7550$export$316f6f283ae64765(props) {
12779
12795
  field_: $b8hua$createSignal({}),
12780
12796
  backdrop_: backdropAlignmentSignal_
12781
12797
  };
12782
- const defaultHandler = $b8hua$catchify1(e => {
12798
+ const defaultHandler = $b8hua$catchify(e => {
12783
12799
  const {
12784
12800
  modalVersionUsed_: modalVersionUsed_
12785
12801
  } = shared_properties;
@@ -12911,7 +12927,7 @@ function $43fbb365ed0ac99e$export$466cdc317043f6cb(_ref) {
12911
12927
  $b8hua$createComputed(() => {
12912
12928
  var _place_holdey_quickli, _place_holdey_quickli2;
12913
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) {
12914
- if (last_was_placeholder) queueMicrotask($b8hua$catchify1(() => {
12930
+ if (last_was_placeholder) queueMicrotask($b8hua$catchify(() => {
12915
12931
  var _sliding_element;
12916
12932
  (_sliding_element = sliding_element) === null || _sliding_element === void 0 || _sliding_element.scrollTo({
12917
12933
  left: 0
@@ -12980,7 +12996,7 @@ function $43fbb365ed0ac99e$export$466cdc317043f6cb(_ref) {
12980
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)) {
12981
12997
  // negated larger than to handle left side of comparison being undefined
12982
12998
  let done_work = false;
12983
- $b8hua$runWithOwner(owner, () => $b8hua$createComputed($b8hua$catchify1(() => {
12999
+ $b8hua$runWithOwner(owner, () => $b8hua$createComputed($b8hua$catchify(() => {
12984
13000
  if (done_work || !Array.isArray(quicklinks_data_())) return;
12985
13001
  const sel_index = selected_index();
12986
13002
  const target_element = sel_index >= 0 ? sel_index : 0;
@@ -13137,7 +13153,7 @@ function $a4777acaffa35a82$export$3945d6db2dfd3d12(_ref) {
13137
13153
  const handler = () => allow_filter_clearing = false;
13138
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
13139
13155
  $b8hua$onCleanup(() => window.removeEventListener("popstate", handler));
13140
- $b8hua$createEffect($b8hua$on(crumb_data_, $b8hua$catchify1(new_crumb_data => {
13156
+ $b8hua$createEffect($b8hua$on(crumb_data_, $b8hua$catchify(new_crumb_data => {
13141
13157
  const id_of_new_data = id_to_query_for_();
13142
13158
  const type_of_id_of_new_data = id_type_();
13143
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_)) {
@@ -13222,11 +13238,11 @@ function $3b772ef9a35560fe$export$780a853d15174484(_ref) {
13222
13238
  } = _ref;
13223
13239
  if (type === "image") {
13224
13240
  const [wrapperSize, setWrapperSize] = $b8hua$createSignal();
13225
- return $b8hua$createComponent((0, $b8hua$Dynamic), $b8hua$mergeProps1({
13241
+ return $b8hua$createComponent((0, $b8hua$Dynamic), $b8hua$mergeProps({
13226
13242
  component: link ? "a" : "div",
13227
13243
  "class": "d-standard-content-wrapper",
13228
13244
  get onClick() {
13229
- return $b8hua$catchify(ev => link && router_.navigate_.go_to_({
13245
+ return $b8hua$catchify1(ev => link && router_.navigate_.go_to_({
13230
13246
  new_url_: link,
13231
13247
  is_replace_: false,
13232
13248
  event_: ev
@@ -13237,11 +13253,13 @@ function $3b772ef9a35560fe$export$780a853d15174484(_ref) {
13237
13253
  }, {
13238
13254
  get children() {
13239
13255
  return $b8hua$createComponent((0, $98688279b9059f50$export$140423fa4bfb6d63), {
13240
- get size() {
13241
- return $b8hua$createMemo(() => {
13242
- var _wrapperSize;
13243
- return ((_wrapperSize = wrapperSize()) === null || _wrapperSize === void 0 ? void 0 : _wrapperSize()) || 0;
13244
- });
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;
13245
13263
  },
13246
13264
  src: mediaUrl,
13247
13265
  "class": "d-standard-content"
@@ -13356,7 +13374,7 @@ function $4b4b262708b516ee$export$f7d2f673fc2f091d(_ref) {
13356
13374
  // Make "Get products in listing" request to get products in listing
13357
13375
  const [plp_products_] = $b8hua$createResource(products_query_base_,
13358
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)
13359
- $b8hua$catchify(base_query => $5e6abec0dab4e610$export$cc42dd29bf655ab6({
13377
+ $b8hua$catchify1(base_query => $5e6abec0dab4e610$export$cc42dd29bf655ab6({
13360
13378
  id_: $b8hua$untrack(id_to_query_for_),
13361
13379
  scroll_restoration_data_: scroll_restoration_data_,
13362
13380
  min_products_to_fetch_: min_products_to_fetch_,
@@ -13376,7 +13394,7 @@ function $4b4b262708b516ee$export$f7d2f673fc2f091d(_ref) {
13376
13394
  id_type_: id_type_()
13377
13395
  }));
13378
13396
  // Make "Get Listing" request to get quicklinks, breadcrumbs, title, etc
13379
- 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)));
13380
13398
  const contentBlocksByRow = $12ff24fdc4b26d88$export$7a92d995f1bf3592(history_content_blocks_, plp_meta, content_blocks_by_row_, router_);
13381
13399
  const available_sortings_ = $b8hua$createMemo(() => {
13382
13400
  var _plp_products_, _plp_products_$sorts;
@@ -13511,7 +13529,7 @@ function $4b4b262708b516ee$export$f7d2f673fc2f091d(_ref) {
13511
13529
  filterModalParent_: filterModalParent_,
13512
13530
  ...extra_sort_and_filter_args_
13513
13531
  });
13514
- $b8hua$catchify((0, $5e6abec0dab4e610$export$6e49da55e449af7c))({
13532
+ $b8hua$catchify1((0, $5e6abec0dab4e610$export$6e49da55e449af7c))({
13515
13533
  scroll_restoration_data_: scroll_restoration_data_,
13516
13534
  last_result_in_viewport_: last_result_in_viewport_,
13517
13535
  id_: id_to_query_for_,
@@ -13525,7 +13543,7 @@ function $4b4b262708b516ee$export$f7d2f673fc2f091d(_ref) {
13525
13543
  $b8hua$createComputed(() => {
13526
13544
  if (plp_products_.loading) set_can_write_scroll_restoration(false);else if (plp_products_()) set_can_write_scroll_restoration(true);
13527
13545
  });
13528
- $b8hua$createRenderEffect($b8hua$catchify(async () => {
13546
+ $b8hua$createRenderEffect($b8hua$catchify1(async () => {
13529
13547
  var _only_show_filters_op;
13530
13548
  const slim = is_slim_();
13531
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();
@@ -13668,7 +13686,7 @@ function $4b4b262708b516ee$var$add_us_to_crumbs(plp_meta) {
13668
13686
  var _plp_meta3;
13669
13687
  const api_value = (_plp_meta3 = plp_meta()) === null || _plp_meta3 === void 0 ? void 0 : _plp_meta3.breadcrumbs;
13670
13688
  if (!api_value) return api_value;
13671
- return [...api_value, $b8hua$mergeProps(plp_meta(), {
13689
+ return [...api_value, $b8hua$mergeProps1(plp_meta(), {
13672
13690
  get page_url() {
13673
13691
  return href_accessor();
13674
13692
  }
@@ -13782,4 +13800,4 @@ function $8821a19349c36651$export$e2bf8ce7779e827e(props) {
13782
13800
  }, "Entire CategoryPage failed");
13783
13801
  }
13784
13802
  $b8hua$add_to_version_info("ui", (0, $8db9a15135765c11$export$83d89fbfd8236492));
13785
- export { $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, $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 };