@depict-ai/ui 1.4.24 → 2.0.0

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/latest/index.js CHANGED
@@ -1,12 +1,11 @@
1
- import { add_to_version_info as $9HbP8$add_to_version_info, make_random_classname as $9HbP8$make_random_classname, n_col_styling_with_dist as $9HbP8$n_col_styling_with_dist, catchify as $9HbP8$catchify, layout_get_visible_recs_without_partial_rows as $9HbP8$layout_get_visible_recs_without_partial_rows, layout_get_total_rec_amount_for_row as $9HbP8$layout_get_total_rec_amount_for_row, layout_media_query_header as $9HbP8$layout_media_query_header, report as $9HbP8$report, Amazing_Slider as $9HbP8$Amazing_Slider, slider_snap_css as $9HbP8$slider_snap_css, slider_fading_factory as $9HbP8$slider_fading_factory, is_safari as $9HbP8$is_safari, observer as $9HbP8$observer, useExpandingContainer as $9HbP8$useExpandingContainer, standard_price_format as $9HbP8$standard_price_format, dlog as $9HbP8$dlog, hex_to_rgb as $9HbP8$hex_to_rgb, relative_luminance_from_rgb as $9HbP8$relative_luminance_from_rgb, javascript_media_query as $9HbP8$javascript_media_query, fetch_recs as $9HbP8$fetch_recs, snakeCasifyObject as $9HbP8$snakeCasifyObject, instant_exec_on_suspect_history_change as $9HbP8$instant_exec_on_suspect_history_change, base_url as $9HbP8$base_url, get_depict_id as $9HbP8$get_depict_id, get_user_id as $9HbP8$get_user_id, get_session_id as $9HbP8$get_session_id, sort_obj as $9HbP8$sort_obj, fetch_retry as $9HbP8$fetch_retry, add_version_query_params as $9HbP8$add_version_query_params, dwarn as $9HbP8$dwarn, make_url_with_query_params as $9HbP8$make_url_with_query_params, edit_current_page_meta_tags as $9HbP8$edit_current_page_meta_tags, use_href_accessor as $9HbP8$use_href_accessor, base64_encode_unicode as $9HbP8$base64_encode_unicode, base64_decode_unicode as $9HbP8$base64_decode_unicode, queueMacroTask as $9HbP8$queueMacroTask, is_debug as $9HbP8$is_debug, make_asyncIterable_exiter as $9HbP8$make_asyncIterable_exiter, href_change_ipns as $9HbP8$href_change_ipns, ContainedImage as $9HbP8$ContainedImage, buildThresholdList as $9HbP8$buildThresholdList, deparallelize_no_drop as $9HbP8$deparallelize_no_drop, insert_surfaces as $9HbP8$insert_surfaces } from "@depict-ai/utilishared/latest";
1
+ import { add_to_version_info as $9HbP8$add_to_version_info, slider_fractional_factory as $9HbP8$slider_fractional_factory, make_random_classname as $9HbP8$make_random_classname, n_col_styling_with_dist as $9HbP8$n_col_styling_with_dist, catchify as $9HbP8$catchify, layout_get_visible_recs_without_partial_rows as $9HbP8$layout_get_visible_recs_without_partial_rows, layout_get_total_rec_amount_for_row as $9HbP8$layout_get_total_rec_amount_for_row, layout_media_query_header as $9HbP8$layout_media_query_header, report as $9HbP8$report, Amazing_Slider as $9HbP8$Amazing_Slider, slider_snap_css as $9HbP8$slider_snap_css, slider_fading_factory as $9HbP8$slider_fading_factory, observer as $9HbP8$observer, is_safari as $9HbP8$is_safari, useExpandingContainer as $9HbP8$useExpandingContainer, standard_price_format as $9HbP8$standard_price_format, dlog as $9HbP8$dlog, hex_to_rgb as $9HbP8$hex_to_rgb, relative_luminance_from_rgb as $9HbP8$relative_luminance_from_rgb, javascript_media_query as $9HbP8$javascript_media_query, fetch_recs as $9HbP8$fetch_recs, snakeCasifyObject as $9HbP8$snakeCasifyObject, instant_exec_on_suspect_history_change as $9HbP8$instant_exec_on_suspect_history_change, base_url as $9HbP8$base_url, get_depict_id as $9HbP8$get_depict_id, get_user_id as $9HbP8$get_user_id, get_session_id as $9HbP8$get_session_id, sort_obj as $9HbP8$sort_obj, fetch_retry as $9HbP8$fetch_retry, add_version_query_params as $9HbP8$add_version_query_params, dwarn as $9HbP8$dwarn, make_url_with_query_params as $9HbP8$make_url_with_query_params, edit_current_page_meta_tags as $9HbP8$edit_current_page_meta_tags, use_href_accessor as $9HbP8$use_href_accessor, base64_encode_unicode as $9HbP8$base64_encode_unicode, base64_decode_unicode as $9HbP8$base64_decode_unicode, queueMacroTask as $9HbP8$queueMacroTask, is_debug as $9HbP8$is_debug, make_asyncIterable_exiter as $9HbP8$make_asyncIterable_exiter, href_change_ipns as $9HbP8$href_change_ipns, ContainedImage as $9HbP8$ContainedImage, buildThresholdList as $9HbP8$buildThresholdList, deparallelize_no_drop as $9HbP8$deparallelize_no_drop, ListenableSet as $9HbP8$ListenableSet, insert_surfaces as $9HbP8$insert_surfaces } from "@depict-ai/utilishared/latest";
2
2
  import { template as $9HbP8$template, getNextElement as $9HbP8$getNextElement, insert as $9HbP8$insert, createComponent as $9HbP8$createComponent, mergeProps as $9HbP8$mergeProps, isServer as $9HbP8$isServer, spread as $9HbP8$spread, runHydrationEvents as $9HbP8$runHydrationEvents, addEventListener as $9HbP8$addEventListener, className as $9HbP8$className, memo as $9HbP8$memo, delegateEvents as $9HbP8$delegateEvents, effect as $9HbP8$effect, classList as $9HbP8$classList, setAttribute as $9HbP8$setAttribute, getNextMarker as $9HbP8$getNextMarker, style as $9HbP8$style, Dynamic as $9HbP8$Dynamic, use as $9HbP8$use } from "solid-js/web";
