@depict-ai/ui 1.4.25 → 2.0.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@depict-ai/ui",
3
- "version": "1.4.25",
3
+ "version": "2.0.1",
4
4
  "description": "Base package containing the actual UI of Depict UI along with translations, with a not-simplified API. We recommend using @depict-ai/js-ui or @depict-ai/react-ui instead.",
5
5
  "packageManager": "yarn@3.2.2",
6
6
  "sass": "styles.scss",
@@ -222,23 +222,23 @@
222
222
  "@babel/preset-env": "latest",
223
223
  "@babel/preset-typescript": "latest",
224
224
  "@jest/globals": "^29.3.1",
225
- "@parcel/babel-preset-env": "latest",
226
- "@parcel/resolver-default": "^2.8.0",
225
+ "@parcel/babel-preset-env": "^2.9.3",
226
+ "@parcel/resolver-default": "^2.9.3",
227
227
  "@types/jest": "^29.2.4",
228
228
  "@types/node": "^18.11.11",
229
229
  "babel-preset-solid": "latest",
230
230
  "jest": "^29.3.1",
231
231
  "lodash": "^4.17.21",
232
- "parcel": "latest",
232
+ "parcel": "^2.9.3",
233
233
  "ts-jest": "^29.0.3"
234
234
  },
235
235
  "dependencies": {
236
236
  "@babel/plugin-transform-typescript": "^7.22.9",
237
237
  "@babel/runtime": "latest",
238
238
  "@babel/runtime-corejs3": "^7.22.6",
239
- "@depict-ai/plp-styling": "^1.1.4",
240
- "@depict-ai/types": "^1.0.38",
241
- "@depict-ai/utilishared": "^1.0.40",
239
+ "@depict-ai/plp-styling": "^1.2.1",
240
+ "@depict-ai/types": "^1.0.39",
241
+ "@depict-ai/utilishared": "^1.0.41",
242
242
  "solid-js": "^1.7.3"
243
243
  },
244
244
  "type": "module",
@@ -66,7 +66,7 @@ $parcel$export(module.exports, "defaultColsAtSize", () => $33eed84f447aa0c0$expo
66
66
  $parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $33eed84f447aa0c0$export$7bf543b9d9be2c22);
67
67
  $parcel$export(module.exports, "version", () => $aa1938dec50d6c12$export$83d89fbfd8236492);
68
68
  /*! Depict.ai search and product listing SDK */
69
- const $aa1938dec50d6c12$export$83d89fbfd8236492 = "1.4.25";
69
+ const $aa1938dec50d6c12$export$83d89fbfd8236492 = "2.0.1";
70
70
  const $5401a6698b0c0658$var$transform_elements = sorted_cols_at_size => {
71
71
  const cols_at_size = [];
72
72
  for (let i = 0; i < sorted_cols_at_size.length; i++) {
@@ -140,7 +140,9 @@ function $b1ea8d47bcf03111$export$ff7109b9b2b206ba(sdk_cols_at_size) {
140
140
  }
141
141
  function $8edd3cf30d1fd8b4$export$a2cc176055f8f08() {
142
142
  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.";
143
- return (0, $3hooq$solidjsweb.isServer) ? "<!-- ".concat(text, " -->") : document.createComment(text);
143
+ return (0, $3hooq$solidjsweb.isServer) ? {
144
+ t: "<!-- ".concat(text, " -->")
145
+ } : document.createComment(text);
144
146
  }
145
147
  function $e82d0d417fa613e8$export$2f0cbfbb4354bb52(elements) {
146
148
  // FYI this probably doesn't work on hugely deep nestings or large amount of elements
@@ -355,22 +357,34 @@ function $1b3cf201cdd38687$export$b69d0d92862de18b(props) {
355
357
  }
356
358
  });
357
359
  }
358
- const $6c2c739b113a8ddf$var$_tmpl$ = ["<style", ' type="text/css">', "</style>"],
359
- $6c2c739b113a8ddf$var$_tmpl$2 = ["<div", ' class="', '">', "</div>"];
360
+ const $6c2c739b113a8ddf$var$_tmpl$ = ["<div", ' class="', '">', "</div>"],
361
+ $6c2c739b113a8ddf$var$_tmpl$2 = ["<style", ' type="text/css">', "</style>"];
360
362
  function $6c2c739b113a8ddf$export$d21e32dfedac04be(props) {
361
- const container_element_ = $3hooq$solidjsweb.ssrElement("div", props.element_attributes, () => $3hooq$solidjsweb.escape(props.children), true); // Don't want this in the error boundary below, it should only be for the actual layouting
363
+ const container_class = "x" + $3hooq$solidjs.createUniqueId();
364
+ const container_element_ = $3hooq$solidjsweb.ssrElement("div", () => ({
365
+ ...props.element_attributes,
366
+ "classList": {
367
+ [container_class]: true
368
+ }
369
+ }), () => $3hooq$solidjsweb.escape(props.children), true); // Don't want this in the error boundary below, it should only be for the actual layouting
362
370
  return $3hooq$solidjsweb.createComponent((0, $1b3cf201cdd38687$export$b69d0d92862de18b), {
363
371
  get message_() {
364
372
  return "Failed calculating " + props.layout + " layout";
365
373
  },
366
374
  severity_: "error",
367
375
  get children() {
368
- return $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element_);
376
+ return $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element_, false, container_class);
369
377
  }
370
378
  });
371
379
  }
372
380
  function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
373
381
  let insert_after_container = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
