@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.
@@ -1,7 +1,6 @@
1
1
  var $5vyXB$depictaiutilishared = require("@depict-ai/utilishared/latest");
2
2
  var $5vyXB$solidjsweb = require("solid-js/web");
3
3
  var $5vyXB$solidjs = require("solid-js");
4
- var $5vyXB$depictaiutilisharedlatest = require("@depict-ai/utilishared/latest/latest");
5
4
  require("../../multi_import_deduplicator.cjs").register_es_version("ui", "latest");
6
5
  function $parcel$export(e, n, v, s) {
7
6
  Object.defineProperty(e, n, {
@@ -61,7 +60,7 @@ $parcel$export(module.exports, "defaultColsAtSize", () => $a3280f0aad997933$expo
61
60
  $parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $a3280f0aad997933$export$7bf543b9d9be2c22);
62
61
  $parcel$export(module.exports, "version", () => $b757f75811f3261f$export$83d89fbfd8236492);
63
62
  /*! Depict.ai search and product listing SDK */
64
- const $b757f75811f3261f$export$83d89fbfd8236492 = "1.4.24";
63
+ const $b757f75811f3261f$export$83d89fbfd8236492 = "2.0.0";
65
64
  const $4e04be41243c3d80$var$transform_elements = sorted_cols_at_size => {
66
65
  const cols_at_size = [];
67
66
  for (let i = 0; i < sorted_cols_at_size.length; i++) {
@@ -120,7 +119,9 @@ function $ab7c6c7911bae2f5$export$ff7109b9b2b206ba(sdk_cols_at_size, min_width_f
120
119
  }
121
120
  function $fc23d7668ae0011d$export$a2cc176055f8f08() {
122
121
  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.";
123
- return (0, $5vyXB$solidjsweb.isServer) ? `<!-- ${text} -->` : document.createComment(text);
122
+ return (0, $5vyXB$solidjsweb.isServer) ? {
123
+ t: `<!-- ${text} -->`
124
+ } : document.createComment(text);
124
125
  }
125
126
  function $5f7d55c710fd1bc2$export$2f0cbfbb4354bb52(elements) {
126
127
  // FYI this probably doesn't work on hugely deep nestings or large amount of elements
@@ -327,21 +328,32 @@ function $edafe91daf3091d7$export$b69d0d92862de18b(props) {
327
328
  }
328
329
  });
329
330
  }
330
- const $f48d0fbb00835aaa$var$_tmpl$ = ["<style", ' type="text/css">', "</style>"],
331
- $f48d0fbb00835aaa$var$_tmpl$2 = ["<div", ' class="', '">', "</div>"];
331
+ const $f48d0fbb00835aaa$var$_tmpl$ = ["<div", ' class="', '">', "</div>"],
332
+ $f48d0fbb00835aaa$var$_tmpl$2 = ["<style", ' type="text/css">', "</style>"];
332
333
  function $f48d0fbb00835aaa$export$d21e32dfedac04be(props) {
333
- const container_element_ = $5vyXB$solidjsweb.ssrElement("div", props.element_attributes, () => $5vyXB$solidjsweb.escape(props.children), true); // Don't want this in the error boundary below, it should only be for the actual layouting
334
+ const container_class = "x" + $5vyXB$solidjs.createUniqueId();
335
+ const container_element_ = $5vyXB$solidjsweb.ssrElement("div", () => ({
336
+ ...props.element_attributes,
337
+ "classList": {
338
+ [container_class]: true
339
+ }
340
+ }), () => $5vyXB$solidjsweb.escape(props.children), true); // Don't want this in the error boundary below, it should only be for the actual layouting
334
341
  return $5vyXB$solidjsweb.createComponent((0, $edafe91daf3091d7$export$b69d0d92862de18b), {
335
342
  get message_() {
336
343
  return "Failed calculating " + props.layout + " layout";
337
344
  },
338
345
  severity_: "error",
339
346
  get children() {
340
- return $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element_);
347
+ return $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element_, false, container_class);
341
348
  }
342
349
  });
343
350
  }
344
- function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, insert_after_container = false) {
351
+ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, insert_after_container = false, container_class) {
352
+ if (!container_class) {
353
+ // only try to add if it wasn't provided, so that we have a code path without classList when doing SSR
354
+ container_class = $5vyXB$depictaiutilishared.make_random_classname();
355
+ container_element.classList.add(container_class);
356
+ }
345
357
  // Copy of Layout from utilishared but using solid-js signals instead of async iterable IPNS
346
358
  const show_all_rows = $5vyXB$solidjs.createMemo(() => props.rows === "all");
347
359
  const rows_or_empty_object = $5vyXB$solidjs.createMemo(() => show_all_rows() ? {} : props.rows);
@@ -356,28 +368,27 @@ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, ins
356
368
  return !(!button || Array.isArray(button) && !button.length);
357
369
  });
358
370
  const [get_styling, set_styling] = $5vyXB$solidjs.createSignal();
359
- const container_class = $5vyXB$depictaiutilishared.make_random_classname();
360
371
  const selector_beginning = `.depict .${container_class}>`; // class so ppl can have id if needed