3
- import { createMemo as $9HbP8$createMemo, createResource as $9HbP8$createResource, Suspense as $9HbP8$Suspense, Show as $9HbP8$Show, createSignal as $9HbP8$createSignal, createRenderEffect as $9HbP8$createRenderEffect, createRoot as $9HbP8$createRoot, onCleanup as $9HbP8$onCleanup, For as $9HbP8$For, getOwner as $9HbP8$getOwner, runWithOwner as $9HbP8$runWithOwner, createEffect as $9HbP8$createEffect, untrack as $9HbP8$untrack, createComputed as $9HbP8$createComputed, ErrorBoundary as $9HbP8$ErrorBoundary, Index as $9HbP8$Index, on as $9HbP8$on, batch as $9HbP8$batch, createReaction as $9HbP8$createReaction } from "solid-js";
4
- import { slider_fractional_factory as $9HbP8$slider_fractional_factory } from "@depict-ai/utilishared/latest/latest";
3
+ import { createMemo as $9HbP8$createMemo, createResource as $9HbP8$createResource, Suspense as $9HbP8$Suspense, Show as $9HbP8$Show, createSignal as $9HbP8$createSignal, createRenderEffect as $9HbP8$createRenderEffect, createRoot as $9HbP8$createRoot, onCleanup as $9HbP8$onCleanup, For as $9HbP8$For, getOwner as $9HbP8$getOwner, runWithOwner as $9HbP8$runWithOwner, createEffect as $9HbP8$createEffect, untrack as $9HbP8$untrack, createUniqueId as $9HbP8$createUniqueId, createComputed as $9HbP8$createComputed, ErrorBoundary as $9HbP8$ErrorBoundary, Index as $9HbP8$Index, on as $9HbP8$on, batch as $9HbP8$batch, createReaction as $9HbP8$createReaction } from "solid-js";
5
4
 
6
5
  /*! Depict.ai search and product listing SDK */
7
6
  import { register_es_version } from "../multi_import_deduplicator.mjs";
8
7
  register_es_version("ui", "latest");