382
+ let container_class = arguments.length > 3 ? arguments[3] : undefined;
383
+ if (!container_class) {
384
+ // only try to add if it wasn't provided, so that we have a code path without classList when doing SSR
385
+ container_class = $3hooq$depictaiutilishared.make_random_classname();
386
+ container_element.classList.add(container_class);
387
+ }
374
388
  // Copy of Layout from utilishared but using solid-js signals instead of async iterable IPNS
375
389
  const show_all_rows = $3hooq$solidjs.createMemo(() => props.rows === "all");
376
390
  const rows_or_empty_object = $3hooq$solidjs.createMemo(() => show_all_rows() ? {} : props.rows);
@@ -385,10 +399,9 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
385
399
  return !(!button || Array.isArray(button) && !button.length);
386
400
  });
387
401
  const [get_styling, set_styling] = $3hooq$solidjs.createSignal();
388
- const container_class = $3hooq$depictaiutilishared.make_random_classname();
389
402
  const selector_beginning = ".depict .".concat(container_class, ">"); // class so ppl can have id if needed
390
403
  const [get_children_count, set_children_count] = $3hooq$solidjs.createSignal(0);
391
- const update_children_count = () => set_children_count(container_element.children.length);
404
+ const update_children_count = () => (0, $3hooq$solidjsweb.isServer) ? 20 : set_children_count(container_element.children.length);
392
405
  const col_styling = $3hooq$solidjs.createMemo(() => $3hooq$depictaiutilishared.n_col_styling_with_dist(selector_beginning, props.grid_spacing, props.cols_at_size, props.layout, props.override_vertical_spacing));
393
406
  const default_currently_visible_signal = $3hooq$solidjs.createSignal($3hooq$solidjs.untrack(() => {
394
407
  var _rows_or_empty_object;
@@ -397,19 +410,19 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
397
410
  const rows_visible_signal = $3hooq$solidjs.createMemo(() => rows_or_empty_object().currently_visible || default_currently_visible_signal);
398
411
  const get_rows_visible = $3hooq$solidjs.createMemo(() => rows_visible_signal()[0]());
399
412
  const set_rows_visible = $3hooq$solidjs.createMemo(() => rows_visible_signal()[1]);
400
- const view_more_button_class = $3hooq$depictaiutilishared.make_random_classname();
401
- const view_less_button_class = $3hooq$depictaiutilishared.make_random_classname();
402
- const style_element = $3hooq$solidjsweb.ssr($6c2c739b113a8ddf$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), get_styling);
403
- const view_more_button_container = $3hooq$solidjs.createMemo(() => have_a_view_more_button() && $3hooq$solidjsweb.ssr($6c2c739b113a8ddf$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), "load-more-container ".concat($3hooq$solidjsweb.escape(view_more_button_class, true)), $3hooq$solidjsweb.escape(rows_or_empty_object().button)));
413
+ const view_more_button_class = "m" + $3hooq$solidjs.createUniqueId();
414
+ const view_less_button_class = "l" + $3hooq$solidjs.createUniqueId(); // https://github.com/solidjs/solid-docs/issues/263#issuecomment-1622388079
415
+ const view_more_button_container = $3hooq$solidjs.createMemo(() => have_a_view_more_button() && $3hooq$solidjsweb.ssr($6c2c739b113a8ddf$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "load-more-container ".concat($3hooq$solidjsweb.escape(view_more_button_class, true)), $3hooq$solidjsweb.escape(rows_or_empty_object().button)));
404
416
  // 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
405
- const view_less_button_container = $3hooq$solidjs.createMemo(() => have_a_view_less_button() && $3hooq$solidjsweb.ssr($6c2c739b113a8ddf$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), "load-less-container ".concat($3hooq$solidjsweb.escape(view_less_button_class, true)), $3hooq$solidjsweb.escape(rows_or_empty_object().view_less_button)));
406
- container_element.classList.add(container_class);
417
+ const view_less_button_container = $3hooq$solidjs.createMemo(() => have_a_view_less_button() && $3hooq$solidjsweb.ssr($6c2c739b113a8ddf$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "load-less-container ".concat($3hooq$solidjsweb.escape(view_less_button_class, true)), $3hooq$solidjsweb.escape(rows_or_empty_object().view_less_button)));
418
+ const [force_style_update, set_force_style_update] = $3hooq$solidjs.createSignal("");
407
419
  $3hooq$solidjs.createComputed(() => {
408
420
  // Make sure we don't have more rows visible than max_rows (this could happen by max_rows being decreased)
409
421
  const rows_visible = get_rows_visible();
410
422
  const max_rows = rows_or_empty_object().max_rows;
411
423
  if (!isNaN(max_rows) && max_rows >= 0 && rows_visible > max_rows) set_rows_visible()(max_rows);
412
424
  });
