@depict-ai/ui 1.4.25 → 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.
@@ -60,7 +60,7 @@ $parcel$export(module.exports, "defaultColsAtSize", () => $a3280f0aad997933$expo
60
60
  $parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $a3280f0aad997933$export$7bf543b9d9be2c22);
61
61
  $parcel$export(module.exports, "version", () => $b757f75811f3261f$export$83d89fbfd8236492);
62
62
  /*! Depict.ai search and product listing SDK */
63
- const $b757f75811f3261f$export$83d89fbfd8236492 = "1.4.25";
63
+ const $b757f75811f3261f$export$83d89fbfd8236492 = "2.0.0";
64
64
  const $4e04be41243c3d80$var$transform_elements = sorted_cols_at_size => {
65
65
  const cols_at_size = [];
66
66
  for (let i = 0; i < sorted_cols_at_size.length; i++) {
@@ -119,7 +119,9 @@ function $ab7c6c7911bae2f5$export$ff7109b9b2b206ba(sdk_cols_at_size, min_width_f
119
119
  }
120
120
  function $fc23d7668ae0011d$export$a2cc176055f8f08() {
121
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.";
122
- return (0, $5vyXB$solidjsweb.isServer) ? `<!-- ${text} -->` : document.createComment(text);
122
+ return (0, $5vyXB$solidjsweb.isServer) ? {
123
+ t: `<!-- ${text} -->`
124
+ } : document.createComment(text);
123
125
  }
124
126
  function $5f7d55c710fd1bc2$export$2f0cbfbb4354bb52(elements) {
125
127
  // FYI this probably doesn't work on hugely deep nestings or large amount of elements
@@ -326,21 +328,32 @@ function $edafe91daf3091d7$export$b69d0d92862de18b(props) {
326
328
  }
327
329
  });
328
330
  }
329
- const $f48d0fbb00835aaa$var$_tmpl$ = ["<style", ' type="text/css">', "</style>"],
330
- $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>"];
331
333
  function $f48d0fbb00835aaa$export$d21e32dfedac04be(props) {
332
- 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
333
341
  return $5vyXB$solidjsweb.createComponent((0, $edafe91daf3091d7$export$b69d0d92862de18b), {
334
342
  get message_() {
335
343
  return "Failed calculating " + props.layout + " layout";
336
344
  },
337
345
  severity_: "error",
338
346
  get children() {
339
- return $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element_);
347
+ return $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element_, false, container_class);
340
348
  }
341
349
  });
342
350
  }
343
- 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
+ }
344
357
  // Copy of Layout from utilishared but using solid-js signals instead of async iterable IPNS
345
358
  const show_all_rows = $5vyXB$solidjs.createMemo(() => props.rows === "all");
346
359
  const rows_or_empty_object = $5vyXB$solidjs.createMemo(() => show_all_rows() ? {} : props.rows);
@@ -355,28 +368,27 @@ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, ins
355
368
  return !(!button || Array.isArray(button) && !button.length);
356
369
  });
357
370
  const [get_styling, set_styling] = $5vyXB$solidjs.createSignal();
358
- const container_class = $5vyXB$depictaiutilishared.make_random_classname();
359
371
  const selector_beginning = `.depict .${container_class}>`; // class so ppl can have id if needed
360
372
  const [get_children_count, set_children_count] = $5vyXB$solidjs.createSignal(0);
361
- 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);
362
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));
363
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
364
376
  const rows_visible_signal = $5vyXB$solidjs.createMemo(() => rows_or_empty_object().currently_visible || default_currently_visible_signal);
365
377
  const get_rows_visible = $5vyXB$solidjs.createMemo(() => rows_visible_signal()[0]());
366
378
  const set_rows_visible = $5vyXB$solidjs.createMemo(() => rows_visible_signal()[1]);
367
- const view_more_button_class = $5vyXB$depictaiutilishared.make_random_classname();
368
- const view_less_button_class = $5vyXB$depictaiutilishared.make_random_classname();
369
- const style_element = $5vyXB$solidjsweb.ssr($f48d0fbb00835aaa$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), get_styling);
370
- 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)));
371
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
372
- 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)));
373
- 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("");
374
385
  $5vyXB$solidjs.createComputed(() => {
375
386
  // Make sure we don't have more rows visible than max_rows (this could happen by max_rows being decreased)
376
387
  const rows_visible = get_rows_visible();
377
388
  const max_rows = rows_or_empty_object().max_rows;
378
389
  if (!isNaN(max_rows) && max_rows >= 0 && rows_visible > max_rows) set_rows_visible()(max_rows);
379
390
  });