9
- const $ec291e0010116877$export$83d89fbfd8236492 = "1.4.24";
8
+ const $ec291e0010116877$export$83d89fbfd8236492 = "2.0.0";
10
9
  const $b5cccc8ee7d24677$var$transform_elements = sorted_cols_at_size => {
11
10
  const cols_at_size = [];
12
11
  for (let i = 0; i < sorted_cols_at_size.length; i++) {
@@ -65,7 +64,9 @@ function $1848f7cca286fbab$export$ff7109b9b2b206ba(sdk_cols_at_size, min_width_f
65
64
  }
66
65
  function $a458486f22b22f63$export$a2cc176055f8f08() {
67
66
  const text = "Please try setting `colsAtSize` on the `SearchPage`/`CategoryPage` components to change the grid before setting it with CSS. If you do with CSS, set `ColsAtSize` to an empty array to ensure no declarations created by the SDK leak through.";
68
- return (0, $9HbP8$isServer) ? `<!-- ${text} -->` : document.createComment(text);
67
+ return (0, $9HbP8$isServer) ? {
68
+ t: `<!-- ${text} -->`
69
+ } : document.createComment(text);
69
70
  }
70
71
  function $a52235d12ccf9c88$export$2f0cbfbb4354bb52(elements) {
71
72
  // FYI this probably doesn't work on hugely deep nestings or large amount of elements
@@ -280,9 +281,14 @@ function $b7436a6d1fd64e3b$export$b69d0d92862de18b(props) {
280
281
  const $c8d5ff4524619fcd$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<div></div>`, 2),
281
282
  $c8d5ff4524619fcd$var$_tmpl$2 = /*#__PURE__*/$9HbP8$template(`<style type="text/css"></style>`, 2);
282
283
  function $c8d5ff4524619fcd$export$d21e32dfedac04be(props) {
284
+ const container_class = "x" + $9HbP8$createUniqueId();
283
285
  const container_element_ = (() => {
284
286
  const _el$ = $9HbP8$getNextElement($c8d5ff4524619fcd$var$_tmpl$);
285
- $9HbP8$spread(_el$, $9HbP8$mergeProps(() => props.element_attributes), false, true);
287
+ $9HbP8$spread(_el$, $9HbP8$mergeProps(() => props.element_attributes, {
288
+ "classList": {
289
+ [container_class]: true
290
+ }
291
+ }), false, true);
286
292
  $9HbP8$insert(_el$, () => props.children);
287
293
  $9HbP8$runHydrationEvents();
288
294
  return _el$;
@@ -293,11 +299,16 @@ function $c8d5ff4524619fcd$export$d21e32dfedac04be(props) {
293
299
  },
294
300
  severity_: "error",
295
301
  get children() {
296
- return $c8d5ff4524619fcd$export$445d8d3f5f706a40(props, container_element_);
302
+ return $c8d5ff4524619fcd$export$445d8d3f5f706a40(props, container_element_, false, container_class);
297
303
  }
298
304
  });
299
305
  }
300
- function $c8d5ff4524619fcd$export$445d8d3f5f706a40(props, container_element, insert_after_container = false) {
306
+ function $c8d5ff4524619fcd$export$445d8d3f5f706a40(props, container_element, insert_after_container = false, container_class) {
307
+ if (!container_class) {
308
+ // only try to add if it wasn't provided, so that we have a code path without classList when doing SSR
309
+ container_class = $9HbP8$make_random_classname();
310
+ container_element.classList.add(container_class);
311
+ }
301
312
  // Copy of Layout from utilishared but using solid-js signals instead of async iterable IPNS
302
313
  const show_all_rows = $9HbP8$createMemo(() => props.rows === "all");
303
314
  const rows_or_empty_object = $9HbP8$createMemo(() => show_all_rows() ? {} : props.rows);
@@ -312,46 +323,41 @@ function $c8d5ff4524619fcd$export$445d8d3f5f706a40(props, container_element, ins
312
323
  return !(!button || Array.isArray(button) && !button.length);
313
324
  });
314
325
  const [get_styling, set_styling] = $9HbP8$createSignal();
315
- const container_class = $9HbP8$make_random_classname();
316
326
  const selector_beginning = `.depict .${container_class}>`; // class so ppl can have id if needed
317
327
  const [get_children_count, set_children_count] = $9HbP8$createSignal(0);
318
- const update_children_count = () => set_children_count(container_element.children.length);
328
+ const update_children_count = () => (0, $9HbP8$isServer) ? 20 : set_children_count(container_element.children.length);
319
329
  const col_styling = $9HbP8$createMemo(() => $9HbP8$n_col_styling_with_dist(selector_beginning, props.grid_spacing, props.cols_at_size, props.layout, props.override_vertical_spacing));
320
330
  const default_currently_visible_signal = $9HbP8$createSignal($9HbP8$untrack(() => rows_or_empty_object().start_rows ?? 1)); // Keep this signal here, so it doesn't change when rows_or_empty_object and I think it's to be expected that the "internal default signal" stays the same
321
331
  const rows_visible_signal = $9HbP8$createMemo(() => rows_or_empty_object().currently_visible || default_currently_visible_signal);
322
332
  const get_rows_visible = $9HbP8$createMemo(() => rows_visible_signal()[0]());
323
333
  const set_rows_visible = $9HbP8$createMemo(() => rows_visible_signal()[1]);
324
- const view_more_button_class = $9HbP8$make_random_classname();
325
- const view_less_button_class = $9HbP8$make_random_classname();
326
- const style_element = (() => {
327
- const _el$2 = $9HbP8$getNextElement($c8d5ff4524619fcd$var$_tmpl$2);
328
- $9HbP8$insert(_el$2, get_styling);
329
- return _el$2;
330
- })();
334
+ const view_more_button_class = "m" + $9HbP8$createUniqueId();
335
+ const view_less_button_class = "l" + $9HbP8$createUniqueId(); // https://github.com/solidjs/solid-docs/issues/263#issuecomment-1622388079
331
336
  const view_more_button_container = $9HbP8$createMemo(() => have_a_view_more_button() && (() => {
332
- const _el$3 = $9HbP8$getNextElement($c8d5ff4524619fcd$var$_tmpl$);
333
- $9HbP8$addEventListener(_el$3, "click", $9HbP8$catchify(() => set_rows_visible()(prev => prev + (rows_or_empty_object().rows_per_click ?? 1))), true);
334
- $9HbP8$className(_el$3, `load-more-container ${view_more_button_class}`);
335
- $9HbP8$insert(_el$3, () => rows_or_empty_object().button);
337
+ const _el$2 = $9HbP8$getNextElement($c8d5ff4524619fcd$var$_tmpl$);
338
+ $9HbP8$addEventListener(_el$2, "click", $9HbP8$catchify(() => set_rows_visible()(prev => prev + (rows_or_empty_object().rows_per_click ?? 1))), true);
339
+ $9HbP8$className(_el$2, `load-more-container ${view_more_button_class}`);
340
+ $9HbP8$insert(_el$2, () => rows_or_empty_object().button);
336
341
  $9HbP8$runHydrationEvents();
337
- return _el$3;
342
+ return _el$2;
338
343
  })());
339
344
  // We need to have duplicate buttons because which ones is shown depends on the number of rows visible and therefore on the viewport size and therefore on the css media queries
340
345
  const view_less_button_container = $9HbP8$createMemo(() => have_a_view_less_button() && (() => {
341
- const _el$4 = $9HbP8$getNextElement($c8d5ff4524619fcd$var$_tmpl$);
342
- $9HbP8$addEventListener(_el$4, "click", $9HbP8$catchify(() => set_rows_visible()(() => rows_or_empty_object().start_rows ?? 1)), true);
343
- $9HbP8$className(_el$4, `load-less-container ${view_less_button_class}`);
344
- $9HbP8$insert(_el$4, () => rows_or_empty_object().view_less_button);
346
+ const _el$3 = $9HbP8$getNextElement($c8d5ff4524619fcd$var$_tmpl$);
347
+ $9HbP8$addEventListener(_el$3, "click", $9HbP8$catchify(() => set_rows_visible()(() => rows_or_empty_object().start_rows ?? 1)), true);
348
+ $9HbP8$className(_el$3, `load-less-container ${view_less_button_class}`);
349
+ $9HbP8$insert(_el$3, () => rows_or_empty_object().view_less_button);
345
350
  $9HbP8$runHydrationEvents();
346
- return _el$4;
351
+ return _el$3;
347
352
  })());
348
- container_element.classList.add(container_class);
353
+ const [force_style_update, set_force_style_update] = $9HbP8$createSignal("");
349
354
  $9HbP8$createComputed(() => {
350
355
  // Make sure we don't have more rows visible than max_rows (this could happen by max_rows being decreased)
351
356
  const rows_visible = get_rows_visible();
352
357
  const max_rows = rows_or_empty_object().max_rows;
353
358
  if (!isNaN(max_rows) && max_rows >= 0 && rows_visible > max_rows) set_rows_visible()(max_rows);
354
359
  });
360
+ $9HbP8$createEffect(() => set_force_style_update(" ")); // force style update after hydration due to https://discord.com/channels/722131463138705510/722167424186843267/1151544212517552168
355
361
  $9HbP8$createRenderEffect(() => {
356
362
  // Be careful to only read show_all_rows in here (ofc doesn't apply to nested effects)
357
363
  if (show_all_rows()) {
@@ -360,11 +366,13 @@ function $c8d5ff4524619fcd$export$445d8d3f5f706a40(props, container_element, ins
360
366
  return;
361
367
  }
362
368
  update_children_count();
363
- const mutation_observer = new MutationObserver($9HbP8$catchify(update_children_count));
364
- mutation_observer.observe(container_element, {
365
- childList: true
366
- });
367
- $9HbP8$onCleanup(() => mutation_observer.disconnect());
369
+ if (!(0, $9HbP8$isServer)) {
370
+ const mutation_observer = new MutationObserver($9HbP8$catchify(update_children_count));
371
+ mutation_observer.observe(container_element, {
372
+ childList: true
373
+ });
374
+ $9HbP8$onCleanup(() => mutation_observer.disconnect());
375
+ }
368
376
  set_styling(
369
377
  // this is needed because solid will think that the memo-accessor is a setter function otherwise
370
378
  () => $9HbP8$createMemo(() => {
@@ -375,7 +383,7 @@ function $c8d5ff4524619fcd$export$445d8d3f5f706a40(props, container_element, ins
375
383
  } = rows_or_empty_object();
376
384
  const rows_visible = get_rows_visible();
377
385
  const children_count = get_children_count();
378
- return col_styling() + props.cols_at_size.map(options => {
386
+ return force_style_update() + col_styling() + props.cols_at_size.map(options => {
379
387
  const [recs_per_row, min, max] = options;
380
388
  let should_hide_view_more_button;
381
389
  let visible_recs;
@@ -396,6 +404,11 @@ function $c8d5ff4524619fcd$export$445d8d3f5f706a40(props, container_element, ins
396
404
  }).join("");
397
405
  }));
398
406
  });
407
+ const style_element = (() => {
408
+ const _el$4 = $9HbP8$getNextElement($c8d5ff4524619fcd$var$_tmpl$2);
409
+ $9HbP8$insert(_el$4, get_styling);
410
+ return _el$4;
411
+ })(); // need to create this after set_styling has been called or else there will be no styling in the SSR'd output
399
412
  if (insert_after_container) container_element.after(style_element);
400
413
  return [container_element, $9HbP8$memo(view_more_button_container), $9HbP8$memo(view_less_button_container), style_element];
401
414
  }
@@ -423,18 +436,26 @@ function $f32e14878e75af51$export$6649caad96ef8870({
423
436
  slider_ref_: slider_ref_,
424
437
  faded_opacity_ = 0.7,
425
438
  mutation_plugins_ = [],
426
- disable_fading_: disable_fading_
439
+ disable_fading_: disable_fading_,
440
+ arrow_width_: arrow_width_,
441
+ arrow_height_: arrow_height_
427
442
  }) {
428
443
  const slider = new (0, $9HbP8$Amazing_Slider)({
429
444
  button_contents: {
430
445
  left: [(() => {
431
446
  const _el$ = $9HbP8$getNextElement($f32e14878e75af51$var$_tmpl$);
432
- $9HbP8$insert(_el$, $9HbP8$createComponent((0, $fbbadcb080ad1d4a$export$8be2714ec7f169ee), {}));
447
+ $9HbP8$insert(_el$, $9HbP8$createComponent((0, $fbbadcb080ad1d4a$export$8be2714ec7f169ee), {
448
+ height_: arrow_height_,
449
+ width_: arrow_width_
450
+ }));
433
451
  return _el$;
434
452
  })()],
435
453
  right: [(() => {
436
454
  const _el$2 = $9HbP8$getNextElement($f32e14878e75af51$var$_tmpl$);
437
- $9HbP8$insert(_el$2, $9HbP8$createComponent((0, $fbbadcb080ad1d4a$export$8be2714ec7f169ee), {}));
455
+ $9HbP8$insert(_el$2, $9HbP8$createComponent((0, $fbbadcb080ad1d4a$export$8be2714ec7f169ee), {
456
+ height_: arrow_height_,
457
+ width_: arrow_width_
458
+ }));
438
459
  return _el$2;
439
460
  })()]
440
461
  },
@@ -459,6 +480,8 @@ function $c4492d24952ed731$export$d41d19e89346fa2({
459
480
  const is_showing_something = $9HbP8$createMemo(() => recommendations_resource_.loading || recommendations_resource_()?.length);
460
481
  const num_placeholders_ = () => 20;
461
482
  const slider = $9HbP8$createComponent((0, $f32e14878e75af51$export$6649caad96ef8870), {
483
+ arrow_height_: 25,
484
+ arrow_width_: 12.5,
462
485
  disable_fading_: true,
463
486
  slider_ref_: slider => {
464
487
  const {
@@ -503,34 +526,66 @@ function $c4492d24952ed731$export$d41d19e89346fa2({
503
526
  children: slider
504
527
  });
505
528
  }
529
+ function $16b52438165aafe2$export$23fca46f3143581f(component, error_message) {
530
+ const component_in_error_boundary = do_with_elements => {
531
+ const error_boundary_wrapped = $b7436a6d1fd64e3b$export$b69d0d92862de18b({
532
+ severity_: "error",
533
+ message_: error_message,
534
+ get children() {
535
+ const elements = component();
536
+ do_with_elements?.(elements);
537
+ return elements;
538
+ }
539
+ });
540
+ // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
541
+ if (typeof error_boundary_wrapped === "function")
542
+ // @ts-ignore
543
+ return error_boundary_wrapped();
544
+ // On the server it returns a string, so we just return that
545
+ return error_boundary_wrapped;
546
+ };
547
+ const owner = $9HbP8$getOwner();
548
+ if (owner == null) return $9HbP8$createRoot(dispose => {
549
+ // 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
550
+ return component_in_error_boundary(elements => {
551
+ const have_multiple = Array.isArray(elements);
552
+ if (have_multiple ? !elements?.length : !elements) return;
553
+ (0, $9HbP8$observer).onremoved(have_multiple ? elements[0] : elements, dispose);
554
+ });
555
+ });else
556
+ // we're already in a root so cleanups are handled
557
+ return component_in_error_boundary();
558
+ }
506
559
  const $ee116da074deb002$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<div class="depict recommendations"></div>`, 2);
507
560
  function $ee116da074deb002$export$9574e176201e5e8d(props) {
508
- const grid_spacing_override = $9HbP8$createMemo(() => {
509
- const {
510
- grid_spacing: grid_spacing
511
- } = props; // can be reactive
512
- return typeof grid_spacing === "string" ? {
513
- grid_spacing: grid_spacing
514
- } : {
515
- override_vertical_spacing: grid_spacing.vertical,
516
- grid_spacing: grid_spacing.horizontal
517
- };
518
- });
519
- const [recommendations_resource_] = $9HbP8$createResource(() => props.recommendations, recs => recs);
520
- return (() => {
521
- const _el$ = $9HbP8$getNextElement($ee116da074deb002$var$_tmpl$);
522
- $9HbP8$insert(_el$, () => $c4492d24952ed731$export$d41d19e89346fa2({
523
- product_card_template_: (...args) => props.product_card_template(...args),
524
- recommendations_resource_: recommendations_resource_,
525
- market_: () => props.market,
526
- merchant_: () => props.merchant,
527
- layout_options_: $9HbP8$createMemo(() => ({
528
- cols_at_size: $b5cccc8ee7d24677$export$6daf8749b65a1b77($1848f7cca286fbab$export$ff7109b9b2b206ba(props.cols_at_size)),
529
- ...grid_spacing_override()
530
- }))
531
- }));
532
- return _el$;
533
- })();
561
+ return $16b52438165aafe2$export$23fca46f3143581f(() => {
562
+ const grid_spacing_override = $9HbP8$createMemo(() => {
563
+ const {
564
+ grid_spacing: grid_spacing
565
+ } = props; // can be reactive
566
+ return typeof grid_spacing === "string" ? {
567
+ grid_spacing: grid_spacing
568
+ } : {
569
+ override_vertical_spacing: grid_spacing.vertical,
570
+ grid_spacing: grid_spacing.horizontal
571
+ };
572
+ });
573
+ const [recommendations_resource_] = $9HbP8$createResource(() => props.recommendations, recs => recs);
574
+ return (() => {
575
+ const _el$ = $9HbP8$getNextElement($ee116da074deb002$var$_tmpl$);
576
+ $9HbP8$insert(_el$, () => $c4492d24952ed731$export$d41d19e89346fa2({
577
+ product_card_template_: (...args) => props.product_card_template(...args),
578
+ recommendations_resource_: recommendations_resource_,
579
+ market_: () => props.market,
580
+ merchant_: () => props.merchant,
581
+ layout_options_: $9HbP8$createMemo(() => ({
582
+ cols_at_size: $b5cccc8ee7d24677$export$6daf8749b65a1b77($1848f7cca286fbab$export$ff7109b9b2b206ba(props.cols_at_size)),
583
+ ...grid_spacing_override()
584
+ }))
585
+ }));
586
+ return _el$;
587
+ })();
588
+ }, "RecommendationSlider failed");
534
589
  }
535
590
  const $3da8afe3ed57cf34$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<div class="recommendation-grid"><!#><!/><!#><!/></div>`, 6);
536
591
  function $3da8afe3ed57cf34$export$7da560f849543dff({
@@ -593,46 +648,48 @@ function $3da8afe3ed57cf34$export$7da560f849543dff({
593
648
  const $9ea5383493360761$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<button class="show-more major" type="button"></button>`, 2),
594
649
  $9ea5383493360761$var$_tmpl$2 = /*#__PURE__*/$9HbP8$template(`<div class="depict plp recommendations"></div>`, 2);
595
650
  function $9ea5383493360761$export$9756467d34d91cdb(props) {
596
- const rows_object_ = $9HbP8$createMemo(() => {
597
- const view_more_button = props.view_more_button;
598
- if (!view_more_button) return "all";
599
- return {
600
- start_rows: view_more_button.start_rows,
601
- rows_per_click: view_more_button.rows_per_click,
602
- button: (() => {
603
- const _el$ = $9HbP8$getNextElement($9ea5383493360761$var$_tmpl$);
604
- $9HbP8$insert(_el$, () => view_more_button.text);
605
- return _el$;
606
- })()
607
- };
608
- });
609
- const grid_spacing_override = $9HbP8$createMemo(() => {
610
- const {
611
- grid_spacing: grid_spacing
612
- } = props; // can be reactive
613
- return typeof grid_spacing === "string" ? {
614
- grid_spacing: grid_spacing
615
- } : {
616
- override_vertical_spacing: grid_spacing.vertical,
617
- grid_spacing: grid_spacing.horizontal
618
- };
619
- });
620
- const [recommendations_resource_] = $9HbP8$createResource(() => props.recommendations, recs => recs);
621
- return (() => {
622
- const _el$2 = $9HbP8$getNextElement($9ea5383493360761$var$_tmpl$2);
623
- $9HbP8$insert(_el$2, () => $3da8afe3ed57cf34$export$7da560f849543dff({
624
- rows_object_: rows_object_,
625
- product_card_template_: (...args) => props.product_card_template(...args),
626
- recommendations_resource_: recommendations_resource_,
627
- market_: () => props.market,
628
- merchant_: () => props.merchant,
629
- layout_options_: $9HbP8$createMemo(() => ({
630
- cols_at_size: $b5cccc8ee7d24677$export$6daf8749b65a1b77($1848f7cca286fbab$export$ff7109b9b2b206ba(props.cols_at_size)),
631
- ...grid_spacing_override()
632
- }))
633
- }));
634
- return _el$2;
635
- })();
651
+ return $16b52438165aafe2$export$23fca46f3143581f(() => {
652
+ const rows_object_ = $9HbP8$createMemo(() => {
653
+ const view_more_button = props.view_more_button;
654
+ if (!view_more_button) return "all";
655
+ return {
656
+ start_rows: view_more_button.start_rows,
657
+ rows_per_click: view_more_button.rows_per_click ?? 2,
658
+ button: (() => {
659
+ const _el$ = $9HbP8$getNextElement($9ea5383493360761$var$_tmpl$);
660
+ $9HbP8$insert(_el$, () => view_more_button.text);
661
+ return _el$;
662
+ })()
663
+ };
664
+ });
665
+ const grid_spacing_override = $9HbP8$createMemo(() => {
666
+ const {
667
+ grid_spacing: grid_spacing
668
+ } = props; // can be reactive
669
+ return typeof grid_spacing === "string" ? {
670
+ grid_spacing: grid_spacing
671
+ } : {
672
+ override_vertical_spacing: grid_spacing.vertical,
673
+ grid_spacing: grid_spacing.horizontal
674
+ };
675
+ });
676
+ const [recommendations_resource_] = $9HbP8$createResource(() => props.recommendations, recs => recs);
677
+ return (() => {
678
+ const _el$2 = $9HbP8$getNextElement($9ea5383493360761$var$_tmpl$2);
679
+ $9HbP8$insert(_el$2, () => $3da8afe3ed57cf34$export$7da560f849543dff({
680
+ rows_object_: rows_object_,
681
+ product_card_template_: (...args) => props.product_card_template(...args),
682
+ recommendations_resource_: recommendations_resource_,
683
+ market_: () => props.market,
684
+ merchant_: () => props.merchant,
685
+ layout_options_: $9HbP8$createMemo(() => ({
686
+ cols_at_size: $b5cccc8ee7d24677$export$6daf8749b65a1b77($1848f7cca286fbab$export$ff7109b9b2b206ba(props.cols_at_size)),
687
+ ...grid_spacing_override()
688
+ }))
689
+ }));
690
+ return _el$2;
691
+ })();
692
+ }, "RecommendationGrid failed");
636
693
  }
637
694
  const $e8ffe11ed01df0fe$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<img>`, 1);
638
695
  function $e8ffe11ed01df0fe$export$e6fffe67d4cdd848(whatToWatch) {
@@ -1304,7 +1361,7 @@ const $87c712b5b33f24f7$export$48513f6b9f8ce62d = props => {
1304
1361
  const label = $9HbP8$createMemo(() => props.label_);
1305
1362
  const checked = $9HbP8$createMemo(() => props.checked_);
1306
1363
  const value = $9HbP8$createMemo(() => props.value_);
1307
- const is_count_zero = $9HbP8$createMemo(() => props.is_count_zero_);
1364
+ const is_count_zero = $9HbP8$createMemo(() => props.is_count_zero_ || count() === 0);
1308
1365
  const id = $9HbP8$make_random_classname();
1309
1366
  return (/* We can't use actual margin because ExpandingContainer gets messed up */(() => {
1310
1367
  const _el$ = $9HbP8$getNextElement($87c712b5b33f24f7$var$_tmpl$2),
@@ -1340,14 +1397,17 @@ const $87c712b5b33f24f7$export$48513f6b9f8ce62d = props => {
1340
1397
  }
1341
1398
  }), _el$8, _co$);
1342
1399
  $9HbP8$effect(_p$ => {
1343
- const _v$ = !!(is_count_zero() || count() === 0),
1344
- _v$2 = value();
1400
+ const _v$ = !!is_count_zero(),
1401
+ _v$2 = value(),
1402
+ _v$3 = !checked() && is_count_zero();
1345
1403
  _v$ !== _p$._v$ && _el$.classList.toggle("count-0", _p$._v$ = _v$);
1346
1404
  _v$2 !== _p$._v$2 && $9HbP8$setAttribute(_el$3, "name", _p$._v$2 = _v$2);
1405
+ _v$3 !== _p$._v$3 && (_el$3.disabled = _p$._v$3 = _v$3);
1347
1406
  return _p$;
1348
1407
  }, {
1349
1408
  _v$: undefined,
1350
- _v$2: undefined
1409
+ _v$2: undefined,
1410
+ _v$3: undefined
1351
1411
  });
1352
1412
  $9HbP8$effect(() => _el$3.checked = checked());
1353
1413
  return _el$;
@@ -2184,6 +2244,7 @@ function $1c8cac76cb67e9af$var$render_stuff(data, existing_filter, i18n_) {
2184
2244
  return $9HbP8$createMemo(() => value()?.is_expanded_?.ui_should_show_expanded_?.() ?? false);
2185
2245
  }
2186
2246
  }), _el$16, _co$5);
2247
+ $9HbP8$effect(() => _el$14.classList.toggle("count-0", !!(value()?.count_ === 0)));
2187
2248
  return _el$12;
2188
2249
  })();
2189
2250
  },
@@ -2375,7 +2436,8 @@ function $1c8cac76cb67e9af$var$expand_until_choice(data_structure) {
2375
2436
  });
2376
2437
  }