425
+ $3hooq$solidjs.createEffect(() => set_force_style_update(" ")); // force style update after hydration due to https://discord.com/channels/722131463138705510/722167424186843267/1151544212517552168
413
426
  $3hooq$solidjs.createRenderEffect(() => {
414
427
  // Be careful to only read show_all_rows in here (ofc doesn't apply to nested effects)
415
428
  if (show_all_rows()) {
@@ -418,11 +431,13 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
418
431
  return;
419
432
  }
420
433
  update_children_count();
421
- const mutation_observer = new MutationObserver($3hooq$depictaiutilishared.catchify(update_children_count));
422
- mutation_observer.observe(container_element, {
423
- childList: true
424
- });
425
- $3hooq$solidjs.onCleanup(() => mutation_observer.disconnect());
434
+ if (!(0, $3hooq$solidjsweb.isServer)) {
435
+ const mutation_observer = new MutationObserver($3hooq$depictaiutilishared.catchify(update_children_count));
436
+ mutation_observer.observe(container_element, {
437
+ childList: true
438
+ });
439
+ $3hooq$solidjs.onCleanup(() => mutation_observer.disconnect());
440
+ }
426
441
  set_styling(
427
442
  // this is needed because solid will think that the memo-accessor is a setter function otherwise
428
443
  () => $3hooq$solidjs.createMemo(() => {
@@ -433,7 +448,7 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
433
448
  } = rows_or_empty_object();
434
449
  const rows_visible = get_rows_visible();
435
450
  const children_count = get_children_count();
436
- return col_styling() + props.cols_at_size.map(options => {
451
+ return force_style_update() + col_styling() + props.cols_at_size.map(options => {
437
452
  const [recs_per_row, min, max] = options;
438
453
  let should_hide_view_more_button;
439
454
  let visible_recs;
@@ -454,6 +469,7 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
454
469
  }).join("");
455
470
  }));
456
471
  });
472
+ const style_element = $3hooq$solidjsweb.ssr($6c2c739b113a8ddf$var$_tmpl$2, $3hooq$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
457
473
  if (insert_after_container) container_element.after(style_element);
458
474
  return [container_element, view_more_button_container(), view_less_button_container(), style_element];
459
475
  }
@@ -470,12 +486,20 @@ function $ad8ec7729fffeb9c$export$6649caad96ef8870(_ref) {
470
486
  slider_ref_: slider_ref_,
471
487
  faded_opacity_ = 0.7,
472
488
  mutation_plugins_ = [],
473
- disable_fading_: disable_fading_
489
+ disable_fading_: disable_fading_,
490
+ arrow_width_: arrow_width_,
491
+ arrow_height_: arrow_height_
474
492
  } = _ref;
475
493
  const slider = new (0, $3hooq$depictaiutilishared.Amazing_Slider)({
476
494
  button_contents: {
477
- left: [$3hooq$solidjsweb.ssr($ad8ec7729fffeb9c$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $9d19451330d04c3c$export$8be2714ec7f169ee), {})))],
478
- right: [$3hooq$solidjsweb.ssr($ad8ec7729fffeb9c$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $9d19451330d04c3c$export$8be2714ec7f169ee), {})))]
495
+ left: [$3hooq$solidjsweb.ssr($ad8ec7729fffeb9c$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $9d19451330d04c3c$export$8be2714ec7f169ee), {
496
+ height_: arrow_height_,
497
+ width_: arrow_width_
498
+ })))],
499
+ right: [$3hooq$solidjsweb.ssr($ad8ec7729fffeb9c$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $9d19451330d04c3c$export$8be2714ec7f169ee), {
500
+ height_: arrow_height_,
501
+ width_: arrow_width_
502
+ })))]
479
503
  },
480
504
  constructor_plugins: [$3hooq$depictaiutilishared.slider_snap_css().constructor_plugin],