391
+ $5vyXB$solidjs.createEffect(() => set_force_style_update(" ")); // force style update after hydration due to https://discord.com/channels/722131463138705510/722167424186843267/1151544212517552168
380
392
  $5vyXB$solidjs.createRenderEffect(() => {
381
393
  // Be careful to only read show_all_rows in here (ofc doesn't apply to nested effects)
382
394
  if (show_all_rows()) {
@@ -385,11 +397,13 @@ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, ins
385
397
  return;
386
398
  }
387
399
  update_children_count();
388
- const mutation_observer = new MutationObserver($5vyXB$depictaiutilishared.catchify(update_children_count));
389
- mutation_observer.observe(container_element, {
390
- childList: true
391
- });
392
- $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
+ }
393
407
  set_styling(
394
408
  // this is needed because solid will think that the memo-accessor is a setter function otherwise
395
409
  () => $5vyXB$solidjs.createMemo(() => {
@@ -400,7 +414,7 @@ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, ins
400
414
  } = rows_or_empty_object();
401
415
  const rows_visible = get_rows_visible();
402
416
  const children_count = get_children_count();
403
- return col_styling() + props.cols_at_size.map(options => {
417
+ return force_style_update() + col_styling() + props.cols_at_size.map(options => {
404
418
  const [recs_per_row, min, max] = options;
405
419
  let should_hide_view_more_button;
406
420
  let visible_recs;
@@ -421,6 +435,7 @@ function $f48d0fbb00835aaa$export$445d8d3f5f706a40(props, container_element, ins
421
435
  }).join("");
422
436
  }));
423
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
424
439
  if (insert_after_container) container_element.after(style_element);
425
440
  return [container_element, view_more_button_container(), view_less_button_container(), style_element];
426
441
  }
@@ -434,12 +449,20 @@ function $a0e53f99354809d9$export$6649caad96ef8870({
434
449
  slider_ref_: slider_ref_,
435
450
  faded_opacity_ = 0.7,
436
451
  mutation_plugins_ = [],
437
- disable_fading_: disable_fading_
452
+ disable_fading_: disable_fading_,
453
+ arrow_width_: arrow_width_,
454
+ arrow_height_: arrow_height_
438
455
  }) {
439
456
  const slider = new (0, $5vyXB$depictaiutilishared.Amazing_Slider)({
440
457
  button_contents: {
441
- left: [$5vyXB$solidjsweb.ssr($a0e53f99354809d9$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($5vyXB$solidjsweb.createComponent((0, $0f313083912e447a$export$8be2714ec7f169ee), {})))],
442
- 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
+ })))]
443
466
  },
444
467
  constructor_plugins: [$5vyXB$depictaiutilishared.slider_snap_css().constructor_plugin],