2377
2438
  const $93716a9ad0dea854$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<div class="checkbox-grid"></div>`, 2),
2378
- $93716a9ad0dea854$var$_tmpl$2 = /*#__PURE__*/$9HbP8$template(`<button class="major-minor-transition"></button>`, 2);
2439
+ $93716a9ad0dea854$var$_tmpl$2 = /*#__PURE__*/$9HbP8$template(`<span class="count-wrapper"><span class="count"></span></span>`, 4),
2440
+ $93716a9ad0dea854$var$_tmpl$3 = /*#__PURE__*/$9HbP8$template(`<button class="major-minor-transition"><!#><!/><!#><!/></button>`, 6);
2379
2441
  const $93716a9ad0dea854$export$414f6a19d38e655c = ({
2380
2442
  filter_: filter_,
2381
2443
  selected_filters_: [get_selected_filters, set_selected_filters]
@@ -2407,7 +2469,11 @@ const $93716a9ad0dea854$export$414f6a19d38e655c = ({
2407
2469
  children: value => {
2408
2470
  const is_selected = $9HbP8$createMemo(() => existing_filter()?.data?.includes(value().value_));
2409
2471
  return (() => {
2410
- const _el$2 = $9HbP8$getNextElement($93716a9ad0dea854$var$_tmpl$2);
2472
+ const _el$2 = $9HbP8$getNextElement($93716a9ad0dea854$var$_tmpl$3),
2473
+ _el$5 = _el$2.firstChild,
2474
+ [_el$6, _co$] = $9HbP8$getNextMarker(_el$5.nextSibling),
2475
+ _el$7 = _el$6.nextSibling,
2476
+ [_el$8, _co$2] = $9HbP8$getNextMarker(_el$7.nextSibling);
2411
2477
  $9HbP8$addEventListener(_el$2, "click", $9HbP8$catchify(() => {
2412
2478
  const set_filter = existing_filter();
2413
2479
  const {
@@ -2428,16 +2494,30 @@ const $93716a9ad0dea854$export$414f6a19d38e655c = ({
2428
2494
  const selected_filters = [...get_selected_filters().filter(f => f !== set_filter), ...(new_filter_object.data.length ? [new_filter_object] : [])];
2429
2495
  set_selected_filters(selected_filters);
2430
2496
  }), true);
2431
- $9HbP8$insert(_el$2, () => value().value_);
2497
+ $9HbP8$insert(_el$2, () => value().value_, _el$6, _co$);
2498
+ $9HbP8$insert(_el$2, $9HbP8$createComponent((0, $9HbP8$Show), {
2499
+ get when() {
2500
+ return value().count_ != undefined;
2501
+ },
2502
+ get children() {
2503
+ const _el$3 = $9HbP8$getNextElement($93716a9ad0dea854$var$_tmpl$2),
2504
+ _el$4 = _el$3.firstChild;
2505
+ $9HbP8$insert(_el$4, () => value().count_);
2506
+ return _el$3;
2507
+ }
2508
+ }), _el$8, _co$2);
2432
2509
  $9HbP8$effect(_p$ => {
2433
- const _v$ = !is_selected(),
2434
- _v$2 = !!is_selected();
2435
- _v$ !== _p$._v$ && _el$2.classList.toggle("minor", _p$._v$ = _v$);
2436
- _v$2 !== _p$._v$2 && _el$2.classList.toggle("major", _p$._v$2 = _v$2);
2510
+ const _v$ = value().count_ === 0 && !is_selected(),
2511
+ _v$2 = !is_selected(),
2512
+ _v$3 = !!is_selected();
2513
+ _v$ !== _p$._v$ && (_el$2.disabled = _p$._v$ = _v$);
2514
+ _v$2 !== _p$._v$2 && _el$2.classList.toggle("minor", _p$._v$2 = _v$2);
2515
+ _v$3 !== _p$._v$3 && _el$2.classList.toggle("major", _p$._v$3 = _v$3);
2437
2516
  return _p$;
2438
2517
  }, {
2439
2518
  _v$: undefined,
2440
- _v$2: undefined
2519
+ _v$2: undefined,
2520
+ _v$3: undefined
2441
2521
  });
2442
2522
  $9HbP8$runHydrationEvents();
2443
2523
  return _el$2;
@@ -6263,35 +6343,6 @@ function $df5d81d0fe61ff21$export$f7d2f673fc2f091d({
6263
6343
  return _el$13;
6264
6344
  })()];
6265
6345
  }
6266
- function $16b52438165aafe2$export$23fca46f3143581f(component, error_message) {
6267
- const component_in_error_boundary = do_with_elements => {
6268
- const error_boundary_wrapped = $b7436a6d1fd64e3b$export$b69d0d92862de18b({
6269
- severity_: "error",
6270
- message_: error_message,
6271
- get children() {
6272
- const elements = component();
6273
- do_with_elements?.(elements);
6274
- return elements;
6275
- }
6276
- });
6277
- // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
6278
- if (typeof error_boundary_wrapped === "function")
6279
- // @ts-ignore
6280
- return error_boundary_wrapped();
6281
- // On the server it returns a string, so we just return that
6282
- return error_boundary_wrapped;
6283
- };
6284
- const owner = $9HbP8$getOwner();
6285
- if (owner == null) return $9HbP8$createRoot(dispose => {
6286
- // 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
6287
- return component_in_error_boundary(elements => {
6288
- if (!elements?.length) return;
6289
- (0, $9HbP8$observer).onremoved(elements[0], dispose);
6290
- });
6291
- });else
6292
- // we're already in a root so cleanups are handled
6293
- return component_in_error_boundary();
6294
- }
6295
6346
  function $ccd5db07a3a069c5$export$477caf01aecaeb2a(options) {
6296
6347
  const router_ = options.router_;
6297
6348
  const search_query_url_param_name_ = "search_query_url_param_name_" in options ? options.search_query_url_param_name_ : undefined;
@@ -7937,7 +7988,7 @@ function $190927650b4840eb$export$605674723bcc715c(props = {}) {
7937
7988
  const $cea52f6b24092f05$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<a class="suggestion"></a>`, 2),
7938
7989
  $cea52f6b24092f05$var$_tmpl$2 = /*#__PURE__*/$9HbP8$template(`<div class="search-icon"></div>`, 2),
7939
7990
  $cea52f6b24092f05$var$_tmpl$3 = /*#__PURE__*/$9HbP8$template(`<span class="type"></span>`, 2),
7940
- $cea52f6b24092f05$var$_tmpl$4 = /*#__PURE__*/$9HbP8$template(`<div><!#><!/><span class="value"></span></div>`, 6),
7991
+ $cea52f6b24092f05$var$_tmpl$4 = /*#__PURE__*/$9HbP8$template(`<div class="with-parent-title"><!#><!/><span class="value line-clamp"></span></div>`, 6),
7941
7992
  $cea52f6b24092f05$var$_tmpl$5 = /*#__PURE__*/$9HbP8$template(`<div class="with-icon"><!#><!/><!#><!/></div>`, 6),
7942
7993
  $cea52f6b24092f05$var$_tmpl$6 = /*#__PURE__*/$9HbP8$template(`<h2 class="text"></h2>`, 2),
7943
7994
  $cea52f6b24092f05$var$_tmpl$7 = /*#__PURE__*/$9HbP8$template(`<div class="suggestion-container query"><!#><!/><!#><!/></div>`, 6),
@@ -9265,7 +9316,9 @@ function $b2bf2cdcff8142d8$export$f631859cab12b342({
9265
9316
  }
9266
9317
  function $b26bdbd081f63e3f$export$9ff751cd77687edc({
9267
9318
  search_results_: search_results_,
9268
- router_: router_
9319
+ router_: router_,
9320
+ queries_without_content_results_: queries_without_content_results_,
9321
+ get_search_query_: get_search_query_
9269
9322
  }) {
9270
9323
  const content_results = $9HbP8$createMemo(() => search_results_()?.content_search_links);
9271
9324
  const content_results_by_page_url = $9HbP8$createMemo(() => {
@@ -9278,6 +9331,10 @@ function $b26bdbd081f63e3f$export$9ff751cd77687edc({
9278
9331
  }
9279
9332
  return map;
9280
9333
  });
9334
+ $9HbP8$createEffect(() => {
9335
+ const results = content_results();
9336
+ if (Array.isArray(results) && results.length === 0) queries_without_content_results_.add($9HbP8$untrack(get_search_query_));
9337
+ });
9281
9338
  return $9HbP8$createComponent((0, $9HbP8$For), {
9282
9339
  get each() {
9283
9340
  return [...content_results_by_page_url().keys()];
@@ -9330,8 +9387,15 @@ function $49de9d31aeea1b5e$export$6d0c9c22f6652669({
9330
9387
  number_: num_results,
9331
9388
  i18n_: i18n_
9332
9389
  });
9333
- const [is_showing_placeholders, set_is_showing_placeholders] = $9HbP8$createSignal(false);
9390
+ const queries_without_content_results_ = new (0, $9HbP8$ListenableSet)();
9391
+ const [check_query, set_check_query] = $9HbP8$createSignal(false);
9392
+ const placeholders_enabled = $9HbP8$createMemo(() => {
9393
+ // don't show placeholders when the user toggles filters
9394
+ check_query();
9395
+ return !queries_without_content_results_.has(get_search_query_());
9396
+ });
9334
9397
  const rows_object = $49de9d31aeea1b5e$var$make_state_saved_rows(content_results_rows_, i18n_);
9398
+ for (const ev of ["add", "delete"]) queries_without_content_results_.addEventListener(ev, () => set_check_query(prev => !prev));
9335
9399
  return (() => {
9336
9400
  const _el$ = $9HbP8$getNextElement($49de9d31aeea1b5e$var$_tmpl$),
9337
9401
  _el$2 = _el$.firstChild,
@@ -9357,36 +9421,25 @@ function $49de9d31aeea1b5e$export$6d0c9c22f6652669({
9357
9421
  get children() {
9358
9422
  return $9HbP8$createComponent((0, $9HbP8$Suspense), {
9359
9423
  get fallback() {
9360
- return (() => {
9361
- set_is_showing_placeholders(true);
9362
- $9HbP8$onCleanup(() => set_is_showing_placeholders(false));
9363
- return $9HbP8$createComponent((0, $9d5b3ed1fc91c672$export$4405d077f0a20494), {
9364
- content_results_rows_: content_results_rows_,
9365
- get cols_at_size_() {
9366
- return $9HbP8$createMemo(() => layout_options_().cols_at_size);
9367
- }
9368
- });
9369
- })();
9424
+ return $9HbP8$createComponent((0, $9d5b3ed1fc91c672$export$4405d077f0a20494), {
9425
+ content_results_rows_: content_results_rows_,
9426
+ get cols_at_size_() {
9427
+ return $9HbP8$createMemo(() => layout_options_().cols_at_size);
9428
+ }
9429
+ });
9370
9430
  },
9371
9431
  get children() {
9372
9432
  return $9HbP8$createComponent((0, $b26bdbd081f63e3f$export$9ff751cd77687edc), {
9373
9433
  router_: router_,
9374
- search_results_: search_results_
9434
+ search_results_: search_results_,
9435
+ queries_without_content_results_: queries_without_content_results_,
9436
+ get_search_query_: get_search_query_
9375
9437
  });
9376
9438
  }
9377
9439
  });
9378
9440
  }
9379
9441
  })), _el$5, _co$2);
9380
- $9HbP8$effect(_p$ => {
9381
- const _v$ = !!is_showing_placeholders(),
9382
- _v$2 = is_loading_() || content_results()?.length > 0 ? "" : "none";
9383
- _v$ !== _p$._v$ && _el$.classList.toggle("loading", _p$._v$ = _v$);
9384
- _v$2 !== _p$._v$2 && _el$.style.setProperty("display", _p$._v$2 = _v$2);
9385
- return _p$;
9386
- }, {
9387
- _v$: undefined,
9388
- _v$2: undefined
9389
- });
9442
+ $9HbP8$effect(() => _el$.style.setProperty("display", is_loading_() && placeholders_enabled() || content_results()?.length > 0 ? "" : "none"));
9390
9443
  return _el$;
9391
9444
  })();
9392
9445
  }
@@ -9821,7 +9874,7 @@ const $806c97b931758897$var$_tmpl$ = /*#__PURE__*/$9HbP8$template(`<div class="d
9821
9874
  * Type for the private properties that are shared between the different exported search SDK wrapper functions. SDK users are not allowed to change/access these, they're an internal implementation detail.
9822
9875
  */
9823
9876
  const $806c97b931758897$var$privately_shared_properties = /*@__PURE__*/new WeakMap();
9824
- const $806c97b931758897$var$content_search_default = false;
9877
+ const $806c97b931758897$var$content_search_default = true;
9825
9878
  const $806c97b931758897$var$min_products_to_fetch_ = 20;
9826
9879
  const $806c97b931758897$export$bde3eb976dfded9 = depict_search => $806c97b931758897$var$privately_shared_properties.get(depict_search)?.search_query_updating_blocked_;
9827
9880
  class $806c97b931758897$export$ac6237957a15b3f0 {