481
505
  mutation_plugins: [...(disable_fading_ ? [] : [$3hooq$depictaiutilishared.slider_fading_factory({
@@ -502,6 +526,8 @@ function $236a257ee52e5414$export$d41d19e89346fa2(_ref) {
502
526
  });
503
527
  const num_placeholders_ = () => 20;
504
528
  const slider = $3hooq$solidjsweb.createComponent((0, $ad8ec7729fffeb9c$export$6649caad96ef8870), {
529
+ arrow_height_: 25,
530
+ arrow_width_: 12.5,
505
531
  disable_fading_: true,
506
532
  slider_ref_: slider => {
507
533
  const {
@@ -546,32 +572,64 @@ function $236a257ee52e5414$export$d41d19e89346fa2(_ref) {
546
572
  children: slider
547
573
  });
548
574
  }
575
+ function $d05611ff6b8c8357$export$23fca46f3143581f(component, error_message) {
576
+ const component_in_error_boundary = do_with_elements => {
577
+ const error_boundary_wrapped = $1b3cf201cdd38687$export$b69d0d92862de18b({
578
+ severity_: "error",
579
+ message_: error_message,
580
+ get children() {
581
+ const elements = component();
582
+ do_with_elements === null || do_with_elements === void 0 || do_with_elements(elements);
583
+ return elements;
584
+ }
585
+ });
586
+ // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
587
+ if (typeof error_boundary_wrapped === "function")
588
+ // @ts-ignore
589
+ return error_boundary_wrapped();
590
+ // On the server it returns a string, so we just return that
591
+ return error_boundary_wrapped;
592
+ };
593
+ const owner = $3hooq$solidjs.getOwner();
594
+ if (owner == null) return $3hooq$solidjs.createRoot(dispose => {
595
+ // 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
596
+ return component_in_error_boundary(elements => {
597
+ const have_multiple = Array.isArray(elements);
598
+ if (have_multiple ? !(elements !== null && elements !== void 0 && elements.length) : !elements) return;
599
+ (0, $3hooq$depictaiutilishared.observer).onremoved(have_multiple ? elements[0] : elements, dispose);
600
+ });
601
+ });else
602
+ // we're already in a root so cleanups are handled
603
+ return component_in_error_boundary();
604
+ }
549
605
  const $2badc30d7c6610e1$var$_tmpl$ = ["<div", ' class="depict recommendations">', "</div>"];
550
606
  function $2badc30d7c6610e1$export$9574e176201e5e8d(props) {
551
- const grid_spacing_override = $3hooq$solidjs.createMemo(() => {
552
- const {
553
- grid_spacing: grid_spacing
554
- } = props; // can be reactive
555
- return typeof grid_spacing === "string" ? {
556
- grid_spacing: grid_spacing
557
- } : {
558
- override_vertical_spacing: grid_spacing.vertical,
559
- grid_spacing: grid_spacing.horizontal
560
- };
561
- });
562
- const [recommendations_resource_] = $3hooq$solidjs.createResource(() => props.recommendations, recs => recs);
563
- return $3hooq$solidjsweb.ssr($2badc30d7c6610e1$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($236a257ee52e5414$export$d41d19e89346fa2({
564
- product_card_template_: function () {
565
- return props.product_card_template(...arguments);
566
- },
567
- recommendations_resource_: recommendations_resource_,
568
- market_: () => props.market,
569
- merchant_: () => props.merchant,
570
- layout_options_: $3hooq$solidjs.createMemo(() => ({
571
- cols_at_size: $5401a6698b0c0658$export$6daf8749b65a1b77($b1ea8d47bcf03111$export$ff7109b9b2b206ba(props.cols_at_size)),
572
- ...grid_spacing_override()
573
- }))
574
- })));
607
+ return $d05611ff6b8c8357$export$23fca46f3143581f(() => {
608
+ const grid_spacing_override = $3hooq$solidjs.createMemo(() => {
609
+ const {
610
+ grid_spacing: grid_spacing
611
+ } = props; // can be reactive
612
+ return typeof grid_spacing === "string" ? {
613
+ grid_spacing: grid_spacing
614
+ } : {
615
+ override_vertical_spacing: grid_spacing.vertical,
616
+ grid_spacing: grid_spacing.horizontal
617
+ };
618
+ });
619
+ const [recommendations_resource_] = $3hooq$solidjs.createResource(() => props.recommendations, recs => recs);
620
+ return $3hooq$solidjsweb.ssr($2badc30d7c6610e1$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($236a257ee52e5414$export$d41d19e89346fa2({
621
+ product_card_template_: function () {
622
+ return props.product_card_template(...arguments);
623
+ },
624
+ recommendations_resource_: recommendations_resource_,
625
+ market_: () => props.market,
626
+ merchant_: () => props.merchant,
627
+ layout_options_: $3hooq$solidjs.createMemo(() => ({
628
+ cols_at_size: $5401a6698b0c0658$export$6daf8749b65a1b77($b1ea8d47bcf03111$export$ff7109b9b2b206ba(props.cols_at_size)),
629
+ ...grid_spacing_override()
630
+ }))
631
+ })));
632
+ }, "RecommendationSlider failed");
575
633
  }
576
634
  const $2c920813c92d6987$var$_tmpl$ = ["<div", ' class="recommendation-grid"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"];
577
635
  function $2c920813c92d6987$export$7da560f849543dff(_ref) {
@@ -631,40 +689,52 @@ function $2c920813c92d6987$export$7da560f849543dff(_ref) {
631
689
  const $41227f10ad680afd$var$_tmpl$ = ["<button", ' class="show-more major" type="button">', "</button>"],
632
690
  $41227f10ad680afd$var$_tmpl$2 = ["<div", ' class="depict plp recommendations">', "</div>"];
633
691
  function $41227f10ad680afd$export$9756467d34d91cdb(props) {
634
- const rows_object_ = $3hooq$solidjs.createMemo(() => {
635
- const view_more_button = props.view_more_button;
636
- if (!view_more_button) return "all";
637
- return {
638
- start_rows: view_more_button.start_rows,
639
- rows_per_click: view_more_button.rows_per_click,
640
- button: $3hooq$solidjsweb.ssr($41227f10ad680afd$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape(view_more_button.text))
641
- };
642
- });
643
- const grid_spacing_override = $3hooq$solidjs.createMemo(() => {
644
- const {
645
- grid_spacing: grid_spacing
646
- } = props; // can be reactive
647
- return typeof grid_spacing === "string" ? {
648
- grid_spacing: grid_spacing
649
- } : {
650
- override_vertical_spacing: grid_spacing.vertical,
651
- grid_spacing: grid_spacing.horizontal
652
- };
653
- });
654
- const [recommendations_resource_] = $3hooq$solidjs.createResource(() => props.recommendations, recs => recs);
655
- return $3hooq$solidjsweb.ssr($41227f10ad680afd$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($2c920813c92d6987$export$7da560f849543dff({
656
- rows_object_: rows_object_,
657
- product_card_template_: function () {
658
- return props.product_card_template(...arguments);
659
- },
660
- recommendations_resource_: recommendations_resource_,
661
- market_: () => props.market,
662
- merchant_: () => props.merchant,
663
- layout_options_: $3hooq$solidjs.createMemo(() => ({
664
- cols_at_size: $5401a6698b0c0658$export$6daf8749b65a1b77($b1ea8d47bcf03111$export$ff7109b9b2b206ba(props.cols_at_size)),
665
- ...grid_spacing_override()
666
- }))
667
- })));
692
+ return $d05611ff6b8c8357$export$23fca46f3143581f(() => {
693
+ const rows_object_ = $3hooq$solidjs.createMemo(() => {
694
+ var _view_more_button$row;
695
+ const {
696
+ view_more_button: view_more_button,
697
+ max_rows: max_rows
698
+ } = props;
699
+ if (!view_more_button) {
700
+ if (max_rows) return {
701
+ max_rows: max_rows
702
+ };
703
+ return "all";
704
+ }
705
+ return {
706
+ max_rows: max_rows,
707
+ start_rows: view_more_button.start_rows,
708
+ rows_per_click: (_view_more_button$row = view_more_button.rows_per_click) !== null && _view_more_button$row !== void 0 ? _view_more_button$row : 2,
709
+ button: $3hooq$solidjsweb.ssr($41227f10ad680afd$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape(view_more_button.text))
710
+ };
711
+ });
712
+ const grid_spacing_override = $3hooq$solidjs.createMemo(() => {
713
+ const {
714
+ grid_spacing: grid_spacing
715
+ } = props; // can be reactive
716
+ return typeof grid_spacing === "string" ? {
717
+ grid_spacing: grid_spacing
718
+ } : {
719
+ override_vertical_spacing: grid_spacing.vertical,
720
+ grid_spacing: grid_spacing.horizontal
721
+ };
722
+ });
723
+ const [recommendations_resource_] = $3hooq$solidjs.createResource(() => props.recommendations, recs => recs);
724
+ return $3hooq$solidjsweb.ssr($41227f10ad680afd$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($2c920813c92d6987$export$7da560f849543dff({
725
+ rows_object_: rows_object_,
726
+ product_card_template_: function () {
727
+ return props.product_card_template(...arguments);
728
+ },
729
+ recommendations_resource_: recommendations_resource_,
730
+ market_: () => props.market,
731
+ merchant_: () => props.merchant,
732
+ layout_options_: $3hooq$solidjs.createMemo(() => ({
733
+ cols_at_size: $5401a6698b0c0658$export$6daf8749b65a1b77($b1ea8d47bcf03111$export$ff7109b9b2b206ba(props.cols_at_size)),
734
+ ...grid_spacing_override()
735
+ }))
736
+ })));
737
+ }, "RecommendationGrid failed");
668
738
  }
669
739
  function $858fdcf73148519f$export$e6fffe67d4cdd848(whatToWatch) {
670
740
  const [size, setSize] = $3hooq$solidjs.createSignal(0);
@@ -1059,16 +1129,16 @@ function $c5842bdb10e57229$export$fecbb157621501bd(_ref) {
1059
1129
  return outmost_element;
1060
1130
  }
1061
1131
  const $6b92e147c6e24046$var$_tmpl$ = ["<span", ' class="count">', "</span>"],
1062
- $6b92e147c6e24046$var$_tmpl$2 = ["<label", ' class="', '"', '><div class="left"><input type="checkbox"', "", '><span class="custom-indicator"></span><span class="text line-clamp">', "</span></div><!--#-->", "<!--/--></label>"];
1132
+ $6b92e147c6e24046$var$_tmpl$2 = ["<label", ' class="', '"', '><div class="left"><input type="checkbox"', "", "", '><span class="custom-indicator"></span><span class="text line-clamp">', "</span></div><!--#-->", "<!--/--></label>"];
1063
1133
  const $6b92e147c6e24046$export$48513f6b9f8ce62d = props => {
1064
1134
  // 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
1065
1135
  const count = $3hooq$solidjs.createMemo(() => props.count_);
1066
1136
  const label = $3hooq$solidjs.createMemo(() => props.label_);
1067
1137
  const checked = $3hooq$solidjs.createMemo(() => props.checked_);
1068
1138
  const value = $3hooq$solidjs.createMemo(() => props.value_);
1069
- const is_count_zero = $3hooq$solidjs.createMemo(() => props.is_count_zero_);
1139
+ const is_count_zero = $3hooq$solidjs.createMemo(() => props.is_count_zero_ || count() === 0);
1070
1140
  const id = $3hooq$depictaiutilishared.make_random_classname();
1071
- return (/* We can't use actual margin because ExpandingContainer gets messed up */$3hooq$solidjsweb.ssr($6b92e147c6e24046$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), "input-row ".concat(is_count_zero() || count() === 0 ? "count-0" : ""), $3hooq$solidjsweb.ssrAttribute("for", $3hooq$solidjsweb.escape(id, true), false), $3hooq$solidjsweb.ssrAttribute("name", $3hooq$solidjsweb.escape(value(), true), false) + $3hooq$solidjsweb.ssrAttribute("id", $3hooq$solidjsweb.escape(id, true), false), $3hooq$solidjsweb.ssrAttribute("checked", checked(), true), $3hooq$solidjsweb.escape(label()) || $3hooq$solidjsweb.escape(value()), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
1141
+ return (/* We can't use actual margin because ExpandingContainer gets messed up */$3hooq$solidjsweb.ssr($6b92e147c6e24046$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), "input-row ".concat(is_count_zero() ? "count-0" : ""), $3hooq$solidjsweb.ssrAttribute("for", $3hooq$solidjsweb.escape(id, true), false), $3hooq$solidjsweb.ssrAttribute("name", $3hooq$solidjsweb.escape(value(), true), false) + $3hooq$solidjsweb.ssrAttribute("id", $3hooq$solidjsweb.escape(id, true), false), $3hooq$solidjsweb.ssrAttribute("checked", checked(), true), $3hooq$solidjsweb.ssrAttribute("disabled", !checked() && is_count_zero(), true), $3hooq$solidjsweb.escape(label()) || $3hooq$solidjsweb.escape(value()), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
1072
1142
  get when() {
1073
1143
  return count() != undefined;
1074
1144
  },
@@ -1479,7 +1549,7 @@ function $ac040bdfeed58ee4$export$e5c2828934226505(_ref) {
1479
1549
  const $9c1d49181fb3002a$var$_tmpl$ = ["<form", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></form>"],
1480
1550
  $9c1d49181fb3002a$var$_tmpl$2 = ["<div", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
1481
1551
  $9c1d49181fb3002a$var$_tmpl$3 = ["<details", "></details>"],
1482
- $9c1d49181fb3002a$var$_tmpl$4 = ["<summary", ' class="category-parent"><div class="summary"><span class="count">', "</span><!--#-->", "<!--/--></div></summary>"];
1552
+ $9c1d49181fb3002a$var$_tmpl$4 = ["<summary", ' class="category-parent"><div class="summary"><span class="', '">', "</span><!--#-->", "<!--/--></div></summary>"];
1483
1553
  const $9c1d49181fb3002a$var$max_visible_without_collapsing = 15;
1484
1554
  const $9c1d49181fb3002a$var$show_non_collapsible_when_collapsed = 4;
1485
1555
  function $9c1d49181fb3002a$export$a32086fa6616eafd(_ref) {
@@ -1699,13 +1769,13 @@ function $9c1d49181fb3002a$var$render_stuff(data, existing_filter, i18n_) {
1699
1769
  return $3hooq$solidjsweb.ssr($9c1d49181fb3002a$var$_tmpl$3, $3hooq$solidjsweb.ssrHydrationKey());
1700
1770
  },
1701
1771
  get summary_() {
1702
- var _value10;
1703
- return $3hooq$solidjsweb.ssr($9c1d49181fb3002a$var$_tmpl$4, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape((_value10 = value()) === null || _value10 === void 0 ? void 0 : _value10.count_), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $ac040bdfeed58ee4$export$e5c2828934226505), {
1772
+ var _value10, _value11;
1773
+ return $3hooq$solidjsweb.ssr($9c1d49181fb3002a$var$_tmpl$4, $3hooq$solidjsweb.ssrHydrationKey(), "count ".concat(((_value10 = value()) === null || _value10 === void 0 ? void 0 : _value10.count_) === 0 ? "count-0" : ""), $3hooq$solidjsweb.escape((_value11 = value()) === null || _value11 === void 0 ? void 0 : _value11.count_), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $ac040bdfeed58ee4$export$e5c2828934226505), {
1704
1774
  i18n_: i18n_,
1705
1775
  get expanded_() {
1706
1776
  return $3hooq$solidjs.createMemo(() => {
1707
- var _value$is_expanded_$u, _value11, _value11$is_expanded_, _value11$is_expanded_2;
1708
- return (_value$is_expanded_$u = (_value11 = value()) === null || _value11 === void 0 ? void 0 : (_value11$is_expanded_ = _value11.is_expanded_) === null || _value11$is_expanded_ === void 0 ? void 0 : (_value11$is_expanded_2 = _value11$is_expanded_.ui_should_show_expanded_) === null || _value11$is_expanded_2 === void 0 ? void 0 : _value11$is_expanded_2.call(_value11$is_expanded_)) !== null && _value$is_expanded_$u !== void 0 ? _value$is_expanded_$u : false;
1777
+ var _value$is_expanded_$u, _value12, _value12$is_expanded_, _value12$is_expanded_2;
1778
+ return (_value$is_expanded_$u = (_value12 = value()) === null || _value12 === void 0 ? void 0 : (_value12$is_expanded_ = _value12.is_expanded_) === null || _value12$is_expanded_ === void 0 ? void 0 : (_value12$is_expanded_2 = _value12$is_expanded_.ui_should_show_expanded_) === null || _value12$is_expanded_2 === void 0 ? void 0 : _value12$is_expanded_2.call(_value12$is_expanded_)) !== null && _value$is_expanded_$u !== void 0 ? _value$is_expanded_$u : false;
1709
1779
  });
1710
1780
  }
1711
1781
  })));
@@ -1727,8 +1797,8 @@ function $9c1d49181fb3002a$var$render_stuff(data, existing_filter, i18n_) {
1727
1797
  },
1728
1798
  get children() {
1729
1799
  return $9c1d49181fb3002a$var$render_stuff($3hooq$solidjs.createMemo(() => {
1730
- var _value12;
1731
- return ((_value12 = value()) === null || _value12 === void 0 ? void 0 : _value12.children_) || {};
1800
+ var _value13;
1801
+ return ((_value13 = value()) === null || _value13 === void 0 ? void 0 : _value13.children_) || {};
1732
1802
  }), existing_filter, i18n_);
1733
1803
  }
1734
1804
  });
@@ -1912,7 +1982,8 @@ function $9c1d49181fb3002a$var$expand_until_choice(data_structure) {
1912
1982
  });
1913
1983
  }
1914
1984
  const $cd0e5524f9476f9b$var$_tmpl$ = ["<div", ' class="checkbox-grid">', "</div>"],
1915
- $cd0e5524f9476f9b$var$_tmpl$2 = ["<button", ' class="', '">', "</button>"];
1985
+ $cd0e5524f9476f9b$var$_tmpl$2 = ["<span", ' class="count-wrapper"><span class="count">', "</span></span>"],
1986
+ $cd0e5524f9476f9b$var$_tmpl$3 = ["<button", "", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></button>"];
1916
1987
  const $cd0e5524f9476f9b$export$414f6a19d38e655c = _ref => {
1917
1988
  let {
1918
1989
  filter_: filter_,
@@ -1951,7 +2022,14 @@ const $cd0e5524f9476f9b$export$414f6a19d38e655c = _ref => {
1951
2022
  var _existing_filter, _existing_filter$data;
1952
2023
  return (_existing_filter = existing_filter()) === null || _existing_filter === void 0 ? void 0 : (_existing_filter$data = _existing_filter.data) === null || _existing_filter$data === void 0 ? void 0 : _existing_filter$data.includes(value().value_);
1953
2024
  });
1954
- return $3hooq$solidjsweb.ssr($cd0e5524f9476f9b$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), "".concat(!is_selected() ? "minor" : "", " ").concat(is_selected() ? "major" : "", " major-minor-transition"), $3hooq$solidjsweb.escape(value().value_));
2025
+ return $3hooq$solidjsweb.ssr($cd0e5524f9476f9b$var$_tmpl$3, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.ssrAttribute("disabled", value().count_ === 0 && !is_selected(), true), "".concat(!is_selected() ? "minor" : "", " ").concat(is_selected() ? "major" : "", " major-minor-transition"), $3hooq$solidjsweb.escape(value().value_), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
2026
+ get when() {
2027
+ return value().count_ != undefined;
2028
+ },
2029
+ get children() {
2030
+ return $3hooq$solidjsweb.ssr($cd0e5524f9476f9b$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape(value().count_));
2031
+ }
2032
+ })));
1955
2033
  }
1956
2034
  })));
1957
2035
  };
@@ -5494,35 +5572,6 @@ function $ede6c70ecdca46fe$export$f7d2f673fc2f091d(_ref) {
5494
5572
  }
5495
5573
  })))];