445
468
  mutation_plugins: [...(disable_fading_ ? [] : [$5vyXB$depictaiutilishared.slider_fading_factory({
@@ -462,6 +485,8 @@ function $363ce4d1d71041aa$export$d41d19e89346fa2({
462
485
  const is_showing_something = $5vyXB$solidjs.createMemo(() => recommendations_resource_.loading || recommendations_resource_()?.length);
463
486
  const num_placeholders_ = () => 20;
464
487
  const slider = $5vyXB$solidjsweb.createComponent((0, $a0e53f99354809d9$export$6649caad96ef8870), {
488
+ arrow_height_: 25,
489
+ arrow_width_: 12.5,
465
490
  disable_fading_: true,
466
491
  slider_ref_: slider => {
467
492
  const {
@@ -506,30 +531,62 @@ function $363ce4d1d71041aa$export$d41d19e89346fa2({
506
531
  children: slider
507
532
  });
508
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
+ }
509
564
  const $72f96c4782db0b1b$var$_tmpl$ = ["<div", ' class="depict recommendations">', "</div>"];
510
565
  function $72f96c4782db0b1b$export$9574e176201e5e8d(props) {
511
- const grid_spacing_override = $5vyXB$solidjs.createMemo(() => {
512
- const {
513
- grid_spacing: grid_spacing
514
- } = props; // can be reactive
515
- return typeof grid_spacing === "string" ? {
516
- grid_spacing: grid_spacing
517
- } : {
518
- override_vertical_spacing: grid_spacing.vertical,
519
- grid_spacing: grid_spacing.horizontal
520
- };
521
- });
522
- const [recommendations_resource_] = $5vyXB$solidjs.createResource(() => props.recommendations, recs => recs);
523
- return $5vyXB$solidjsweb.ssr($72f96c4782db0b1b$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($363ce4d1d71041aa$export$d41d19e89346fa2({
524
- product_card_template_: (...args) => props.product_card_template(...args),
525
- recommendations_resource_: recommendations_resource_,
526
- market_: () => props.market,
527
- merchant_: () => props.merchant,
528
- layout_options_: $5vyXB$solidjs.createMemo(() => ({
529
- cols_at_size: $4e04be41243c3d80$export$6daf8749b65a1b77($ab7c6c7911bae2f5$export$ff7109b9b2b206ba(props.cols_at_size)),
530
- ...grid_spacing_override()
531
- }))
532
- })));
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");
533
590
  }
534
591
  const $b8e79813f4f7ebe4$var$_tmpl$ = ["<div", ' class="recommendation-grid"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"];
535
592
  function $b8e79813f4f7ebe4$export$7da560f849543dff({
@@ -585,38 +642,40 @@ function $b8e79813f4f7ebe4$export$7da560f849543dff({
585
642
  const $1f8dbf7e28b3eff2$var$_tmpl$ = ["<button", ' class="show-more major" type="button">', "</button>"],
586
643
  $1f8dbf7e28b3eff2$var$_tmpl$2 = ["<div", ' class="depict plp recommendations">', "</div>"];
587
644
  function $1f8dbf7e28b3eff2$export$9756467d34d91cdb(props) {
588
- const rows_object_ = $5vyXB$solidjs.createMemo(() => {
589
- const view_more_button = props.view_more_button;
590
- if (!view_more_button) return "all";
591
- return {
592
- start_rows: view_more_button.start_rows,
593
- rows_per_click: view_more_button.rows_per_click,
594
- button: $5vyXB$solidjsweb.ssr($1f8dbf7e28b3eff2$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape(view_more_button.text))
595
- };
596
- });
597
- const grid_spacing_override = $5vyXB$solidjs.createMemo(() => {
598
- const {
599
- grid_spacing: grid_spacing
600
- } = props; // can be reactive
601
- return typeof grid_spacing === "string" ? {
602
- grid_spacing: grid_spacing
603
- } : {
604
- override_vertical_spacing: grid_spacing.vertical,
605
- grid_spacing: grid_spacing.horizontal
606
- };
607
- });
608
- const [recommendations_resource_] = $5vyXB$solidjs.createResource(() => props.recommendations, recs => recs);
609
- return $5vyXB$solidjsweb.ssr($1f8dbf7e28b3eff2$var$_tmpl$2, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.escape($b8e79813f4f7ebe4$export$7da560f849543dff({
610
- rows_object_: rows_object_,
611
- product_card_template_: (...args) => props.product_card_template(...args),
612
- recommendations_resource_: recommendations_resource_,
613
- market_: () => props.market,
614
- merchant_: () => props.merchant,
615
- layout_options_: $5vyXB$solidjs.createMemo(() => ({
616
- cols_at_size: $4e04be41243c3d80$export$6daf8749b65a1b77($ab7c6c7911bae2f5$export$ff7109b9b2b206ba(props.cols_at_size)),
617
- ...grid_spacing_override()
618
- }))
619
- })));
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");
620
679
  }
621
680
  function $19950faaac026e09$export$e6fffe67d4cdd848(whatToWatch) {
622
681
  const [size, setSize] = $5vyXB$solidjs.createSignal(0);
@@ -994,16 +1053,16 @@ function $235a2771a44e28e9$export$fecbb157621501bd({
994
1053
  return outmost_element;
995
1054
  }
996
1055
  const $b3cf6ca8dc0e9998$var$_tmpl$ = ["<span", ' class="count">', "</span>"],
997
- $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>"];
998
1057
  const $b3cf6ca8dc0e9998$export$48513f6b9f8ce62d = props => {
999
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
1000
1059
  const count = $5vyXB$solidjs.createMemo(() => props.count_);
1001
1060
  const label = $5vyXB$solidjs.createMemo(() => props.label_);
1002
1061
  const checked = $5vyXB$solidjs.createMemo(() => props.checked_);
1003
1062
  const value = $5vyXB$solidjs.createMemo(() => props.value_);
1004
- 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);
1005
1064
  const id = $5vyXB$depictaiutilishared.make_random_classname();
1006
- 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), {
1007
1066
  get when() {
1008
1067
  return count() != undefined;
1009
1068
  },
@@ -1380,7 +1439,7 @@ function $7567511a7c3e4bd7$export$e5c2828934226505({
1380
1439
  const $3bdc00a1353c1150$var$_tmpl$ = ["<form", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></form>"],
1381
1440
  $3bdc00a1353c1150$var$_tmpl$2 = ["<div", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
1382
1441
  $3bdc00a1353c1150$var$_tmpl$3 = ["<details", "></details>"],
1383
- $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>"];
1384
1443
  const $3bdc00a1353c1150$var$max_visible_without_collapsing = 15;
1385
1444
  const $3bdc00a1353c1150$var$show_non_collapsible_when_collapsed = 4;
1386
1445
  function $3bdc00a1353c1150$export$a32086fa6616eafd({
@@ -1582,7 +1641,7 @@ function $3bdc00a1353c1150$var$render_stuff(data, existing_filter, i18n_) {
1582
1641
  return $5vyXB$solidjsweb.ssr($3bdc00a1353c1150$var$_tmpl$3, $5vyXB$solidjsweb.ssrHydrationKey());
1583
1642
  },
1584
1643
  get summary_() {
1585
- 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), {
1586
1645
  i18n_: i18n_,
1587
1646
  get expanded_() {
1588
1647
  return $5vyXB$solidjs.createMemo(() => value()?.is_expanded_?.ui_should_show_expanded_?.() ?? false);
@@ -1774,7 +1833,8 @@ function $3bdc00a1353c1150$var$expand_until_choice(data_structure) {
1774
1833
  });
1775
1834
  }
1776
1835
  const $0ef1681699140f1a$var$_tmpl$ = ["<div", ' class="checkbox-grid">', "</div>"],
1777
- $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>"];
1778
1838
  const $0ef1681699140f1a$export$414f6a19d38e655c = ({
1779
1839
  filter_: filter_,
1780
1840
  selected_filters_: [get_selected_filters, set_selected_filters]
@@ -1803,7 +1863,14 @@ const $0ef1681699140f1a$export$414f6a19d38e655c = ({
1803
1863
  },
1804
1864
  children: value => {
1805
1865
  const is_selected = $5vyXB$solidjs.createMemo(() => existing_filter()?.data?.includes(value().value_));
1806
- 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
+ })));
1807
1874
  }
1808
1875
  })));
1809
1876
  };
@@ -5067,35 +5134,6 @@ function $840d88a04b2d22a7$export$f7d2f673fc2f091d({
5067
5134
  }
5068
5135
  })))];
5069
5136
  }
5070
- function $95837413165cc2df$export$23fca46f3143581f(component, error_message) {
5071
- const component_in_error_boundary = do_with_elements => {
5072
- const error_boundary_wrapped = $edafe91daf3091d7$export$b69d0d92862de18b({
5073
- severity_: "error",
5074
- message_: error_message,
5075
- get children() {
5076
- const elements = component();
5077
- do_with_elements?.(elements);
5078
- return elements;
5079
- }
5080
- });
5081
- // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
5082
- if (typeof error_boundary_wrapped === "function")
5083
- // @ts-ignore
5084
- return error_boundary_wrapped();
5085
- // On the server it returns a string, so we just return that
5086
- return error_boundary_wrapped;
5087
- };
5088
- const owner = $5vyXB$solidjs.getOwner();
5089
- if (owner == null) return $5vyXB$solidjs.createRoot(dispose => {
5090
- // 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
5091
- return component_in_error_boundary(elements => {
5092
- if (!elements?.length) return;
5093
- (0, $5vyXB$depictaiutilishared.observer).onremoved(elements[0], dispose);
5094
- });
5095
- });else
5096
- // we're already in a root so cleanups are handled
5097
- return component_in_error_boundary();
5098
- }
5099
5137
  function $c79fd10a3ab7d6e0$export$477caf01aecaeb2a(options) {
5100
5138
  const router_ = options.router_;
5101
5139
  const search_query_url_param_name_ = "search_query_url_param_name_" in options ? options.search_query_url_param_name_ : undefined;
@@ -6391,7 +6429,7 @@ function $c0125412b4ea0c93$export$605674723bcc715c(props = {}) {
6391
6429
  const $6b65ba8af12c5a26$var$_tmpl$ = ["<a", ' class="', '"', ">", "</a>"],
6392
6430
  $6b65ba8af12c5a26$var$_tmpl$2 = ["<div", ' class="search-icon">', "</div>"],
6393
6431
  $6b65ba8af12c5a26$var$_tmpl$3 = ["<span", ' class="type">', "</span>"],
6394
- $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>"],
6395
6433
  $6b65ba8af12c5a26$var$_tmpl$5 = ["<div", ' class="with-icon"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
6396
6434
  $6b65ba8af12c5a26$var$_tmpl$6 = ["<h2", ' class="text">', "</h2>"],
6397
6435
  $6b65ba8af12c5a26$var$_tmpl$7 = ["<div", ' class="suggestion-container query"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
@@ -7504,7 +7542,9 @@ function $76227de40be817e5$export$f631859cab12b342({
7504
7542
  }
7505
7543
  function $8781fcec27b20709$export$9ff751cd77687edc({
7506
7544
  search_results_: search_results_,
7507
- router_: router_
7545
+ router_: router_,
7546
+ queries_without_content_results_: queries_without_content_results_,
7547
+ get_search_query_: get_search_query_
7508
7548
  }) {
7509
7549
  const content_results = $5vyXB$solidjs.createMemo(() => search_results_()?.content_search_links);
7510
7550
  const content_results_by_page_url = $5vyXB$solidjs.createMemo(() => {
@@ -7517,6 +7557,10 @@ function $8781fcec27b20709$export$9ff751cd77687edc({
7517
7557
  }
7518
7558
  return map;
7519
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
+ });
7520
7564
  return $5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.For), {
7521
7565
  get each() {
7522
7566
  return [...content_results_by_page_url().keys()];
@@ -7549,7 +7593,7 @@ function $c2f92eb265a14529$export$4405d077f0a20494({
7549
7593
  children: () => $5vyXB$solidjsweb.createComponent((0, $76227de40be817e5$export$f631859cab12b342), {})
7550
7594
  });
7551
7595
  }
7552
- const $3716b8caf7f959e2$var$_tmpl$ = ["<div", ' class="', '" style="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
7596
+ const $3716b8caf7f959e2$var$_tmpl$ = ["<div", ' class="content-results" style="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
7553
7597
  $3716b8caf7f959e2$var$_tmpl$2 = ["<button", ' class="view-more">', "</button>"],
7554
7598
  $3716b8caf7f959e2$var$_tmpl$3 = ["<button", ' class="view-less">', "</button>"];
7555
7599
  const $3716b8caf7f959e2$export$70ceae36059a1036 = 1;
@@ -7569,9 +7613,16 @@ function $3716b8caf7f959e2$export$6d0c9c22f6652669({
7569
7613
  number_: num_results,
7570
7614
  i18n_: i18n_
7571
7615
  });
7572
- 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
+ });
7573
7623
  const rows_object = $3716b8caf7f959e2$var$make_state_saved_rows(content_results_rows_, i18n_);
7574
- 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), {
7575
7626
  get_search_query_: get_search_query_,
7576
7627
  i18n_: i18n_,
7577
7628
  formatted_number_of_results_: formatted_number_of_results_,
@@ -7589,21 +7640,19 @@ function $3716b8caf7f959e2$export$6d0c9c22f6652669({
7589
7640
  get children() {
7590
7641
  return $5vyXB$solidjsweb.createComponent((0, $5vyXB$solidjs.Suspense), {
7591
7642
  get fallback() {
7592
- return (() => {
7593
- set_is_showing_placeholders(true);
7594
- $5vyXB$solidjs.onCleanup(() => set_is_showing_placeholders(false));
7595
- return $5vyXB$solidjsweb.createComponent((0, $c2f92eb265a14529$export$4405d077f0a20494), {
7596
- content_results_rows_: content_results_rows_,
7597
- get cols_at_size_() {
7598
- return $5vyXB$solidjs.createMemo(() => layout_options_().cols_at_size);
7599
- }
7600
- });
7601
- })();
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
+ });
7602
7649
  },
7603
7650
  get children() {
7604
7651
  return $5vyXB$solidjsweb.createComponent((0, $8781fcec27b20709$export$9ff751cd77687edc), {
7605
7652
  router_: router_,
7606
- 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_
7607
7656
  });
7608
7657
  }
7609
7658
  });
@@ -7992,7 +8041,7 @@ const $2c61e4cd8229c49a$var$_tmpl$ = ["<div", ' class="depict plp search">', "</
7992
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.
7993
8042
  */
7994
8043
  const $2c61e4cd8229c49a$var$privately_shared_properties = /*@__PURE__*/new WeakMap();
7995
- const $2c61e4cd8229c49a$var$content_search_default = false;
8044
+ const $2c61e4cd8229c49a$var$content_search_default = true;
7996
8045
  const $2c61e4cd8229c49a$var$min_products_to_fetch_ = 20;
7997
8046
  const $2c61e4cd8229c49a$export$bde3eb976dfded9 = depict_search => $2c61e4cd8229c49a$var$privately_shared_properties.get(depict_search)?.search_query_updating_blocked_;
7998
8047
  class $2c61e4cd8229c49a$export$ac6237957a15b3f0 {