361
372
  const [get_children_count, set_children_count] = $5vyXB$solidjs.createSignal(0);
362
- const update_children_count = () => set_children_count(container_element.children.length);
373
+ const update_children_count = () => (0, $5vyXB$solidjsweb.isServer) ? 20 : set_children_count(container_element.children.length);
363
374
  const col_styling = $5vyXB$solidjs.createMemo(() => $5vyXB$depictaiutilishared.n_col_styling_with_dist(selector_beginning, props.grid_spacing, props.cols_at_size, props.layout, props.override_vertical_spacing));
364
375
  const default_currently_visible_signal = $5vyXB$solidjs.createSignal($5vyXB$solidjs.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
365
376
  const rows_visible_signal = $5vyXB$solidjs.createMemo(() => rows_or_empty_object().currently_visible || default_currently_visible_signal);
366
377
  const get_rows_visible = $5vyXB$solidjs.createMemo(() => rows_visible_signal()[0]());
367
378
  const set_rows_visible = $5vyXB$solidjs.createMemo(() => rows_visible_signal()[1]);
368
- const view_more_button_class = $5vyXB$depictaiutilishared.make_random_classname();
369
- const view_less_button_class = $5vyXB$depictaiutilishared.make_random_classname();
370
- const style_element = $5vyXB$solidjsweb.ssr($f48d0fbb00835aaa$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), get_styling);
371
- const view_more_button_container = $5vyXB$solidjs.createMemo(() => have_a_view_more_button() && $5vyXB$solidjsweb.ssr($f48d0fbb00835aaa$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `load-more-container ${$5vyXB$solidjsweb.escape(view_more_button_class, true)}`, $5vyXB$solidjsweb.escape(rows_or_empty_object().button)));
379
+ const view_more_button_class = "m" + $5vyXB$solidjs.createUniqueId();
380
+ const view_less_button_class = "l" + $5vyXB$solidjs.createUniqueId(); // https://github.com/solidjs/solid-docs/issues/263#issuecomment-1622388079
381
+ const view_more_button_container = $5vyXB$solidjs.createMemo(() => have_a_view_more_button() && $5vyXB$solidjsweb.ssr($f48d0fbb00835aaa$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), `load-more-container ${$5vyXB$solidjsweb.escape(view_more_button_class, true)}`, $5vyXB$solidjsweb.escape(rows_or_empty_object().button)));
372
382
  // 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
373
- const view_less_button_container = $5vyXB$solidjs.createMemo(() => have_a_view_less_button() && $5vyXB$solidjsweb.ssr($f48d0fbb00835aaa$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `load-less-container ${$5vyXB$solidjsweb.escape(view_less_button_class, true)}`, $5vyXB$solidjsweb.escape(rows_or_empty_object().view_less_button)));
374
- container_element.classList.add(container_class);
383
+ const view_less_button_container = $5vyXB$solidjs.createMemo(() => have_a_view_less_button() && $5vyXB$solidjsweb.ssr($f48d0fbb00835aaa$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), `load-less-container ${$5vyXB$solidjsweb.escape(view_less_button_class, true)}`, $5vyXB$solidjsweb.escape(rows_or_empty_object().view_less_button)));
384
+ const [force_style_update, set_force_style_update] = $5vyXB$solidjs.createSignal("");
375
385
  $5vyXB$solidjs.createComputed(() => {
376
386
  // Make sure we don't have more rows visible than max_rows (this could happen by max_rows being decreased)
377
387
  const rows_visible = get_rows_visible();
378
388
  const max_rows = rows_or_empty_object().max_rows;
379
389
  if (!isNaN(max_rows) && max_rows >= 0 && rows_visible > max_rows) set_rows_visible()(max_rows);
380
390
  });
