@depict-ai/ui 2.1.3 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ES10/index.cjs +101 -18
- package/ES10/index.d.ts +4 -2
- package/ES10/index.js +119 -36
- package/latest/index.cjs +100 -17
- package/latest/index.d.ts +4 -2
- package/latest/index.js +118 -35
- package/package.json +1 -1
- package/server/ES10/index.cjs +100 -11
- package/server/ES10/index.d.ts +4 -2
- package/server/ES10/index.js +122 -33
- package/server/latest/index.cjs +99 -10
- package/server/latest/index.d.ts +4 -2
- package/server/latest/index.js +121 -32
package/ES10/index.cjs
CHANGED
|
@@ -76,7 +76,7 @@ $parcel$export(module.exports, "defaultColsAtSize", () => $33eed84f447aa0c0$expo
|
|
|
76
76
|
$parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $33eed84f447aa0c0$export$7bf543b9d9be2c22);
|
|
77
77
|
$parcel$export(module.exports, "version", () => $aa1938dec50d6c12$export$83d89fbfd8236492);
|
|
78
78
|
/*! Depict.ai search and product listing SDK */
|
|
79
|
-
const $aa1938dec50d6c12$export$83d89fbfd8236492 = "2.1.
|
|
79
|
+
const $aa1938dec50d6c12$export$83d89fbfd8236492 = "2.1.5";
|
|
80
80
|
const $a68b73fd7ba0853f$var$fallback_operator = "in";
|
|
81
81
|
const $a68b73fd7ba0853f$var$fallback_token = "";
|
|
82
82
|
const $a68b73fd7ba0853f$var$legacy_filter_prefix = "filter_";
|
|
@@ -276,7 +276,6 @@ function $ce467edb5343cfcd$export$94026ee33dbabc26(props) {
|
|
|
276
276
|
return _el$;
|
|
277
277
|
})();
|
|
278
278
|
}
|
|
279
|
-
const $858fdcf73148519f$var$_tmpl$ = /*#__PURE__*/$52FdA$solidjsweb.template(`<img>`);
|
|
280
279
|
function $858fdcf73148519f$export$e6fffe67d4cdd848(whatToWatch) {
|
|
281
280
|
const [size, setSize] = $52FdA$solidjs.createSignal(0);
|
|
282
281
|
const resizeObserver = new ResizeObserver($52FdA$depictaiutilishared.catchify(records => {
|
|
@@ -304,6 +303,7 @@ function $858fdcf73148519f$export$e6fffe67d4cdd848(whatToWatch) {
|
|
|
304
303
|
});
|
|
305
304
|
return size;
|
|
306
305
|
}
|
|
306
|
+
const $858fdcf73148519f$var$onIdleFunctionsSymbol = /*@__PURE__*/Symbol("onIdleFunctions");
|
|
307
307
|
function $858fdcf73148519f$export$6e5611bc7e57e477(props) {
|
|
308
308
|
// Enable reactive props
|
|
309
309
|
const otherOptions = $52FdA$solidjs.createMemo(() => {
|
|
@@ -326,16 +326,91 @@ function $858fdcf73148519f$export$6e5611bc7e57e477(props) {
|
|
|
326
326
|
srcset: srcset
|
|
327
327
|
};
|
|
328
328
|
});
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
329
|
+
// Work around https://github.com/solidjs/solid/issues/1828
|
|
330
|
+
const img = new Image(); // Need to use new Image or browser might not start loading image before it's in the DOM
|
|
331
|
+
const [hasSetSize, setHasSetSize] = $52FdA$solidjs.createSignal(false);
|
|
332
|
+
const [hasDecoded, setHasDecoded] = $52FdA$solidjs.createSignal(false);
|
|
333
|
+
const sizePX = $52FdA$solidjs.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
|
|
334
|
+
const listingContext = $d067f3a30f047b41$export$8d0c4fdbb05a2f2e();
|
|
335
|
+
// 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
|
|
336
|
+
// Happened on singular, they have some weird observer (+we also have one but ours is at least 3x more efficient)
|
|
337
|
+
const executeWhenIdleBatched = fn => {
|
|
338
|
+
if (typeof requestIdleCallback !== "function") setTimeout(fn); // Old browsers don't get optimisation
|
|
339
|
+
const existingStack = listingContext === null || listingContext === void 0 ? void 0 : listingContext[$858fdcf73148519f$var$onIdleFunctionsSymbol];
|
|
340
|
+
if (existingStack) return existingStack.add(fn);
|
|
341
|
+
const newStack = new Set([fn]);
|
|
342
|
+
if (listingContext) listingContext[$858fdcf73148519f$var$onIdleFunctionsSymbol] = newStack;
|
|
343
|
+
const processStackWhenIdle = () => requestIdleCallback(deadline => {
|
|
344
|
+
const start = performance.now();
|
|
345
|
+
const thirdDeadlineTime = deadline.timeRemaining() / 3; // observers coming after this take up 2-3x the time so don't use all of it
|
|
346
|
+
for (const fn of newStack) {
|
|
347
|
+
newStack.delete(fn);
|
|
348
|
+
fn();
|
|
349
|
+
const timeTaken = performance.now() - start;
|
|
350
|
+
if ((!deadline.timeRemaining() || timeTaken > thirdDeadlineTime) && newStack.size) {
|
|
351
|
+
// There's still work to be done but no time, so schedule another idle callback
|
|
352
|
+
processStackWhenIdle();
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
334
355
|
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
356
|
+
// Stack is empty
|
|
357
|
+
if (listingContext) delete listingContext[$858fdcf73148519f$var$onIdleFunctionsSymbol];
|
|
358
|
+
}, {
|
|
359
|
+
timeout: 15000
|
|
360
|
+
} // 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
|
|
361
|
+
);
|
|
362
|
+
|
|
363
|
+
processStackWhenIdle();
|
|
364
|
+
};
|
|
365
|
+
let sizeSetFastPath = false;
|
|
366
|
+
let hasDecodedFastPath = false;
|
|
367
|
+
let timeoutSet = false;
|
|
368
|
+
$52FdA$solidjsweb.spread(img, $52FdA$solidjs.mergeProps(otherOptions), false, true);
|
|
369
|
+
$52FdA$solidjs.createEffect(() => {
|
|
370
|
+
if (!props.size()) return; // wait until we have a size
|
|
371
|
+
if (timeoutSet) return;
|
|
372
|
+
const handler = $52FdA$depictaiutilishared.catchify(() => {
|
|
373
|
+
img.sizes = sizePX(); // use latest available value of props.size
|
|
374
|
+
if (!sizeSetFastPath) {
|
|
375
|
+
setHasSetSize(true);
|
|
376
|
+
sizeSetFastPath = true;
|
|
377
|
+
}
|
|
378
|
+
timeoutSet = false;
|
|
379
|
+
});
|
|
380
|
+
// Throttle the updating of sizes to avoid unnecessary image re-fetches during resize
|
|
381
|
+
// And also because we first set src after sizes has been set, wait with loading and decoding images until browser is idle
|
|
382
|
+
// This greatly improves performance when loading (more) products
|
|
383
|
+
// See https://depictaiworkspace.slack.com/archives/C05NJ0K3WRL/p1698220617663139
|
|
384
|
+
executeWhenIdleBatched(handler);
|
|
385
|
+
timeoutSet = true;
|
|
386
|
+
});
|
|
387
|
+
$52FdA$solidjs.createEffect(() => {
|
|
388
|
+
if (!props.size() || !hasSetSize()) return; // If size isn't known or set, don't assign src yet since it would cause the most low res image to load
|
|
389
|
+
Object.assign(img, src_options());
|
|
390
|
+
// Add to DOM once decoded to not require/block any paints before image has completed loading and avoid showing broken image symbol
|
|
391
|
+
// We can do this because there has to be a container around us giving us a size
|
|
392
|
+
// No need to listen if we're already in the DOM
|
|
393
|
+
if (hasDecodedFastPath) return;
|
|
394
|
+
if (props.loading === "lazy") {
|
|
395
|
+
// For lazy loading there's no decoding to wait for as it only occurs when the image is visible
|
|
396
|
+
// Make sure src is set before we put the image into the DOM though so no broken image symbol is shown
|
|
397
|
+
setHasDecoded(true);
|
|
398
|
+
hasDecodedFastPath = true;
|
|
399
|
+
}
|
|
400
|
+
img.decode().catch(e => $52FdA$depictaiutilishared.dwarn("Failed to decode image", e, img)) // Display the image also if loading failed so webdev can debug and doesn't get "no image"
|
|
401
|
+
.then(async () => {
|
|
402
|
+
// Also wait with inserting image (i.e. paint) until browser is idle
|
|
403
|
+
await new Promise(r => executeWhenIdleBatched(r));
|
|
404
|
+
setHasDecoded(true);
|
|
405
|
+
hasDecodedFastPath = true;
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
return $52FdA$solidjsweb.createComponent((0, $52FdA$solidjs.Show), {
|
|
409
|
+
get when() {
|
|
410
|
+
return hasDecoded();
|
|
411
|
+
},
|
|
412
|
+
children: img
|
|
413
|
+
});
|
|
339
414
|
}
|
|
340
415
|
function $858fdcf73148519f$var$make_srcset(url, resolutions) {
|
|
341
416
|
return resolutions.map(width => "".concat($858fdcf73148519f$var$generateImageUrl(url, width), " ").concat(width, "w")).join(", ");
|
|
@@ -373,7 +448,7 @@ function $28535bb7671c63d1$export$e4b984597b71e989(props) {
|
|
|
373
448
|
$52FdA$depictaiutilishared.queueMacroTask(() => setCurrentImageSize(undefined)); // 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
|
|
374
449
|
});
|
|
375
450
|
|
|
376
|
-
|
|
451
|
+
$52FdA$solidjsweb.insert(container, $52FdA$solidjsweb.createComponent((0, $858fdcf73148519f$export$6e5611bc7e57e477), {
|
|
377
452
|
style: "width: 100%; height: 100%; object-fit: contain; position: absolute; inset: 0;",
|
|
378
453
|
get size() {
|
|
379
454
|
return $52FdA$solidjs.createMemo(() => {
|
|
@@ -5274,6 +5349,9 @@ function $f8f375d6245ffff2$var$remap_blocks_to_index(_ref2) {
|
|
|
5274
5349
|
const cols_showing = n_cols_currently_showing_();
|
|
5275
5350
|
// Need to keep track of products displaced by blocks above when mapping rows to indexes in the actual grid
|
|
5276
5351
|
const displaced_products = []; // undefined = is product, true = is content block if number instead of tuple number indicates content blocks in that row. Index in first array is row, index in second array is column
|
|
5352
|
+
if (!cols_showing)
|
|
5353
|
+
// Nope out of here if we don't know how many columns are showing
|
|
5354
|
+
return content_blocks_by_index;
|
|
5277
5355
|
for (let i = 0; i < wrapped_blocks.length; i++) {
|
|
5278
5356
|
// i = row to show at
|
|
5279
5357
|
const block = wrapped_blocks[i];
|
|
@@ -5338,10 +5416,12 @@ function $f8f375d6245ffff2$var$remap_blocks_to_index(_ref2) {
|
|
|
5338
5416
|
function $f8f375d6245ffff2$var$wrap_blocks_in_div(rendered_content_blocks, max_span_columns) {
|
|
5339
5417
|
const get_wrapped_blocks = $52FdA$solidjs.mapArray(() => rendered_content_blocks, block => {
|
|
5340
5418
|
if (!block) return;
|
|
5341
|
-
const
|
|
5419
|
+
const final_span_columns = $52FdA$solidjs.createMemo(() => {
|
|
5342
5420
|
var _max_span_columns;
|
|
5343
5421
|
return Math.min(block.span_columns, (_max_span_columns = max_span_columns()) !== null && _max_span_columns !== void 0 ? _max_span_columns : Infinity);
|
|
5344
|
-
};
|
|
5422
|
+
});
|
|
5423
|
+
// If the item spans an entire row, limit the height to 1 row since there's no concept of "rows" if there are no products beside the block
|
|
5424
|
+
const final_span_rows = $52FdA$solidjs.createMemo(() => final_span_columns() === max_span_columns() ? 1 : block.span_rows);
|
|
5345
5425
|
const [rendering_delayed, set_rendering_delayed_] = $52FdA$solidjs.createSignal(true);
|
|
5346
5426
|
const content = $52FdA$solidjsweb.createComponent((0, $52FdA$solidjs.Show), {
|
|
5347
5427
|
get when() {
|
|
@@ -5356,10 +5436,10 @@ function $f8f375d6245ffff2$var$wrap_blocks_in_div(rendered_content_blocks, max_s
|
|
|
5356
5436
|
}));
|
|
5357
5437
|
$52FdA$solidjsweb.effect(_p$ => {
|
|
5358
5438
|
const _v$ = {
|
|
5359
|
-
[(0, $830518481649feb1$export$c500183c31c2b22e)]:
|
|
5439
|
+
[(0, $830518481649feb1$export$c500183c31c2b22e)]: final_span_columns()
|
|
5360
5440
|
},
|
|
5361
|
-
_v$2 = "span ".concat(
|
|
5362
|
-
_v$3 = "span ".concat(
|
|
5441
|
+
_v$2 = "span ".concat(final_span_columns()),
|
|
5442
|
+
_v$3 = "span ".concat(final_span_rows());
|
|
5363
5443
|
_p$._v$ = $52FdA$solidjsweb.style(_el$, _v$, _p$._v$);
|
|
5364
5444
|
_v$2 !== _p$._v$2 && ((_p$._v$2 = _v$2) != null ? _el$.style.setProperty("grid-column", _v$2) : _el$.style.removeProperty("grid-column"));
|
|
5365
5445
|
_v$3 !== _p$._v$3 && ((_p$._v$3 = _v$3) != null ? _el$.style.setProperty("grid-row", _v$3) : _el$.style.removeProperty("grid-row"));
|
|
@@ -5382,7 +5462,10 @@ function $f8f375d6245ffff2$var$wrap_blocks_in_div(rendered_content_blocks, max_s
|
|
|
5382
5462
|
},
|
|
5383
5463
|
get span_columns() {
|
|
5384
5464
|
// Cap max width of block to the number of columns available, for everyone downstream
|
|
5385
|
-
return
|
|
5465
|
+
return final_span_columns();
|
|
5466
|
+
},
|
|
5467
|
+
get span_rows() {
|
|
5468
|
+
return final_span_rows();
|
|
5386
5469
|
}
|
|
5387
5470
|
});
|
|
5388
5471
|
});
|
package/ES10/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { CategorySuggestion, SearchSuggestionsResponse } from "@depict-ai/types/
|
|
|
7
7
|
import { BaseSearchRequest } from "@depict-ai/types/api/BaseSearchRequest";
|
|
8
8
|
import { SearchSuggestionsRequest } from "@depict-ai/types/api/SearchSuggestionsRequest";
|
|
9
9
|
import { ProductListingRequestV2 } from "@depict-ai/types/api/ProductListingRequestV2";
|
|
10
|
-
export const version = "2.1.
|
|
10
|
+
export const version = "2.1.5";
|
|
11
11
|
/**
|
|
12
12
|
* Use `javascript_media_query` but return a reactive accessor instead of taking a callback function
|
|
13
13
|
*/
|
|
@@ -152,17 +152,19 @@ export function ImageContainer(props: {
|
|
|
152
152
|
export function makeSizeAccessor(whatToWatch: HTMLElement): Accessor<number>;
|
|
153
153
|
/**
|
|
154
154
|
* Automatically generate a srcset from the shopify CDN for an image and set the sizes attribute to the provided accessor.
|
|
155
|
+
* Will also delay loading and decoding of image until the browser is idle (with 5s timeout) to improve filtering/loading more performance.
|
|
155
156
|
* This is used for our responsive images:
|
|
156
157
|
* 1. The image must have a container with a fixed size (or aspect ratio) that is independent of the image. When aspectRatio is configured on the depict-cards element as data attribute, we will wrap the image in a ImageContainer for this. If it's false, the user has to provide this container themselves.
|
|
157
158
|
* 2. We set a ResizeObserver on one of the currently visible images (see makeSizeAccessor)
|
|
158
159
|
* 3. We set the size attribute of all the visible images to the size of the container we're observing. The point of this is that the sizes attribute is used to determine which image to load, and usually it's set by the user and depends on the relationship between image size and viewport size. By using a ResizeObserver, we can make sure the sizes attribute is always set to the correct value without it having to be configured. This will make so the browser always loads the correct image size for a crisp image but still fast load.
|
|
160
|
+
* You need to use insert(domNode, <ShopifyResponsiveImg size={sizeAccessor} src={src} />) if you want to insert the return value of this component into a DOM element manually, where you `import { insert } from "solid-js/web";` because we first want to insert the image once it has loaded.
|
|
159
161
|
*/
|
|
160
162
|
export function ShopifyResponsiveImg(props: {
|
|
161
163
|
resolutions?: number[];
|
|
162
164
|
size: Accessor<number>;
|
|
163
165
|
} & Omit<JSX.ImgHTMLAttributes<HTMLImageElement>, "srcset" | "src" | "sizes"> & {
|
|
164
166
|
src: string;
|
|
165
|
-
}):
|
|
167
|
+
}): JSX.Element;
|
|
166
168
|
export const shopifyContainedImageContextSymbol: unique symbol;
|
|
167
169
|
/**
|
|
168
170
|
* Abstraction built on top of ShopifyResponsiveImg. This is your one-stop-shop If you just need a responsive image.
|
package/ES10/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { add_to_version_info as $8tj43$add_to_version_info, base64_encode_unicode as $8tj43$base64_encode_unicode, base64_decode_unicode as $8tj43$base64_decode_unicode, dlog as $8tj43$dlog, queueMacroTask as $8tj43$queueMacroTask, catchify as $8tj43$catchify, is_safari as $8tj43$is_safari, observer as $8tj43$observer, Amazing_Slider as $8tj43$Amazing_Slider, slider_snap_css as $8tj43$slider_snap_css, slider_fading_factory as $8tj43$slider_fading_factory, slider_fractional_factory as $8tj43$slider_fractional_factory, camelCasifyObject as $8tj43$camelCasifyObject, make_random_classname as $8tj43$make_random_classname, n_col_styling_with_dist as $8tj43$n_col_styling_with_dist, layout_get_visible_recs_without_partial_rows as $8tj43$layout_get_visible_recs_without_partial_rows, layout_get_total_rec_amount_for_row as $8tj43$layout_get_total_rec_amount_for_row, layout_media_query_header as $8tj43$layout_media_query_header, report as $8tj43$report, useExpandingContainer as $8tj43$useExpandingContainer, standard_price_format as $8tj43$standard_price_format, hex_to_rgb as $8tj43$hex_to_rgb, relative_luminance_from_rgb as $8tj43$relative_luminance_from_rgb, fetch_recs as $8tj43$fetch_recs, snakeCasifyObject as $8tj43$snakeCasifyObject, instant_exec_on_suspect_history_change as $8tj43$instant_exec_on_suspect_history_change, base_url as $8tj43$base_url, get_depict_id as $8tj43$get_depict_id, get_user_id as $8tj43$get_user_id, get_session_id as $8tj43$get_session_id, make_url_with_query_params as $8tj43$make_url_with_query_params, fetch_retry as $8tj43$fetch_retry, add_version_query_params as $8tj43$add_version_query_params,
|
|
2
|
-
import { createComponent as $8tj43$createComponent, template as $8tj43$template, getNextElement as $8tj43$getNextElement, effect as $8tj43$effect, style as $8tj43$style, spread as $8tj43$spread,
|
|
3
|
-
import { createSignal as $8tj43$createSignal, getOwner as $8tj43$getOwner, createEffect as $8tj43$createEffect, runWithOwner as $8tj43$runWithOwner, onCleanup as $8tj43$onCleanup, createMemo as $8tj43$createMemo, createContext as $8tj43$createContext, useContext as $8tj43$useContext,
|
|
1
|
+
import { add_to_version_info as $8tj43$add_to_version_info, base64_encode_unicode as $8tj43$base64_encode_unicode, base64_decode_unicode as $8tj43$base64_decode_unicode, dlog as $8tj43$dlog, queueMacroTask as $8tj43$queueMacroTask, catchify as $8tj43$catchify, is_safari as $8tj43$is_safari, observer as $8tj43$observer, dwarn as $8tj43$dwarn, Amazing_Slider as $8tj43$Amazing_Slider, slider_snap_css as $8tj43$slider_snap_css, slider_fading_factory as $8tj43$slider_fading_factory, slider_fractional_factory as $8tj43$slider_fractional_factory, camelCasifyObject as $8tj43$camelCasifyObject, make_random_classname as $8tj43$make_random_classname, n_col_styling_with_dist as $8tj43$n_col_styling_with_dist, layout_get_visible_recs_without_partial_rows as $8tj43$layout_get_visible_recs_without_partial_rows, layout_get_total_rec_amount_for_row as $8tj43$layout_get_total_rec_amount_for_row, layout_media_query_header as $8tj43$layout_media_query_header, report as $8tj43$report, useExpandingContainer as $8tj43$useExpandingContainer, standard_price_format as $8tj43$standard_price_format, hex_to_rgb as $8tj43$hex_to_rgb, relative_luminance_from_rgb as $8tj43$relative_luminance_from_rgb, fetch_recs as $8tj43$fetch_recs, snakeCasifyObject as $8tj43$snakeCasifyObject, instant_exec_on_suspect_history_change as $8tj43$instant_exec_on_suspect_history_change, base_url as $8tj43$base_url, get_depict_id as $8tj43$get_depict_id, get_user_id as $8tj43$get_user_id, get_session_id as $8tj43$get_session_id, make_url_with_query_params as $8tj43$make_url_with_query_params, fetch_retry as $8tj43$fetch_retry, add_version_query_params as $8tj43$add_version_query_params, sort_obj as $8tj43$sort_obj, edit_current_page_meta_tags as $8tj43$edit_current_page_meta_tags, javascript_media_query as $8tj43$javascript_media_query, use_href_accessor as $8tj43$use_href_accessor, is_debug as $8tj43$is_debug, make_asyncIterable_exiter as $8tj43$make_asyncIterable_exiter, href_change_ipns as $8tj43$href_change_ipns, ContainedImage as $8tj43$ContainedImage, buildThresholdList as $8tj43$buildThresholdList, deparallelize_no_drop as $8tj43$deparallelize_no_drop, ListenableSet as $8tj43$ListenableSet, insert_surfaces as $8tj43$insert_surfaces } from "@depict-ai/utilishared/ES10";
|
|
2
|
+
import { createComponent as $8tj43$createComponent, insert as $8tj43$insert, template as $8tj43$template, getNextElement as $8tj43$getNextElement, effect as $8tj43$effect, style as $8tj43$style, spread as $8tj43$spread, setAttribute as $8tj43$setAttribute, mergeProps as $8tj43$mergeProps1, isServer as $8tj43$isServer, runHydrationEvents as $8tj43$runHydrationEvents, addEventListener as $8tj43$addEventListener, className as $8tj43$className, memo as $8tj43$memo, delegateEvents as $8tj43$delegateEvents, classList as $8tj43$classList, getNextMarker as $8tj43$getNextMarker, Dynamic as $8tj43$Dynamic, use as $8tj43$use, setProperty as $8tj43$setProperty } from "solid-js/web";
|
|
3
|
+
import { createSignal as $8tj43$createSignal, getOwner as $8tj43$getOwner, createEffect as $8tj43$createEffect, runWithOwner as $8tj43$runWithOwner, onCleanup as $8tj43$onCleanup, createMemo as $8tj43$createMemo, createContext as $8tj43$createContext, useContext as $8tj43$useContext, mergeProps as $8tj43$mergeProps, Show as $8tj43$Show, createResource as $8tj43$createResource, Suspense as $8tj43$Suspense, untrack as $8tj43$untrack, createRenderEffect as $8tj43$createRenderEffect, Index as $8tj43$Index, createRoot as $8tj43$createRoot, For as $8tj43$For, createUniqueId as $8tj43$createUniqueId, createComputed as $8tj43$createComputed, ErrorBoundary as $8tj43$ErrorBoundary, on as $8tj43$on, batch as $8tj43$batch, createReaction as $8tj43$createReaction, mapArray as $8tj43$mapArray } from "solid-js";
|
|
4
4
|
import $8tj43$babelruntimehelpersclassPrivateFieldSet from "@babel/runtime/helpers/classPrivateFieldSet";
|
|
5
5
|
import $8tj43$babelruntimehelpersclassPrivateFieldGet from "@babel/runtime/helpers/classPrivateFieldGet";
|
|
6
6
|
import $8tj43$babelruntimehelpersdefineProperty from "@babel/runtime/helpers/defineProperty";
|
|
@@ -9,7 +9,7 @@ import { createStore as $8tj43$createStore, reconcile as $8tj43$reconcile } from
|
|
|
9
9
|
/*! Depict.ai search and product listing SDK */
|
|
10
10
|
import { register_es_version } from "../multi_import_deduplicator.mjs";
|
|
11
11
|
register_es_version("ui", "ES10");
|
|
12
|
-
const $8db9a15135765c11$export$83d89fbfd8236492 = "2.1.
|
|
12
|
+
const $8db9a15135765c11$export$83d89fbfd8236492 = "2.1.5";
|
|
13
13
|
const $2855bffe06ef7a03$var$fallback_operator = "in";
|
|
14
14
|
const $2855bffe06ef7a03$var$fallback_token = "";
|
|
15
15
|
const $2855bffe06ef7a03$var$legacy_filter_prefix = "filter_";
|
|
@@ -209,7 +209,6 @@ function $801e8845d3fa3653$export$94026ee33dbabc26(props) {
|
|
|
209
209
|
return _el$;
|
|
210
210
|
})();
|
|
211
211
|
}
|
|
212
|
-
const $56047603f9d212b6$var$_tmpl$ = /*#__PURE__*/$8tj43$template(`<img>`);
|
|
213
212
|
function $56047603f9d212b6$export$e6fffe67d4cdd848(whatToWatch) {
|
|
214
213
|
const [size, setSize] = $8tj43$createSignal(0);
|
|
215
214
|
const resizeObserver = new ResizeObserver($8tj43$catchify(records => {
|
|
@@ -237,6 +236,7 @@ function $56047603f9d212b6$export$e6fffe67d4cdd848(whatToWatch) {
|
|
|
237
236
|
});
|
|
238
237
|
return size;
|
|
239
238
|
}
|
|
239
|
+
const $56047603f9d212b6$var$onIdleFunctionsSymbol = /*@__PURE__*/Symbol("onIdleFunctions");
|
|
240
240
|
function $56047603f9d212b6$export$6e5611bc7e57e477(props) {
|
|
241
241
|
// Enable reactive props
|
|
242
242
|
const otherOptions = $8tj43$createMemo(() => {
|
|
@@ -259,16 +259,91 @@ function $56047603f9d212b6$export$6e5611bc7e57e477(props) {
|
|
|
259
259
|
srcset: srcset
|
|
260
260
|
};
|
|
261
261
|
});
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
262
|
+
// Work around https://github.com/solidjs/solid/issues/1828
|
|
263
|
+
const img = new Image(); // Need to use new Image or browser might not start loading image before it's in the DOM
|
|
264
|
+
const [hasSetSize, setHasSetSize] = $8tj43$createSignal(false);
|
|
265
|
+
const [hasDecoded, setHasDecoded] = $8tj43$createSignal(false);
|
|
266
|
+
const sizePX = $8tj43$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
|
|
267
|
+
const listingContext = $5441862cd2f5e111$export$8d0c4fdbb05a2f2e();
|
|
268
|
+
// 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
|
|
269
|
+
// Happened on singular, they have some weird observer (+we also have one but ours is at least 3x more efficient)
|
|
270
|
+
const executeWhenIdleBatched = fn => {
|
|
271
|
+
if (typeof requestIdleCallback !== "function") setTimeout(fn); // Old browsers don't get optimisation
|
|
272
|
+
const existingStack = listingContext === null || listingContext === void 0 ? void 0 : listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol];
|
|
273
|
+
if (existingStack) return existingStack.add(fn);
|
|
274
|
+
const newStack = new Set([fn]);
|
|
275
|
+
if (listingContext) listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol] = newStack;
|
|
276
|
+
const processStackWhenIdle = () => requestIdleCallback(deadline => {
|
|
277
|
+
const start = performance.now();
|
|
278
|
+
const thirdDeadlineTime = deadline.timeRemaining() / 3; // observers coming after this take up 2-3x the time so don't use all of it
|
|
279
|
+
for (const fn of newStack) {
|
|
280
|
+
newStack.delete(fn);
|
|
281
|
+
fn();
|
|
282
|
+
const timeTaken = performance.now() - start;
|
|
283
|
+
if ((!deadline.timeRemaining() || timeTaken > thirdDeadlineTime) && newStack.size) {
|
|
284
|
+
// There's still work to be done but no time, so schedule another idle callback
|
|
285
|
+
processStackWhenIdle();
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
267
288
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
289
|
+
// Stack is empty
|
|
290
|
+
if (listingContext) delete listingContext[$56047603f9d212b6$var$onIdleFunctionsSymbol];
|
|
291
|
+
}, {
|
|
292
|
+
timeout: 15000
|
|
293
|
+
} // 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
|
|
294
|
+
);
|
|
295
|
+
|
|
296
|
+
processStackWhenIdle();
|
|
297
|
+
};
|
|
298
|
+
let sizeSetFastPath = false;
|
|
299
|
+
let hasDecodedFastPath = false;
|
|
300
|
+
let timeoutSet = false;
|
|
301
|
+
$8tj43$spread(img, $8tj43$mergeProps(otherOptions), false, true);
|
|
302
|
+
$8tj43$createEffect(() => {
|
|
303
|
+
if (!props.size()) return; // wait until we have a size
|
|
304
|
+
if (timeoutSet) return;
|
|
305
|
+
const handler = $8tj43$catchify(() => {
|
|
306
|
+
img.sizes = sizePX(); // use latest available value of props.size
|
|
307
|
+
if (!sizeSetFastPath) {
|
|
308
|
+
setHasSetSize(true);
|
|
309
|
+
sizeSetFastPath = true;
|
|
310
|
+
}
|
|
311
|
+
timeoutSet = false;
|
|
312
|
+
});
|
|
313
|
+
// Throttle the updating of sizes to avoid unnecessary image re-fetches during resize
|
|
314
|
+
// And also because we first set src after sizes has been set, wait with loading and decoding images until browser is idle
|
|
315
|
+
// This greatly improves performance when loading (more) products
|
|
316
|
+
// See https://depictaiworkspace.slack.com/archives/C05NJ0K3WRL/p1698220617663139
|
|
317
|
+
executeWhenIdleBatched(handler);
|
|
318
|
+
timeoutSet = true;
|
|
319
|
+
});
|
|
320
|
+
$8tj43$createEffect(() => {
|
|
321
|
+
if (!props.size() || !hasSetSize()) return; // If size isn't known or set, don't assign src yet since it would cause the most low res image to load
|
|
322
|
+
Object.assign(img, src_options());
|
|
323
|
+
// Add to DOM once decoded to not require/block any paints before image has completed loading and avoid showing broken image symbol
|
|
324
|
+
// We can do this because there has to be a container around us giving us a size
|
|
325
|
+
// No need to listen if we're already in the DOM
|
|
326
|
+
if (hasDecodedFastPath) return;
|
|
327
|
+
if (props.loading === "lazy") {
|
|
328
|
+
// For lazy loading there's no decoding to wait for as it only occurs when the image is visible
|
|
329
|
+
// Make sure src is set before we put the image into the DOM though so no broken image symbol is shown
|
|
330
|
+
setHasDecoded(true);
|
|
331
|
+
hasDecodedFastPath = true;
|
|
332
|
+
}
|
|
333
|
+
img.decode().catch(e => $8tj43$dwarn("Failed to decode image", e, img)) // Display the image also if loading failed so webdev can debug and doesn't get "no image"
|
|
334
|
+
.then(async () => {
|
|
335
|
+
// Also wait with inserting image (i.e. paint) until browser is idle
|
|
336
|
+
await new Promise(r => executeWhenIdleBatched(r));
|
|
337
|
+
setHasDecoded(true);
|
|
338
|
+
hasDecodedFastPath = true;
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
return $8tj43$createComponent((0, $8tj43$Show), {
|
|
342
|
+
get when() {
|
|
343
|
+
return hasDecoded();
|
|
344
|
+
},
|
|
345
|
+
children: img
|
|
346
|
+
});
|
|
272
347
|
}
|
|
273
348
|
function $56047603f9d212b6$var$make_srcset(url, resolutions) {
|
|
274
349
|
return resolutions.map(width => "".concat($56047603f9d212b6$var$generateImageUrl(url, width), " ").concat(width, "w")).join(", ");
|
|
@@ -306,7 +381,7 @@ function $4df489344a0f97c7$export$e4b984597b71e989(props) {
|
|
|
306
381
|
$8tj43$queueMacroTask(() => setCurrentImageSize(undefined)); // 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
|
|
307
382
|
});
|
|
308
383
|
|
|
309
|
-
container
|
|
384
|
+
$8tj43$insert(container, $8tj43$createComponent((0, $56047603f9d212b6$export$6e5611bc7e57e477), {
|
|
310
385
|
style: "width: 100%; height: 100%; object-fit: contain; position: absolute; inset: 0;",
|
|
311
386
|
get size() {
|
|
312
387
|
return $8tj43$createMemo(() => {
|
|
@@ -741,7 +816,7 @@ function $63f1f8dbcd07d3b0$export$d21e32dfedac04be(props) {
|
|
|
741
816
|
const container_class = "x" + $8tj43$createUniqueId();
|
|
742
817
|
const container_element_ = (() => {
|
|
743
818
|
const _el$ = $8tj43$getNextElement($63f1f8dbcd07d3b0$var$_tmpl$);
|
|
744
|
-
$8tj43$spread(_el$, $8tj43$
|
|
819
|
+
$8tj43$spread(_el$, $8tj43$mergeProps1(() => props.element_attributes, {
|
|
745
820
|
"classList": {
|
|
746
821
|
[container_class]: true
|
|
747
822
|
}
|
|
@@ -904,7 +979,7 @@ function $39ddb986053fb759$export$d41d19e89346fa2(_ref) {
|
|
|
904
979
|
} = slider;
|
|
905
980
|
const Layout = props => $63f1f8dbcd07d3b0$export$445d8d3f5f706a40(props, insert_here, true);
|
|
906
981
|
// Do like this, so we don't have to call mergeProps ourselves
|
|
907
|
-
$8tj43$createComponent(Layout, $8tj43$
|
|
982
|
+
$8tj43$createComponent(Layout, $8tj43$mergeProps1({
|
|
908
983
|
rows: "all",
|
|
909
984
|
layout: "slider"
|
|
910
985
|
}, layout_options_));
|
|
@@ -1037,7 +1112,7 @@ function $e3efeb558d952696$export$7da560f849543dff(_ref) {
|
|
|
1037
1112
|
_el$4 = _el$3.nextSibling,
|
|
1038
1113
|
[_el$5, _co$2] = $8tj43$getNextMarker(_el$4.nextSibling);
|
|
1039
1114
|
$8tj43$insert(_el$, (0, $ca55612a53dbbdd2$export$a2cc176055f8f08), _el$3, _co$);
|
|
1040
|
-
$8tj43$insert(_el$, $8tj43$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $8tj43$
|
|
1115
|
+
$8tj43$insert(_el$, $8tj43$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $8tj43$mergeProps1({
|
|
1041
1116
|
get rows() {
|
|
1042
1117
|
return rows_object_();
|
|
1043
1118
|
},
|
|
@@ -1441,7 +1516,7 @@ function $9783d437ad61594c$export$3b621d86b1566b2() {
|
|
|
1441
1516
|
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1442
1517
|
return (() => {
|
|
1443
1518
|
const _el$ = $8tj43$getNextElement($9783d437ad61594c$var$_tmpl$);
|
|
1444
|
-
$8tj43$spread(_el$, $8tj43$
|
|
1519
|
+
$8tj43$spread(_el$, $8tj43$mergeProps1(props, {
|
|
1445
1520
|
"xmlns": "http://www.w3.org/2000/svg",
|
|
1446
1521
|
"width": "21.064",
|
|
1447
1522
|
"height": "21.047",
|
|
@@ -1840,7 +1915,7 @@ const $ff3225aef892a467$var$_tmpl$ = /*#__PURE__*/$8tj43$template(`<svg><path d=
|
|
|
1840
1915
|
function $ff3225aef892a467$export$f21ab0717a89c77f(props) {
|
|
1841
1916
|
return (() => {
|
|
1842
1917
|
const _el$ = $8tj43$getNextElement($ff3225aef892a467$var$_tmpl$);
|
|
1843
|
-
$8tj43$spread(_el$, $8tj43$
|
|
1918
|
+
$8tj43$spread(_el$, $8tj43$mergeProps1(props, {
|
|
1844
1919
|
"xmlns": "http://www.w3.org/2000/svg",
|
|
1845
1920
|
"width": "11",
|
|
1846
1921
|
"height": "12"
|
|
@@ -3065,7 +3140,7 @@ const $830ea8efda59884e$export$414f6a19d38e655c = _ref => {
|
|
|
3065
3140
|
[_el$6, _co$] = $8tj43$getNextMarker(_el$5.nextSibling),
|
|
3066
3141
|
_el$7 = _el$6.nextSibling,
|
|
3067
3142
|
[_el$8, _co$2] = $8tj43$getNextMarker(_el$7.nextSibling);
|
|
3068
|
-
$8tj43$spread(_el$2, $8tj43$
|
|
3143
|
+
$8tj43$spread(_el$2, $8tj43$mergeProps1(attributes, {
|
|
3069
3144
|
get disabled() {
|
|
3070
3145
|
return $8tj43$memo(() => value().count_ === 0)() && !is_selected();
|
|
3071
3146
|
},
|
|
@@ -4984,7 +5059,7 @@ function $64d94dcaa058dc7b$export$ab6b147eec64fea5(props) {
|
|
|
4984
5059
|
const container_class = "x" + $8tj43$createUniqueId();
|
|
4985
5060
|
const container_element_ = (() => {
|
|
4986
5061
|
const _el$ = $8tj43$getNextElement($64d94dcaa058dc7b$var$_tmpl$);
|
|
4987
|
-
$8tj43$spread(_el$, $8tj43$
|
|
5062
|
+
$8tj43$spread(_el$, $8tj43$mergeProps1(() => props.element_attributes, {
|
|
4988
5063
|
"classList": {
|
|
4989
5064
|
[container_class]: true
|
|
4990
5065
|
}
|
|
@@ -5207,6 +5282,9 @@ function $ff7feae4dddd6073$var$remap_blocks_to_index(_ref2) {
|
|
|
5207
5282
|
const cols_showing = n_cols_currently_showing_();
|
|
5208
5283
|
// Need to keep track of products displaced by blocks above when mapping rows to indexes in the actual grid
|
|
5209
5284
|
const displaced_products = []; // undefined = is product, true = is content block if number instead of tuple number indicates content blocks in that row. Index in first array is row, index in second array is column
|
|
5285
|
+
if (!cols_showing)
|
|
5286
|
+
// Nope out of here if we don't know how many columns are showing
|
|
5287
|
+
return content_blocks_by_index;
|
|
5210
5288
|
for (let i = 0; i < wrapped_blocks.length; i++) {
|
|
5211
5289
|
// i = row to show at
|
|
5212
5290
|
const block = wrapped_blocks[i];
|
|
@@ -5271,10 +5349,12 @@ function $ff7feae4dddd6073$var$remap_blocks_to_index(_ref2) {
|
|
|
5271
5349
|
function $ff7feae4dddd6073$var$wrap_blocks_in_div(rendered_content_blocks, max_span_columns) {
|
|
5272
5350
|
const get_wrapped_blocks = $8tj43$mapArray(() => rendered_content_blocks, block => {
|
|
5273
5351
|
if (!block) return;
|
|
5274
|
-
const
|
|
5352
|
+
const final_span_columns = $8tj43$createMemo(() => {
|
|
5275
5353
|
var _max_span_columns;
|
|
5276
5354
|
return Math.min(block.span_columns, (_max_span_columns = max_span_columns()) !== null && _max_span_columns !== void 0 ? _max_span_columns : Infinity);
|
|
5277
|
-
};
|
|
5355
|
+
});
|
|
5356
|
+
// If the item spans an entire row, limit the height to 1 row since there's no concept of "rows" if there are no products beside the block
|
|
5357
|
+
const final_span_rows = $8tj43$createMemo(() => final_span_columns() === max_span_columns() ? 1 : block.span_rows);
|
|
5278
5358
|
const [rendering_delayed, set_rendering_delayed_] = $8tj43$createSignal(true);
|
|
5279
5359
|
const content = $8tj43$createComponent((0, $8tj43$Show), {
|
|
5280
5360
|
get when() {
|
|
@@ -5289,10 +5369,10 @@ function $ff7feae4dddd6073$var$wrap_blocks_in_div(rendered_content_blocks, max_s
|
|
|
5289
5369
|
}));
|
|
5290
5370
|
$8tj43$effect(_p$ => {
|
|
5291
5371
|
const _v$ = {
|
|
5292
|
-
[(0, $64d94dcaa058dc7b$export$c500183c31c2b22e)]:
|
|
5372
|
+
[(0, $64d94dcaa058dc7b$export$c500183c31c2b22e)]: final_span_columns()
|
|
5293
5373
|
},
|
|
5294
|
-
_v$2 = "span ".concat(
|
|
5295
|
-
_v$3 = "span ".concat(
|
|
5374
|
+
_v$2 = "span ".concat(final_span_columns()),
|
|
5375
|
+
_v$3 = "span ".concat(final_span_rows());
|
|
5296
5376
|
_p$._v$ = $8tj43$style(_el$, _v$, _p$._v$);
|
|
5297
5377
|
_v$2 !== _p$._v$2 && ((_p$._v$2 = _v$2) != null ? _el$.style.setProperty("grid-column", _v$2) : _el$.style.removeProperty("grid-column"));
|
|
5298
5378
|
_v$3 !== _p$._v$3 && ((_p$._v$3 = _v$3) != null ? _el$.style.setProperty("grid-row", _v$3) : _el$.style.removeProperty("grid-row"));
|
|
@@ -5305,7 +5385,7 @@ function $ff7feae4dddd6073$var$wrap_blocks_in_div(rendered_content_blocks, max_s
|
|
|
5305
5385
|
return _el$;
|
|
5306
5386
|
}
|
|
5307
5387
|
});
|
|
5308
|
-
return $8tj43$
|
|
5388
|
+
return $8tj43$mergeProps(block, {
|
|
5309
5389
|
// Create content divs for the blocks with as much fine-grained diffing as possible?
|
|
5310
5390
|
content: () => {
|
|
5311
5391
|
// 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
|
|
@@ -5315,7 +5395,10 @@ function $ff7feae4dddd6073$var$wrap_blocks_in_div(rendered_content_blocks, max_s
|
|
|
5315
5395
|
},
|
|
5316
5396
|
get span_columns() {
|
|
5317
5397
|
// Cap max width of block to the number of columns available, for everyone downstream
|
|
5318
|
-
return
|
|
5398
|
+
return final_span_columns();
|
|
5399
|
+
},
|
|
5400
|
+
get span_rows() {
|
|
5401
|
+
return final_span_rows();
|
|
5319
5402
|
}
|
|
5320
5403
|
});
|
|
5321
5404
|
});
|
|
@@ -6021,7 +6104,7 @@ function $082c4ed3e22f8d71$export$9bf11afa910f536e(_ref) {
|
|
|
6021
6104
|
get children() {
|
|
6022
6105
|
return (() => {
|
|
6023
6106
|
const _el$34 = $8tj43$getNextElement($082c4ed3e22f8d71$var$_tmpl$5);
|
|
6024
|
-
$8tj43$insert(_el$34, $8tj43$createComponent((0, $f6b0500577e1b210$export$3f1a388cc0d8fed7), $8tj43$
|
|
6107
|
+
$8tj43$insert(_el$34, $8tj43$createComponent((0, $f6b0500577e1b210$export$3f1a388cc0d8fed7), $8tj43$mergeProps1(args_for_filtering_, {
|
|
6025
6108
|
are_in_modal_: true
|
|
6026
6109
|
})));
|
|
6027
6110
|
return _el$34;
|
|
@@ -8461,7 +8544,7 @@ function $ef0f18a578b32578$export$82eafebb825fc23f() {
|
|
|
8461
8544
|
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
8462
8545
|
return (() => {
|
|
8463
8546
|
const _el$ = $8tj43$getNextElement($ef0f18a578b32578$var$_tmpl$);
|
|
8464
|
-
$8tj43$spread(_el$, $8tj43$
|
|
8547
|
+
$8tj43$spread(_el$, $8tj43$mergeProps1(props, {
|
|
8465
8548
|
"xmlns": "http://www.w3.org/2000/svg",
|
|
8466
8549
|
"width": "20",
|
|
8467
8550
|
"height": "22"
|
|
@@ -8644,7 +8727,7 @@ function $8ef6232475d44150$export$7de92c4c2205ebf3(_ref) {
|
|
|
8644
8727
|
[_el$6, _co$2] = $8tj43$getNextMarker(_el$5.nextSibling);
|
|
8645
8728
|
$8tj43$insert(_el$2, () => i18n_.search_recs_title_());
|
|
8646
8729
|
$8tj43$insert(_el$, (0, $ca55612a53dbbdd2$export$a2cc176055f8f08), _el$4, _co$);
|
|
8647
|
-
$8tj43$insert(_el$, $8tj43$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $8tj43$
|
|
8730
|
+
$8tj43$insert(_el$, $8tj43$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $8tj43$mergeProps1({
|
|
8648
8731
|
rows: rows_object,
|
|
8649
8732
|
layout: "grid",
|
|
8650
8733
|
element_attributes: {
|
|
@@ -10680,7 +10763,7 @@ function $22470de5f42cc35d$export$f631859cab12b342(_ref) {
|
|
|
10680
10763
|
[_el$8, _co$] = $8tj43$getNextMarker(_el$7.nextSibling),
|
|
10681
10764
|
_el$9 = _el$8.nextSibling,
|
|
10682
10765
|
[_el$10, _co$2] = $8tj43$getNextMarker(_el$9.nextSibling);
|
|
10683
|
-
$8tj43$insert(_el$4, $8tj43$createComponent(LinkIfPossible, $8tj43$
|
|
10766
|
+
$8tj43$insert(_el$4, $8tj43$createComponent(LinkIfPossible, $8tj43$mergeProps1(make_link_attributes, {
|
|
10684
10767
|
tabIndex: "-1",
|
|
10685
10768
|
get children() {
|
|
10686
10769
|
return $8tj43$createComponent((0, $3c5e15c6ee4227a9$export$605674723bcc715c), {
|
|
@@ -10689,7 +10772,7 @@ function $22470de5f42cc35d$export$f631859cab12b342(_ref) {
|
|
|
10689
10772
|
});
|
|
10690
10773
|
}
|
|
10691
10774
|
})));
|
|
10692
|
-
$8tj43$insert(_el$5, $8tj43$createComponent(LinkIfPossible, $8tj43$
|
|
10775
|
+
$8tj43$insert(_el$5, $8tj43$createComponent(LinkIfPossible, $8tj43$mergeProps1({
|
|
10693
10776
|
"class": "content-title line-clamp"
|
|
10694
10777
|
}, make_link_attributes, {
|
|
10695
10778
|
get title() {
|
|
@@ -10851,7 +10934,7 @@ function $d53ebed6f63304e4$export$6d0c9c22f6652669(_ref) {
|
|
|
10851
10934
|
},
|
|
10852
10935
|
number_of_results_: num_results
|
|
10853
10936
|
}), _el$3, _co$);
|
|
10854
|
-
$8tj43$insert(_el$, $8tj43$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $8tj43$
|
|
10937
|
+
$8tj43$insert(_el$, $8tj43$createComponent((0, $63f1f8dbcd07d3b0$export$d21e32dfedac04be), $8tj43$mergeProps1({
|
|
10855
10938
|
layout: "grid",
|
|
10856
10939
|
element_attributes: {
|
|
10857
10940
|
class: "cards"
|
|
@@ -11032,7 +11115,7 @@ function $da279c5a540c6846$export$a54ec244c8863715(_ref) {
|
|
|
11032
11115
|
var _search_results_4, _search_results_4$con;
|
|
11033
11116
|
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_)();
|
|
11034
11117
|
});
|
|
11035
|
-
const results_for = $8tj43$createComponent((0, $69602b3d8fd54c38$export$9dd50d35b9d94fdf), $8tj43$
|
|
11118
|
+
const results_for = $8tj43$createComponent((0, $69602b3d8fd54c38$export$9dd50d35b9d94fdf), $8tj43$mergeProps1({
|
|
11036
11119
|
get type() {
|
|
11037
11120
|
return (0, $69602b3d8fd54c38$export$2452208c79fe93ea).products;
|
|
11038
11121
|
},
|