5496
5574
  }
5497
- function $d05611ff6b8c8357$export$23fca46f3143581f(component, error_message) {
5498
- const component_in_error_boundary = do_with_elements => {
5499
- const error_boundary_wrapped = $1b3cf201cdd38687$export$b69d0d92862de18b({
5500
- severity_: "error",
5501
- message_: error_message,
5502
- get children() {
5503
- const elements = component();
5504
- do_with_elements === null || do_with_elements === void 0 || do_with_elements(elements);
5505
- return elements;
5506
- }
5507
- });
5508
- // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
5509
- if (typeof error_boundary_wrapped === "function")
5510
- // @ts-ignore
5511
- return error_boundary_wrapped();
5512
- // On the server it returns a string, so we just return that
5513
- return error_boundary_wrapped;
5514
- };
5515
- const owner = $3hooq$solidjs.getOwner();
5516
- if (owner == null) return $3hooq$solidjs.createRoot(dispose => {
5517
- // 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
5518
- return component_in_error_boundary(elements => {
5519
- if (!(elements !== null && elements !== void 0 && elements.length)) return;
5520
- (0, $3hooq$depictaiutilishared.observer).onremoved(elements[0], dispose);
5521
- });
5522
- });else
5523
- // we're already in a root so cleanups are handled
5524
- return component_in_error_boundary();
5525
- }
5526
5575
  function $5dd9d0d3ea82e2dd$export$477caf01aecaeb2a(options) {
5527
5576
  var _globalThis$location$, _globalThis$location;
5528
5577
  const router_ = options.router_;
@@ -6963,7 +7012,7 @@ function $3cf7b4db1e203c93$export$605674723bcc715c() {
6963
7012
  const $0677d509ad208e22$var$_tmpl$ = ["<a", ' class="', '"', ">", "</a>"],
6964
7013
  $0677d509ad208e22$var$_tmpl$2 = ["<div", ' class="search-icon">', "</div>"],
6965
7014
  $0677d509ad208e22$var$_tmpl$3 = ["<span", ' class="type">', "</span>"],
6966
- $0677d509ad208e22$var$_tmpl$4 = ["<div", "><!--#-->", '<!--/--><span class="value">', "</span></div>"],
7015
+ $0677d509ad208e22$var$_tmpl$4 = ["<div", ' class="with-parent-title"><!--#-->', '<!--/--><span class="value line-clamp">', "</span></div>"],
6967
7016
  $0677d509ad208e22$var$_tmpl$5 = ["<div", ' class="with-icon"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
6968
7017
  $0677d509ad208e22$var$_tmpl$6 = ["<h2", ' class="text">', "</h2>"],
6969
7018
  $0677d509ad208e22$var$_tmpl$7 = ["<div", ' class="suggestion-container query"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
@@ -8141,7 +8190,9 @@ function $f1fc9ea3e7632eba$export$f631859cab12b342(_ref) {
8141
8190
  function $bf4a8d57aa8dd1c8$export$9ff751cd77687edc(_ref) {
8142
8191
  let {
8143
8192
  search_results_: search_results_,
8144
- router_: router_
8193
+ router_: router_,
8194
+ queries_without_content_results_: queries_without_content_results_,
8195
+ get_search_query_: get_search_query_
8145
8196
  } = _ref;
8146
8197
  const content_results = $3hooq$solidjs.createMemo(() => {
8147
8198
  var _search_results_;
@@ -8157,6 +8208,10 @@ function $bf4a8d57aa8dd1c8$export$9ff751cd77687edc(_ref) {
8157
8208
  }
8158
8209
  return map;
8159
8210
  });
8211
+ $3hooq$solidjs.createEffect(() => {
8212
+ const results = content_results();
8213
+ if (Array.isArray(results) && results.length === 0) queries_without_content_results_.add($3hooq$solidjs.untrack(get_search_query_));
8214
+ });
8160
8215
  return $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.For), {
8161
8216
  get each() {
8162
8217
  return [...content_results_by_page_url().keys()];
@@ -8196,7 +8251,7 @@ function $05f255c0a94b9ca1$export$4405d077f0a20494(_ref) {
8196
8251
  children: () => $3hooq$solidjsweb.createComponent((0, $f1fc9ea3e7632eba$export$f631859cab12b342), {})
8197
8252
  });
8198
8253
  }
8199
- const $eab939d0b95b75ee$var$_tmpl$ = ["<div", ' class="', '" style="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
8254
+ const $eab939d0b95b75ee$var$_tmpl$ = ["<div", ' class="content-results" style="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
8200
8255
  $eab939d0b95b75ee$var$_tmpl$2 = ["<button", ' class="view-more">', "</button>"],
8201
8256
  $eab939d0b95b75ee$var$_tmpl$3 = ["<button", ' class="view-less">', "</button>"];
8202
8257
  const $eab939d0b95b75ee$export$70ceae36059a1036 = 1;
@@ -8224,9 +8279,16 @@ function $eab939d0b95b75ee$export$6d0c9c22f6652669(_ref) {
8224
8279
  number_: num_results,
8225
8280
  i18n_: i18n_
8226
8281
  });
8227
- const [is_showing_placeholders, set_is_showing_placeholders] = $3hooq$solidjs.createSignal(false);
8282
+ const queries_without_content_results_ = new (0, $3hooq$depictaiutilishared.ListenableSet)();
8283
+ const [check_query, set_check_query] = $3hooq$solidjs.createSignal(false);
8284
+ const placeholders_enabled = $3hooq$solidjs.createMemo(() => {
8285
+ // don't show placeholders when the user toggles filters
8286
+ check_query();
8287
+ return !queries_without_content_results_.has(get_search_query_());
8288
+ });
8228
8289
  const rows_object = $eab939d0b95b75ee$var$make_state_saved_rows(content_results_rows_, i18n_);
8229
- return $3hooq$solidjsweb.ssr($eab939d0b95b75ee$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "content-results ".concat(is_showing_placeholders() ? "loading" : ""), "display:" + (is_loading_() || ((_content_results2 = content_results()) === null || _content_results2 === void 0 ? void 0 : _content_results2.length) > 0 ? "" : "none"), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $9870a8a48ee126af$export$9dd50d35b9d94fdf), {
8290
+ for (const ev of ["add", "delete"]) queries_without_content_results_.addEventListener(ev, () => set_check_query(prev => !prev));
8291
+ return $3hooq$solidjsweb.ssr($eab939d0b95b75ee$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "display:" + (is_loading_() && placeholders_enabled() || ((_content_results2 = content_results()) === null || _content_results2 === void 0 ? void 0 : _content_results2.length) > 0 ? "" : "none"), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $9870a8a48ee126af$export$9dd50d35b9d94fdf), {
8230
8292
  get_search_query_: get_search_query_,
8231
8293
  i18n_: i18n_,
8232
8294
  formatted_number_of_results_: formatted_number_of_results_,
@@ -8244,21 +8306,19 @@ function $eab939d0b95b75ee$export$6d0c9c22f6652669(_ref) {
8244
8306
  get children() {
8245
8307
  return $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Suspense), {
8246
8308
  get fallback() {
8247
- return (() => {
8248
- set_is_showing_placeholders(true);
8249
- $3hooq$solidjs.onCleanup(() => set_is_showing_placeholders(false));
8250
- return $3hooq$solidjsweb.createComponent((0, $05f255c0a94b9ca1$export$4405d077f0a20494), {
8251
- content_results_rows_: content_results_rows_,
8252
- get cols_at_size_() {
8253
- return $3hooq$solidjs.createMemo(() => layout_options_().cols_at_size);
8254
- }
8255
- });
8256
- })();
8309
+ return $3hooq$solidjsweb.createComponent((0, $05f255c0a94b9ca1$export$4405d077f0a20494), {
8310
+ content_results_rows_: content_results_rows_,
8311
+ get cols_at_size_() {
8312
+ return $3hooq$solidjs.createMemo(() => layout_options_().cols_at_size);
8313
+ }
8314
+ });
8257
8315
  },
8258
8316
  get children() {
8259
8317
  return $3hooq$solidjsweb.createComponent((0, $bf4a8d57aa8dd1c8$export$9ff751cd77687edc), {
8260
8318
  router_: router_,
8261
- search_results_: search_results_
8319
+ search_results_: search_results_,
8320
+ queries_without_content_results_: queries_without_content_results_,
8321
+ get_search_query_: get_search_query_
8262
8322
  });
8263
8323
  }
8264
8324
  });
@@ -8700,7 +8760,7 @@ function $ddd39c5f36f49703$var$_classApplyDescriptorGet(receiver, descriptor) {
8700
8760
  * 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.
8701
8761
  */
8702
8762
  const $ddd39c5f36f49703$var$privately_shared_properties = /*@__PURE__*/new WeakMap();
8703
- const $ddd39c5f36f49703$var$content_search_default = false;
8763
+ const $ddd39c5f36f49703$var$content_search_default = true;
8704
8764
  const $ddd39c5f36f49703$var$min_products_to_fetch_ = 20;
8705
8765
  const $ddd39c5f36f49703$export$bde3eb976dfded9 = depict_search => {
8706
8766
  var _privately_shared_pro;