391
+ $5vyXB$solidjs.createEffect(() => set_force_style_update(" ")); // force style update after hydration due to https://discord.com/channels/722131463138705510/722167424186843267/1151544212517552168
381
392
  $5vyXB$solidjs.createRenderEffect(() => {
382
393
  // Be careful to only read show_all_rows in here (ofc doesn't apply to nested effects)
383
394
  if (show_all_rows()) {
@@ -386,11 +397,13 @@ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, ins
386
397
  return;
387
398
  }
388
399
  update_children_count();
389
- const mutation_observer = new MutationObserver($5vyXB$depictaiutilishared.catchify(update_children_count));
390
- mutation_observer.observe(container_element, {
391
- childList: true
392
- });
393
- $5vyXB$solidjs.onCleanup(() => mutation_observer.disconnect());
400
+ if (!(0, $5vyXB$solidjsweb.isServer)) {
401
+ const mutation_observer = new MutationObserver($5vyXB$depictaiutilishared.catchify(update_children_count));
402
+ mutation_observer.observe(container_element, {
403
+ childList: true
404
+ });
405
+ $5vyXB$solidjs.onCleanup(() => mutation_observer.disconnect());
406
+ }
394
407
  set_styling(
395
408
  // this is needed because solid will think that the memo-accessor is a setter function otherwise
396
409
  () => $5vyXB$solidjs.createMemo(() => {
@@ -401,7 +414,7 @@ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, ins
401
414
  } = rows_or_empty_object();
402
415
  const rows_visible = get_rows_visible();
403
416
  const children_count = get_children_count();
404
- return col_styling() + props.cols_at_size.map(options => {
417
+ return force_style_update() + col_styling() + props.cols_at_size.map(options => {
405
418
  const [recs_per_row, min, max] = options;
406
419
  let should_hide_view_more_button;
407
420
  let visible_recs;
@@ -422,6 +435,7 @@ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, ins
422
435
  }).join("");
423
436
  }));
424
437
  });
438
+ const style_element = $5vyXB$solidjsweb.ssr($f48d0fbb00835aaa$var$_tmpl$2, $5vyXB$solidjsweb.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
425
439
  if (insert_after_container) container_element.after(style_element);
426
440
  return [container_element, view_more_button_container(), view_less_button_container(), style_element];
427
441
  }
@@ -435,12 +449,20 @@ function $a0e53f99354809d9$export$6649caad96ef8870({
435
449
  slider_ref_: slider_ref_,
436
450
  faded_opacity_ = 0.7,
437
451
  mutation_plugins_ = [],
438
- disable_fading_: disable_fading_
452
+ disable_fading_: disable_fading_,
453
+ arrow_width_: arrow_width_,
454
+ arrow_height_: arrow_height_
439
455
  }) {
440
456
  const slider = new (0, $5vyXB$depictaiutilishared.Amazing_Slider)({
441
457
  button_contents: {
442
- left: [$5vyXB$solidjsweb.ssr($a0e53f99354809d9$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $0f313083912e447a$export$8be2714ec7f169ee), {})))],
443
- right: [$5vyXB$solidjsweb.ssr($a0e53f99354809d9$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $0f313083912e447a$export$8be2714ec7f169ee), {})))]
458
+ left: [$5vyXB$solidjsweb.ssr($a0e53f99354809d9$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $0f313083912e447a$export$8be2714ec7f169ee), {
459
+ height_: arrow_height_,
460
+ width_: arrow_width_
461
+ })))],
462
+ right: [$5vyXB$solidjsweb.ssr($a0e53f99354809d9$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $0f313083912e447a$export$8be2714ec7f169ee), {
463
+ height_: arrow_height_,
464
+ width_: arrow_width_
465
+ })))]
444
466
  },
445
467
  constructor_plugins: [$5vyXB$depictaiutilishared.slider_snap_css().constructor_plugin],
446
468
  mutation_plugins: [...(disable_fading_ ? [] : [$5vyXB$depictaiutilishared.slider_fading_factory({
@@ -463,6 +485,8 @@ function $363ce4d1d71041aa$export$d41d19e89346fa2({
463
485
  const is_showing_something = $5vyXB$solidjs.createMemo(() => recommendations_resource_.loading || recommendations_resource_()?.length);
464
486
  const num_placeholders_ = () => 20;
465
487
  const slider = $5vyXB$solidjsweb.createComponent((0, $a0e53f99354809d9$export$6649caad96ef8870), {
488
+ arrow_height_: 25,
489
+ arrow_width_: 12.5,
466
490
  disable_fading_: true,
467
491
  slider_ref_: slider => {
468
492
  const {
@@ -474,7 +498,7 @@ function $363ce4d1d71041aa$export$d41d19e89346fa2({
474
498
  rows: "all",
475
499
  layout: "slider"
476
500
  }, layout_options_));
477
- $5vyXB$depictaiutilisharedlatest.slider_fractional_factory(0, 0.75).constructor_plugin.call(slider, {}); // enable fractional scrolling
501
+ $5vyXB$depictaiutilishared.slider_fractional_factory(0, 0.75).constructor_plugin.call(slider, {}); // enable fractional scrolling
478
502
  insert_here.before($fc23d7668ae0011d$export$a2cc176055f8f08());
479
503
  },
480
504
  get children() {
@@ -507,30 +531,62 @@ function $363ce4d1d71041aa$export$d41d19e89346fa2({
507
531
  children: slider
508
532
  });
509
533
  }
534
+ function $95837413165cc2df$export$23fca46f3143581f(component, error_message) {
535
+ const component_in_error_boundary = do_with_elements => {
536
+ const error_boundary_wrapped = $edafe91daf3091d7$export$b69d0d92862de18b({
537
+ severity_: "error",
538
+ message_: error_message,
539
+ get children() {
540
+ const elements = component();
541
+ do_with_elements?.(elements);
542
+ return elements;
543
+ }
544
+ });
545
+ // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
546
+ if (typeof error_boundary_wrapped === "function")
547
+ // @ts-ignore
548
+ return error_boundary_wrapped();
549
+ // On the server it returns a string, so we just return that
550
+ return error_boundary_wrapped;
551
+ };
552
+ const owner = $5vyXB$solidjs.getOwner();
553
+ if (owner == null) return $5vyXB$solidjs.createRoot(dispose => {
554
+ // 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
555
+ return component_in_error_boundary(elements => {
556
+ const have_multiple = Array.isArray(elements);
557
+ if (have_multiple ? !elements?.length : !elements) return;
558
+ (0, $5vyXB$depictaiutilishared.observer).onremoved(have_multiple ? elements[0] : elements, dispose);
559
+ });
560
+ });else
561
+ // we're already in a root so cleanups are handled
562
+ return component_in_error_boundary();
563
+ }
510
564
  const $72f96c4782db0b1b$var$_tmpl$ = ["<div", ' class="depict recommendations">', "</div>"];
511
565
  function $72f96c4782db0b1b$export$9574e176201e5e8d(props) {
512
- const grid_spacing_override = $5vyXB$solidjs.createMemo(() => {
513
- const {
514
- grid_spacing: grid_spacing
515
- } = props; // can be reactive
516
- return typeof grid_spacing === "string" ? {
517
- grid_spacing: grid_spacing
518
- } : {
519
- override_vertical_spacing: grid_spacing.vertical,
520
- grid_spacing: grid_spacing.horizontal
521
- };
522
- });
523
- const [recommendations_resource_] = $5vyXB$solidjs.createResource(() => props.recommendations, recs => recs);
524
- return $5vyXB$solidjsweb.ssr($72f96c4782db0b1b$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($363ce4d1d71041aa$export$d41d19e89346fa2({
525
- product_card_template_: (...args) => props.product_card_template(...args),
526
- recommendations_resource_: recommendations_resource_,
527
- market_: () => props.market,
528
- merchant_: () => props.merchant,
529
- layout_options_: $5vyXB$solidjs.createMemo(() => ({
530
- cols_at_size: $4e04be41243c3d80$export$6daf8749b65a1b77($ab7c6c7911bae2f5$export$ff7109b9b2b206ba(props.cols_at_size)),
531
- ...grid_spacing_override()
532
- }))
533
- })));
566
+ return $95837413165cc2df$export$23fca46f3143581f(() => {
567
+ const grid_spacing_override = $5vyXB$solidjs.createMemo(() => {
568
+ const {
569
+ grid_spacing: grid_spacing
570
+ } = props; // can be reactive
571
+ return typeof grid_spacing === "string" ? {
572
+ grid_spacing: grid_spacing
573
+ } : {
574
+ override_vertical_spacing: grid_spacing.vertical,
575
+ grid_spacing: grid_spacing.horizontal
576
+ };
577
+ });
578
+ const [recommendations_resource_] = $5vyXB$solidjs.createResource(() => props.recommendations, recs => recs);
579
+ return $5vyXB$solidjsweb.ssr($72f96c4782db0b1b$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($363ce4d1d71041aa$export$d41d19e89346fa2({
580
+ product_card_template_: (...args) => props.product_card_template(...args),
581
+ recommendations_resource_: recommendations_resource_,
582
+ market_: () => props.market,
583
+ merchant_: () => props.merchant,
584
+ layout_options_: $5vyXB$solidjs.createMemo(() => ({
585
+ cols_at_size: $4e04be41243c3d80$export$6daf8749b65a1b77($ab7c6c7911bae2f5$export$ff7109b9b2b206ba(props.cols_at_size)),
586
+ ...grid_spacing_override()
587
+ }))
588
+ })));
589
+ }, "RecommendationSlider failed");
534
590
  }
535
591
  const $b8e79813f4f7ebe4$var$_tmpl$ = ["<div", ' class="recommendation-grid"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"];
536
592
  function $b8e79813f4f7ebe4$export$7da560f849543dff({
@@ -586,38 +642,40 @@ function $b8e79813f4f7ebe4$export$7da560f849543dff({
586
642
  const $1f8dbf7e28b3eff2$var$_tmpl$ = ["<button", ' class="show-more major" type="button">', "</button>"],
587
643
  $1f8dbf7e28b3eff2$var$_tmpl$2 = ["<div", ' class="depict plp recommendations">', "</div>"];
588
644
  function $1f8dbf7e28b3eff2$export$9756467d34d91cdb(props) {
589
- const rows_object_ = $5vyXB$solidjs.createMemo(() => {
590
- const view_more_button = props.view_more_button;
591
- if (!view_more_button) return "all";
592
- return {
593
- start_rows: view_more_button.start_rows,
594
- rows_per_click: view_more_button.rows_per_click,
595
- button: $5vyXB$solidjsweb.ssr($1f8dbf7e28b3eff2$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(view_more_button.text))
596
- };
597
- });
598
- const grid_spacing_override = $5vyXB$solidjs.createMemo(() => {
599
- const {
600
- grid_spacing: grid_spacing
601
- } = props; // can be reactive
602
- return typeof grid_spacing === "string" ? {
603
- grid_spacing: grid_spacing
604
- } : {
605
- override_vertical_spacing: grid_spacing.vertical,
606
- grid_spacing: grid_spacing.horizontal
607
- };
608
- });
609
- const [recommendations_resource_] = $5vyXB$solidjs.createResource(() => props.recommendations, recs => recs);
610
- return $5vyXB$solidjsweb.ssr($1f8dbf7e28b3eff2$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($b8e79813f4f7ebe4$export$7da560f849543dff({
611
- rows_object_: rows_object_,
612
- product_card_template_: (...args) => props.product_card_template(...args),
613
- recommendations_resource_: recommendations_resource_,
614
- market_: () => props.market,
615
- merchant_: () => props.merchant,
616
- layout_options_: $5vyXB$solidjs.createMemo(() => ({
617
- cols_at_size: $4e04be41243c3d80$export$6daf8749b65a1b77($ab7c6c7911bae2f5$export$ff7109b9b2b206ba(props.cols_at_size)),
618
- ...grid_spacing_override()
619
- }))
620
- })));
645
+ return $95837413165cc2df$export$23fca46f3143581f(() => {
646
+ const rows_object_ = $5vyXB$solidjs.createMemo(() => {
647
+ const view_more_button = props.view_more_button;
648
+ if (!view_more_button) return "all";
649
+ return {
650
+ start_rows: view_more_button.start_rows,
651
+ rows_per_click: view_more_button.rows_per_click ?? 2,
652
+ button: $5vyXB$solidjsweb.ssr($1f8dbf7e28b3eff2$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(view_more_button.text))
653
+ };
654
+ });
655
+ const grid_spacing_override = $5vyXB$solidjs.createMemo(() => {
656
+ const {
657
+ grid_spacing: grid_spacing
658
+ } = props; // can be reactive
659
+ return typeof grid_spacing === "string" ? {
660
+ grid_spacing: grid_spacing
661
+ } : {
662
+ override_vertical_spacing: grid_spacing.vertical,
663
+ grid_spacing: grid_spacing.horizontal
664
+ };
665
+ });
666
+ const [recommendations_resource_] = $5vyXB$solidjs.createResource(() => props.recommendations, recs => recs);
667
+ return $5vyXB$solidjsweb.ssr($1f8dbf7e28b3eff2$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($b8e79813f4f7ebe4$export$7da560f849543dff({
668
+ rows_object_: rows_object_,
669
+ product_card_template_: (...args) => props.product_card_template(...args),
670
+ recommendations_resource_: recommendations_resource_,
671
+ market_: () => props.market,
672
+ merchant_: () => props.merchant,
673
+ layout_options_: $5vyXB$solidjs.createMemo(() => ({
674
+ cols_at_size: $4e04be41243c3d80$export$6daf8749b65a1b77($ab7c6c7911bae2f5$export$ff7109b9b2b206ba(props.cols_at_size)),
675
+ ...grid_spacing_override()
676
+ }))
677
+ })));
678
+ }, "RecommendationGrid failed");
621
679
  }
622
680
  function $19950faaac026e09$export$e6fffe67d4cdd848(whatToWatch) {
623
681
  const [size, setSize] = $5vyXB$solidjs.createSignal(0);
@@ -995,16 +1053,16 @@ function $235a2771a44e28e9$export$fecbb157621501bd({
995
1053
  return outmost_element;
996
1054
  }
997
1055
  const $b3cf6ca8dc0e9998$var$_tmpl$ = ["<span", ' class="count">', "</span>"],
998
- $b3cf6ca8dc0e9998$var$_tmpl$2 = ["<label", ' class="', '"', '><div class="left"><input type="checkbox"', "", '><span class="custom-indicator"></span><span class="text line-clamp">', "</span></div><!--#-->", "<!--/--></label>"];
1056
+ $b3cf6ca8dc0e9998$var$_tmpl$2 = ["<label", ' class="', '"', '><div class="left"><input type="checkbox"', "", "", '><span class="custom-indicator"></span><span class="text line-clamp">', "</span></div><!--#-->", "<!--/--></label>"];
999
1057
  const $b3cf6ca8dc0e9998$export$48513f6b9f8ce62d = props => {
1000
1058
  // It seems like there's no diffing without memos here (since we often just have computations in the getters above that update to the same result often because their dependencies change with unrelated changes often), so put memos here to avoid unneeded DOM changes
1001
1059
  const count = $5vyXB$solidjs.createMemo(() => props.count_);
1002
1060
  const label = $5vyXB$solidjs.createMemo(() => props.label_);
1003
1061
  const checked = $5vyXB$solidjs.createMemo(() => props.checked_);
1004
1062
  const value = $5vyXB$solidjs.createMemo(() => props.value_);
1005
- const is_count_zero = $5vyXB$solidjs.createMemo(() => props.is_count_zero_);
1063
+ const is_count_zero = $5vyXB$solidjs.createMemo(() => props.is_count_zero_ || count() === 0);
1006
1064
  const id = $5vyXB$depictaiutilishared.make_random_classname();
1007
- return (/* We can't use actual margin because ExpandingContainer gets messed up */$5vyXB$solidjsweb.ssr($b3cf6ca8dc0e9998$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `input-row ${is_count_zero() || count() === 0 ? "count-0" : ""}`, $5vyXB$solidjsweb.ssrAttribute("for", $5vyXB$solidjsweb.escape(id, true), false), $5vyXB$solidjsweb.ssrAttribute("name", $5vyXB$solidjsweb.escape(value(), true), false) + $5vyXB$solidjsweb.ssrAttribute("id", $5vyXB$solidjsweb.escape(id, true), false), $5vyXB$solidjsweb.ssrAttribute("checked", checked(), true), $5vyXB$solidjsweb.escape(label()) || $5vyXB$solidjsweb.escape(value()), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
1065
+ return (/* We can't use actual margin because ExpandingContainer gets messed up */$5vyXB$solidjsweb.ssr($b3cf6ca8dc0e9998$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `input-row ${is_count_zero() ? "count-0" : ""}`, $5vyXB$solidjsweb.ssrAttribute("for", $5vyXB$solidjsweb.escape(id, true), false), $5vyXB$solidjsweb.ssrAttribute("name", $5vyXB$solidjsweb.escape(value(), true), false) + $5vyXB$solidjsweb.ssrAttribute("id", $5vyXB$solidjsweb.escape(id, true), false), $5vyXB$solidjsweb.ssrAttribute("checked", checked(), true), $5vyXB$solidjsweb.ssrAttribute("disabled", !checked() && is_count_zero(), true), $5vyXB$solidjsweb.escape(label()) || $5vyXB$solidjsweb.escape(value()), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
1008
1066
  get when() {
1009
1067
  return count() != undefined;
1010
1068
  },
@@ -1381,7 +1439,7 @@ function $7567511a7c3e4bd7$export$e5c2828934226505({
1381
1439
  const $3bdc00a1353c1150$var$_tmpl$ = ["<form", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></form>"],
1382
1440
  $3bdc00a1353c1150$var$_tmpl$2 = ["<div", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
1383
1441
  $3bdc00a1353c1150$var$_tmpl$3 = ["<details", "></details>"],
1384
- $3bdc00a1353c1150$var$_tmpl$4 = ["<summary", ' class="category-parent"><div class="summary"><span class="count">', "</span><!--#-->", "<!--/--></div></summary>"];
1442
+ $3bdc00a1353c1150$var$_tmpl$4 = ["<summary", ' class="category-parent"><div class="summary"><span class="', '">', "</span><!--#-->", "<!--/--></div></summary>"];
1385
1443
  const $3bdc00a1353c1150$var$max_visible_without_collapsing = 15;
1386
1444
  const $3bdc00a1353c1150$var$show_non_collapsible_when_collapsed = 4;
1387
1445
  function $3bdc00a1353c1150$export$a32086fa6616eafd({
@@ -1583,7 +1641,7 @@ function $3bdc00a1353c1150$var$render_stuff(data, existing_filter, i18n_) {
1583
1641
  return $5vyXB$solidjsweb.ssr($3bdc00a1353c1150$var$_tmpl$3, $5vyXB$solidjsweb.ssrHydrationKey());
1584
1642
  },
1585
1643
  get summary_() {
1586
- return $5vyXB$solidjsweb.ssr($3bdc00a1353c1150$var$_tmpl$4, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(value()?.count_), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $7567511a7c3e4bd7$export$e5c2828934226505), {
1644
+ return $5vyXB$solidjsweb.ssr($3bdc00a1353c1150$var$_tmpl$4, $5vyXB$solidjsweb.ssrHydrationKey(), `count ${value()?.count_ === 0 ? "count-0" : ""}`, $5vyXB$solidjsweb.escape(value()?.count_), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $7567511a7c3e4bd7$export$e5c2828934226505), {
1587
1645
  i18n_: i18n_,
1588
1646
  get expanded_() {
1589
1647
  return $5vyXB$solidjs.createMemo(() => value()?.is_expanded_?.ui_should_show_expanded_?.() ?? false);
@@ -1775,7 +1833,8 @@ function $3bdc00a1353c1150$var$expand_until_choice(data_structure) {
1775
1833
  });
1776
1834
  }
1777
1835
  const $0ef1681699140f1a$var$_tmpl$ = ["<div", ' class="checkbox-grid">', "</div>"],
1778
- $0ef1681699140f1a$var$_tmpl$2 = ["<button", ' class="', '">', "</button>"];
1836
+ $0ef1681699140f1a$var$_tmpl$2 = ["<span", ' class="count-wrapper"><span class="count">', "</span></span>"],
1837
+ $0ef1681699140f1a$var$_tmpl$3 = ["<button", "", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></button>"];
1779
1838
  const $0ef1681699140f1a$export$414f6a19d38e655c = ({
1780
1839
  filter_: filter_,
1781
1840
  selected_filters_: [get_selected_filters, set_selected_filters]
@@ -1804,7 +1863,14 @@ const $0ef1681699140f1a$export$414f6a19d38e655c = ({
1804
1863
  },
1805
1864
  children: value => {
1806
1865
  const is_selected = $5vyXB$solidjs.createMemo(() => existing_filter()?.data?.includes(value().value_));
1807
- return $5vyXB$solidjsweb.ssr($0ef1681699140f1a$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), `${!is_selected() ? "minor" : ""} ${is_selected() ? "major" : ""} major-minor-transition`, $5vyXB$solidjsweb.escape(value().value_));
1866
+ return $5vyXB$solidjsweb.ssr($0ef1681699140f1a$var$_tmpl$3, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.ssrAttribute("disabled", value().count_ === 0 && !is_selected(), true), `${!is_selected() ? "minor" : ""} ${is_selected() ? "major" : ""} major-minor-transition`, $5vyXB$solidjsweb.escape(value().value_), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Show), {
1867
+ get when() {
1868
+ return value().count_ != undefined;
1869
+ },
1870
+ get children() {
1871
+ return $5vyXB$solidjsweb.ssr($0ef1681699140f1a$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(value().count_));
1872
+ }
1873
+ })));
1808
1874
  }
1809
1875
  })));
1810
1876
  };
@@ -5068,35 +5134,6 @@ function $840d88a04b2d22a7$export$f7d2f673fc2f091d({
5068
5134
  }
5069
5135
  })))];
5070
5136
  }
5071
- function $95837413165cc2df$export$23fca46f3143581f(component, error_message) {
5072
- const component_in_error_boundary = do_with_elements => {
5073
- const error_boundary_wrapped = $edafe91daf3091d7$export$b69d0d92862de18b({
5074
- severity_: "error",
5075
- message_: error_message,
5076
- get children() {
5077
- const elements = component();
5078
- do_with_elements?.(elements);
5079
- return elements;
5080
- }
5081
- });
5082
- // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
5083
- if (typeof error_boundary_wrapped === "function")
5084
- // @ts-ignore
5085
- return error_boundary_wrapped();
5086
- // On the server it returns a string, so we just return that
5087
- return error_boundary_wrapped;
5088
- };
5089
- const owner = $5vyXB$solidjs.getOwner();
5090
- if (owner == null) return $5vyXB$solidjs.createRoot(dispose => {
5091
- // 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
5092
- return component_in_error_boundary(elements => {
5093
- if (!elements?.length) return;
5094
- (0, $5vyXB$depictaiutilishared.observer).onremoved(elements[0], dispose);
5095
- });
5096
- });else
5097
- // we're already in a root so cleanups are handled
5098
- return component_in_error_boundary();
5099
- }
5100
5137
  function $c79fd10a3ab7d6e0$export$477caf01aecaeb2a(options) {
5101
5138
  const router_ = options.router_;
5102
5139
  const search_query_url_param_name_ = "search_query_url_param_name_" in options ? options.search_query_url_param_name_ : undefined;
@@ -6392,7 +6429,7 @@ function $c0125412b4ea0c93$export$605674723bcc715c(props = {}) {
6392
6429
  const $6b65ba8af12c5a26$var$_tmpl$ = ["<a", ' class="', '"', ">", "</a>"],
6393
6430
  $6b65ba8af12c5a26$var$_tmpl$2 = ["<div", ' class="search-icon">', "</div>"],
6394
6431
  $6b65ba8af12c5a26$var$_tmpl$3 = ["<span", ' class="type">', "</span>"],
6395
- $6b65ba8af12c5a26$var$_tmpl$4 = ["<div", "><!--#-->", '<!--/--><span class="value">', "</span></div>"],
6432
+ $6b65ba8af12c5a26$var$_tmpl$4 = ["<div", ' class="with-parent-title"><!--#-->', '<!--/--><span class="value line-clamp">', "</span></div>"],
6396
6433
  $6b65ba8af12c5a26$var$_tmpl$5 = ["<div", ' class="with-icon"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
6397
6434
  $6b65ba8af12c5a26$var$_tmpl$6 = ["<h2", ' class="text">', "</h2>"],
6398
6435
  $6b65ba8af12c5a26$var$_tmpl$7 = ["<div", ' class="suggestion-container query"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
@@ -7505,7 +7542,9 @@ function $76227de40be817e5$export$f631859cab12b342({
7505
7542
  }
7506
7543
  function $8781fcec27b20709$export$9ff751cd77687edc({
7507
7544
  search_results_: search_results_,
7508
- router_: router_
7545
+ router_: router_,
7546
+ queries_without_content_results_: queries_without_content_results_,
7547
+ get_search_query_: get_search_query_
7509
7548
  }) {
7510
7549
  const content_results = $5vyXB$solidjs.createMemo(() => search_results_()?.content_search_links);
7511
7550
  const content_results_by_page_url = $5vyXB$solidjs.createMemo(() => {
@@ -7518,6 +7557,10 @@ function $8781fcec27b20709$export$9ff751cd77687edc({
7518
7557
  }
7519
7558
  return map;
7520
7559
  });
7560
+ $5vyXB$solidjs.createEffect(() => {
7561
+ const results = content_results();
7562
+ if (Array.isArray(results) && results.length === 0) queries_without_content_results_.add($5vyXB$solidjs.untrack(get_search_query_));
7563
+ });
7521
7564
  return $5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.For), {
7522
7565
  get each() {
7523
7566
  return [...content_results_by_page_url().keys()];
@@ -7550,7 +7593,7 @@ function $c2f92eb265a14529$export$4405d077f0a20494({
7550
7593
  children: () => $5vyXB$solidjsweb.createComponent((0, $76227de40be817e5$export$f631859cab12b342), {})
7551
7594
  });
7552
7595
  }
7553
- const $3716b8caf7f959e2$var$_tmpl$ = ["<div", ' class="', '" style="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
7596
+ const $3716b8caf7f959e2$var$_tmpl$ = ["<div", ' class="content-results" style="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
7554
7597
  $3716b8caf7f959e2$var$_tmpl$2 = ["<button", ' class="view-more">', "</button>"],
7555
7598
  $3716b8caf7f959e2$var$_tmpl$3 = ["<button", ' class="view-less">', "</button>"];
7556
7599
  const $3716b8caf7f959e2$export$70ceae36059a1036 = 1;
@@ -7570,9 +7613,16 @@ function $3716b8caf7f959e2$export$6d0c9c22f6652669({
7570
7613
  number_: num_results,
7571
7614
  i18n_: i18n_
7572
7615
  });
7573
- const [is_showing_placeholders, set_is_showing_placeholders] = $5vyXB$solidjs.createSignal(false);
7616
+ const queries_without_content_results_ = new (0, $5vyXB$depictaiutilishared.ListenableSet)();
7617
+ const [check_query, set_check_query] = $5vyXB$solidjs.createSignal(false);
7618
+ const placeholders_enabled = $5vyXB$solidjs.createMemo(() => {
7619
+ // don't show placeholders when the user toggles filters
7620
+ check_query();
7621
+ return !queries_without_content_results_.has(get_search_query_());
7622
+ });
7574
7623
  const rows_object = $3716b8caf7f959e2$var$make_state_saved_rows(content_results_rows_, i18n_);
7575
- return $5vyXB$solidjsweb.ssr($3716b8caf7f959e2$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), `content-results ${is_showing_placeholders() ? "loading" : ""}`, "display:" + (is_loading_() || content_results()?.length > 0 ? "" : "none"), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $65a0c4b1c2eb5d0b$export$9dd50d35b9d94fdf), {
7624
+ for (const ev of ["add", "delete"]) queries_without_content_results_.addEventListener(ev, () => set_check_query(prev => !prev));
7625
+ return $5vyXB$solidjsweb.ssr($3716b8caf7f959e2$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), "display:" + (is_loading_() && placeholders_enabled() || content_results()?.length > 0 ? "" : "none"), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $65a0c4b1c2eb5d0b$export$9dd50d35b9d94fdf), {
7576
7626
  get_search_query_: get_search_query_,
7577
7627
  i18n_: i18n_,
7578
7628
  formatted_number_of_results_: formatted_number_of_results_,
@@ -7590,21 +7640,19 @@ function $3716b8caf7f959e2$export$6d0c9c22f6652669({
7590
7640
  get children() {
7591
7641
  return $5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Suspense), {
7592
7642
  get fallback() {
7593
- return (() => {
7594
- set_is_showing_placeholders(true);
7595
- $5vyXB$solidjs.onCleanup(() => set_is_showing_placeholders(false));
7596
- return $5vyXB$solidjsweb.createComponent((0, $c2f92eb265a14529$export$4405d077f0a20494), {
7597
- content_results_rows_: content_results_rows_,
7598
- get cols_at_size_() {
7599
- return $5vyXB$solidjs.createMemo(() => layout_options_().cols_at_size);
7600
- }
7601
- });
7602
- })();
7643
+ return $5vyXB$solidjsweb.createComponent((0, $c2f92eb265a14529$export$4405d077f0a20494), {
7644
+ content_results_rows_: content_results_rows_,
7645
+ get cols_at_size_() {
7646
+ return $5vyXB$solidjs.createMemo(() => layout_options_().cols_at_size);
7647
+ }
7648
+ });
7603
7649
  },
7604
7650
  get children() {
7605
7651
  return $5vyXB$solidjsweb.createComponent((0, $8781fcec27b20709$export$9ff751cd77687edc), {
7606
7652
  router_: router_,
7607
- search_results_: search_results_
7653
+ search_results_: search_results_,
7654
+ queries_without_content_results_: queries_without_content_results_,
7655
+ get_search_query_: get_search_query_
7608
7656
  });
7609
7657
  }
7610
7658
  });
@@ -7993,7 +8041,7 @@ const $2c61e4cd8229c49a$var$_tmpl$ = ["<div", ' class="depict plp search">', "</
7993
8041
  * 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.
7994
8042
  */
7995
8043
  const $2c61e4cd8229c49a$var$privately_shared_properties = /*@__PURE__*/new WeakMap();
7996
- const $2c61e4cd8229c49a$var$content_search_default = false;
8044
+ const $2c61e4cd8229c49a$var$content_search_default = true;
7997
8045
  const $2c61e4cd8229c49a$var$min_products_to_fetch_ = 20;
7998
8046
  const $2c61e4cd8229c49a$export$bde3eb976dfded9 = depict_search => $2c61e4cd8229c49a$var$privately_shared_properties.get(depict_search)?.search_query_updating_blocked_;
7999
8047
  class $2c61e4cd8229c49a$export$ac6237957a15b3f0 {