@depict-ai/ui 1.4.24 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@depict-ai/ui",
3
- "version": "1.4.24",
3
+ "version": "2.0.0",
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.0",
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",
@@ -1,7 +1,6 @@
1
1
  var $3hooq$depictaiutilishared = require("@depict-ai/utilishared/ES10");
2
2
  var $3hooq$solidjsweb = require("solid-js/web");
3
3
  var $3hooq$solidjs = require("solid-js");
4
- var $3hooq$depictaiutilisharedlatest = require("@depict-ai/utilishared/latest/ES10");
5
4
  var $3hooq$babelruntimehelpersclassPrivateFieldSet = require("@babel/runtime/helpers/classPrivateFieldSet");
6
5
  var $3hooq$babelruntimehelpersclassPrivateFieldGet = require("@babel/runtime/helpers/classPrivateFieldGet");
7
6
  var $3hooq$babelruntimehelpersdefineProperty = require("@babel/runtime/helpers/defineProperty");
@@ -67,7 +66,7 @@ $parcel$export(module.exports, "defaultColsAtSize", () => $33eed84f447aa0c0$expo
67
66
  $parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $33eed84f447aa0c0$export$7bf543b9d9be2c22);
68
67
  $parcel$export(module.exports, "version", () => $aa1938dec50d6c12$export$83d89fbfd8236492);
69
68
  /*! Depict.ai search and product listing SDK */
70
- const $aa1938dec50d6c12$export$83d89fbfd8236492 = "1.4.24";
69
+ const $aa1938dec50d6c12$export$83d89fbfd8236492 = "2.0.0";
71
70
  const $5401a6698b0c0658$var$transform_elements = sorted_cols_at_size => {
72
71
  const cols_at_size = [];
73
72
  for (let i = 0; i < sorted_cols_at_size.length; i++) {
@@ -141,7 +140,9 @@ function $b1ea8d47bcf03111$export$ff7109b9b2b206ba(sdk_cols_at_size) {
141
140
  }
142
141
  function $8edd3cf30d1fd8b4$export$a2cc176055f8f08() {
143
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.";
144
- return (0, $3hooq$solidjsweb.isServer) ? "<!-- ".concat(text, " -->") : document.createComment(text);
143
+ return (0, $3hooq$solidjsweb.isServer) ? {
144
+ t: "<!-- ".concat(text, " -->")
145
+ } : document.createComment(text);
145
146
  }
146
147
  function $e82d0d417fa613e8$export$2f0cbfbb4354bb52(elements) {
147
148
  // FYI this probably doesn't work on hugely deep nestings or large amount of elements
@@ -356,22 +357,34 @@ function $1b3cf201cdd38687$export$b69d0d92862de18b(props) {
356
357
  }
357
358
  });
358
359
  }
359
- const $6c2c739b113a8ddf$var$_tmpl$ = ["<style", ' type="text/css">', "</style>"],
360
- $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>"];
361
362
  function $6c2c739b113a8ddf$export$d21e32dfedac04be(props) {
362
- 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
363
370
  return $3hooq$solidjsweb.createComponent((0, $1b3cf201cdd38687$export$b69d0d92862de18b), {
364
371
  get message_() {
365
372
  return "Failed calculating " + props.layout + " layout";
366
373
  },
367
374
  severity_: "error",
368
375
  get children() {
369
- return $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element_);
376
+ return $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element_, false, container_class);
370
377
  }
371
378
  });
372
379
  }
373
380
  function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
374
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
+ }
375
388
  // Copy of Layout from utilishared but using solid-js signals instead of async iterable IPNS
376
389
  const show_all_rows = $3hooq$solidjs.createMemo(() => props.rows === "all");
377
390
  const rows_or_empty_object = $3hooq$solidjs.createMemo(() => show_all_rows() ? {} : props.rows);
@@ -386,10 +399,9 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
386
399
  return !(!button || Array.isArray(button) && !button.length);
387
400
  });
388
401
  const [get_styling, set_styling] = $3hooq$solidjs.createSignal();
389
- const container_class = $3hooq$depictaiutilishared.make_random_classname();
390
402
  const selector_beginning = ".depict .".concat(container_class, ">"); // class so ppl can have id if needed
391
403
  const [get_children_count, set_children_count] = $3hooq$solidjs.createSignal(0);
392
- 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);
393
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));
394
406
  const default_currently_visible_signal = $3hooq$solidjs.createSignal($3hooq$solidjs.untrack(() => {
395
407
  var _rows_or_empty_object;
@@ -398,19 +410,19 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
398
410
  const rows_visible_signal = $3hooq$solidjs.createMemo(() => rows_or_empty_object().currently_visible || default_currently_visible_signal);
399
411
  const get_rows_visible = $3hooq$solidjs.createMemo(() => rows_visible_signal()[0]());
400
412
  const set_rows_visible = $3hooq$solidjs.createMemo(() => rows_visible_signal()[1]);
401
- const view_more_button_class = $3hooq$depictaiutilishared.make_random_classname();
402
- const view_less_button_class = $3hooq$depictaiutilishared.make_random_classname();
403
- const style_element = $3hooq$solidjsweb.ssr($6c2c739b113a8ddf$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), get_styling);
404
- 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)));
405
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
406
- 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)));
407
- 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("");
408
419
  $3hooq$solidjs.createComputed(() => {
409
420
  // Make sure we don't have more rows visible than max_rows (this could happen by max_rows being decreased)
410
421
  const rows_visible = get_rows_visible();
411
422
  const max_rows = rows_or_empty_object().max_rows;
412
423
  if (!isNaN(max_rows) && max_rows >= 0 && rows_visible > max_rows) set_rows_visible()(max_rows);
413
424
  });
425
+ $3hooq$solidjs.createEffect(() => set_force_style_update(" ")); // force style update after hydration due to https://discord.com/channels/722131463138705510/722167424186843267/1151544212517552168
414
426
  $3hooq$solidjs.createRenderEffect(() => {
415
427
  // Be careful to only read show_all_rows in here (ofc doesn't apply to nested effects)
416
428
  if (show_all_rows()) {
@@ -419,11 +431,13 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
419
431
  return;
420
432
  }
421
433
  update_children_count();
422
- const mutation_observer = new MutationObserver($3hooq$depictaiutilishared.catchify(update_children_count));
423
- mutation_observer.observe(container_element, {
424
- childList: true
425
- });
426
- $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
+ }
427
441
  set_styling(
428
442
  // this is needed because solid will think that the memo-accessor is a setter function otherwise
429
443
  () => $3hooq$solidjs.createMemo(() => {
@@ -434,7 +448,7 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
434
448
  } = rows_or_empty_object();
435
449
  const rows_visible = get_rows_visible();
436
450
  const children_count = get_children_count();
437
- return col_styling() + props.cols_at_size.map(options => {
451
+ return force_style_update() + col_styling() + props.cols_at_size.map(options => {
438
452
  const [recs_per_row, min, max] = options;
439
453
  let should_hide_view_more_button;
440
454
  let visible_recs;
@@ -455,6 +469,7 @@ function $6c2c739b113a8ddf$export$445d8d3f5f706a40(props, container_element) {
455
469
  }).join("");
456
470
  }));
457
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
458
473
  if (insert_after_container) container_element.after(style_element);
459
474
  return [container_element, view_more_button_container(), view_less_button_container(), style_element];
460
475
  }
@@ -471,12 +486,20 @@ function $ad8ec7729fffeb9c$export$6649caad96ef8870(_ref) {
471
486
  slider_ref_: slider_ref_,
472
487
  faded_opacity_ = 0.7,
473
488
  mutation_plugins_ = [],
474
- disable_fading_: disable_fading_
489
+ disable_fading_: disable_fading_,
490
+ arrow_width_: arrow_width_,
491
+ arrow_height_: arrow_height_
475
492
  } = _ref;
476
493
  const slider = new (0, $3hooq$depictaiutilishared.Amazing_Slider)({
477
494
  button_contents: {
478
- left: [$3hooq$solidjsweb.ssr($ad8ec7729fffeb9c$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent((0, $9d19451330d04c3c$export$8be2714ec7f169ee), {})))],
479
- 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
+ })))]
480
503
  },
481
504
  constructor_plugins: [$3hooq$depictaiutilishared.slider_snap_css().constructor_plugin],
482
505
  mutation_plugins: [...(disable_fading_ ? [] : [$3hooq$depictaiutilishared.slider_fading_factory({
@@ -503,6 +526,8 @@ function $236a257ee52e5414$export$d41d19e89346fa2(_ref) {
503
526
  });
504
527
  const num_placeholders_ = () => 20;
505
528
  const slider = $3hooq$solidjsweb.createComponent((0, $ad8ec7729fffeb9c$export$6649caad96ef8870), {
529
+ arrow_height_: 25,
530
+ arrow_width_: 12.5,
506
531
  disable_fading_: true,
507
532
  slider_ref_: slider => {
508
533
  const {
@@ -514,7 +539,7 @@ function $236a257ee52e5414$export$d41d19e89346fa2(_ref) {
514
539
  rows: "all",
515
540
  layout: "slider"
516
541
  }, layout_options_));
517
- $3hooq$depictaiutilisharedlatest.slider_fractional_factory(0, 0.75).constructor_plugin.call(slider, {}); // enable fractional scrolling
542
+ $3hooq$depictaiutilishared.slider_fractional_factory(0, 0.75).constructor_plugin.call(slider, {}); // enable fractional scrolling
518
543
  insert_here.before($8edd3cf30d1fd8b4$export$a2cc176055f8f08());
519
544
  },
520
545
  get children() {
@@ -547,32 +572,64 @@ function $236a257ee52e5414$export$d41d19e89346fa2(_ref) {
547
572
  children: slider
548
573
  });
549
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
+ }
550
605
  const $2badc30d7c6610e1$var$_tmpl$ = ["<div", ' class="depict recommendations">', "</div>"];
551
606
  function $2badc30d7c6610e1$export$9574e176201e5e8d(props) {
552
- const grid_spacing_override = $3hooq$solidjs.createMemo(() => {
553
- const {
554
- grid_spacing: grid_spacing
555
- } = props; // can be reactive
556
- return typeof grid_spacing === "string" ? {
557
- grid_spacing: grid_spacing
558
- } : {
559
- override_vertical_spacing: grid_spacing.vertical,
560
- grid_spacing: grid_spacing.horizontal
561
- };
562
- });
563
- const [recommendations_resource_] = $3hooq$solidjs.createResource(() => props.recommendations, recs => recs);
564
- return $3hooq$solidjsweb.ssr($2badc30d7c6610e1$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($236a257ee52e5414$export$d41d19e89346fa2({
565
- product_card_template_: function () {
566
- return props.product_card_template(...arguments);
567
- },
568
- recommendations_resource_: recommendations_resource_,
569
- market_: () => props.market,
570
- merchant_: () => props.merchant,
571
- layout_options_: $3hooq$solidjs.createMemo(() => ({
572
- cols_at_size: $5401a6698b0c0658$export$6daf8749b65a1b77($b1ea8d47bcf03111$export$ff7109b9b2b206ba(props.cols_at_size)),
573
- ...grid_spacing_override()
574
- }))
575
- })));
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");
576
633
  }
577
634
  const $2c920813c92d6987$var$_tmpl$ = ["<div", ' class="recommendation-grid"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"];
578
635
  function $2c920813c92d6987$export$7da560f849543dff(_ref) {
@@ -632,40 +689,43 @@ function $2c920813c92d6987$export$7da560f849543dff(_ref) {
632
689
  const $41227f10ad680afd$var$_tmpl$ = ["<button", ' class="show-more major" type="button">', "</button>"],
633
690
  $41227f10ad680afd$var$_tmpl$2 = ["<div", ' class="depict plp recommendations">', "</div>"];
634
691
  function $41227f10ad680afd$export$9756467d34d91cdb(props) {
635
- const rows_object_ = $3hooq$solidjs.createMemo(() => {
636
- const view_more_button = props.view_more_button;
637
- if (!view_more_button) return "all";
638
- return {
639
- start_rows: view_more_button.start_rows,
640
- rows_per_click: view_more_button.rows_per_click,
641
- button: $3hooq$solidjsweb.ssr($41227f10ad680afd$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape(view_more_button.text))
642
- };
643
- });
644
- const grid_spacing_override = $3hooq$solidjs.createMemo(() => {
645
- const {
646
- grid_spacing: grid_spacing
647
- } = props; // can be reactive
648
- return typeof grid_spacing === "string" ? {
649
- grid_spacing: grid_spacing
650
- } : {
651
- override_vertical_spacing: grid_spacing.vertical,
652
- grid_spacing: grid_spacing.horizontal
653
- };
654
- });
655
- const [recommendations_resource_] = $3hooq$solidjs.createResource(() => props.recommendations, recs => recs);
656
- return $3hooq$solidjsweb.ssr($41227f10ad680afd$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($2c920813c92d6987$export$7da560f849543dff({
657
- rows_object_: rows_object_,
658
- product_card_template_: function () {
659
- return props.product_card_template(...arguments);
660
- },
661
- recommendations_resource_: recommendations_resource_,
662
- market_: () => props.market,
663
- merchant_: () => props.merchant,
664
- layout_options_: $3hooq$solidjs.createMemo(() => ({
665
- cols_at_size: $5401a6698b0c0658$export$6daf8749b65a1b77($b1ea8d47bcf03111$export$ff7109b9b2b206ba(props.cols_at_size)),
666
- ...grid_spacing_override()
667
- }))
668
- })));
692
+ return $d05611ff6b8c8357$export$23fca46f3143581f(() => {
693
+ const rows_object_ = $3hooq$solidjs.createMemo(() => {
694
+ var _view_more_button$row;
695
+ const view_more_button = props.view_more_button;
696
+ if (!view_more_button) return "all";
697
+ return {
698
+ start_rows: view_more_button.start_rows,
699
+ 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,
700
+ button: $3hooq$solidjsweb.ssr($41227f10ad680afd$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape(view_more_button.text))
701
+ };
702
+ });
703
+ const grid_spacing_override = $3hooq$solidjs.createMemo(() => {
704
+ const {
705
+ grid_spacing: grid_spacing
706
+ } = props; // can be reactive
707
+ return typeof grid_spacing === "string" ? {
708
+ grid_spacing: grid_spacing
709
+ } : {
710
+ override_vertical_spacing: grid_spacing.vertical,
711
+ grid_spacing: grid_spacing.horizontal
712
+ };
713
+ });
714
+ const [recommendations_resource_] = $3hooq$solidjs.createResource(() => props.recommendations, recs => recs);
715
+ return $3hooq$solidjsweb.ssr($41227f10ad680afd$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape($2c920813c92d6987$export$7da560f849543dff({
716
+ rows_object_: rows_object_,
717
+ product_card_template_: function () {
718
+ return props.product_card_template(...arguments);
719
+ },
720
+ recommendations_resource_: recommendations_resource_,
721
+ market_: () => props.market,
722
+ merchant_: () => props.merchant,
723
+ layout_options_: $3hooq$solidjs.createMemo(() => ({
724
+ cols_at_size: $5401a6698b0c0658$export$6daf8749b65a1b77($b1ea8d47bcf03111$export$ff7109b9b2b206ba(props.cols_at_size)),
725
+ ...grid_spacing_override()
726
+ }))
727
+ })));
728
+ }, "RecommendationGrid failed");
669
729
  }
670
730
  function $858fdcf73148519f$export$e6fffe67d4cdd848(whatToWatch) {
671
731
  const [size, setSize] = $3hooq$solidjs.createSignal(0);
@@ -1060,16 +1120,16 @@ function $c5842bdb10e57229$export$fecbb157621501bd(_ref) {
1060
1120
  return outmost_element;
1061
1121
  }
1062
1122
  const $6b92e147c6e24046$var$_tmpl$ = ["<span", ' class="count">', "</span>"],
1063
- $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>"];
1123
+ $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>"];
1064
1124
  const $6b92e147c6e24046$export$48513f6b9f8ce62d = props => {
1065
1125
  // 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
1066
1126
  const count = $3hooq$solidjs.createMemo(() => props.count_);
1067
1127
  const label = $3hooq$solidjs.createMemo(() => props.label_);
1068
1128
  const checked = $3hooq$solidjs.createMemo(() => props.checked_);
1069
1129
  const value = $3hooq$solidjs.createMemo(() => props.value_);
1070
- const is_count_zero = $3hooq$solidjs.createMemo(() => props.is_count_zero_);
1130
+ const is_count_zero = $3hooq$solidjs.createMemo(() => props.is_count_zero_ || count() === 0);
1071
1131
  const id = $3hooq$depictaiutilishared.make_random_classname();
1072
- 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), {
1132
+ 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), {
1073
1133
  get when() {
1074
1134
  return count() != undefined;
1075
1135
  },
@@ -1480,7 +1540,7 @@ function $ac040bdfeed58ee4$export$e5c2828934226505(_ref) {
1480
1540
  const $9c1d49181fb3002a$var$_tmpl$ = ["<form", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></form>"],
1481
1541
  $9c1d49181fb3002a$var$_tmpl$2 = ["<div", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
1482
1542
  $9c1d49181fb3002a$var$_tmpl$3 = ["<details", "></details>"],
1483
- $9c1d49181fb3002a$var$_tmpl$4 = ["<summary", ' class="category-parent"><div class="summary"><span class="count">', "</span><!--#-->", "<!--/--></div></summary>"];
1543
+ $9c1d49181fb3002a$var$_tmpl$4 = ["<summary", ' class="category-parent"><div class="summary"><span class="', '">', "</span><!--#-->", "<!--/--></div></summary>"];
1484
1544
  const $9c1d49181fb3002a$var$max_visible_without_collapsing = 15;
1485
1545
  const $9c1d49181fb3002a$var$show_non_collapsible_when_collapsed = 4;
1486
1546
  function $9c1d49181fb3002a$export$a32086fa6616eafd(_ref) {
@@ -1700,13 +1760,13 @@ function $9c1d49181fb3002a$var$render_stuff(data, existing_filter, i18n_) {
1700
1760
  return $3hooq$solidjsweb.ssr($9c1d49181fb3002a$var$_tmpl$3, $3hooq$solidjsweb.ssrHydrationKey());
1701
1761
  },
1702
1762
  get summary_() {
1703
- var _value10;
1704
- 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), {
1763
+ var _value10, _value11;
1764
+ 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), {
1705
1765
  i18n_: i18n_,
1706
1766
  get expanded_() {
1707
1767
  return $3hooq$solidjs.createMemo(() => {
1708
- var _value$is_expanded_$u, _value11, _value11$is_expanded_, _value11$is_expanded_2;
1709
- 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;
1768
+ var _value$is_expanded_$u, _value12, _value12$is_expanded_, _value12$is_expanded_2;
1769
+ 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;
1710
1770
  });
1711
1771
  }
1712
1772
  })));
@@ -1728,8 +1788,8 @@ function $9c1d49181fb3002a$var$render_stuff(data, existing_filter, i18n_) {
1728
1788
  },
1729
1789
  get children() {
1730
1790
  return $9c1d49181fb3002a$var$render_stuff($3hooq$solidjs.createMemo(() => {
1731
- var _value12;
1732
- return ((_value12 = value()) === null || _value12 === void 0 ? void 0 : _value12.children_) || {};
1791
+ var _value13;
1792
+ return ((_value13 = value()) === null || _value13 === void 0 ? void 0 : _value13.children_) || {};
1733
1793
  }), existing_filter, i18n_);
1734
1794
  }
1735
1795
  });
@@ -1913,7 +1973,8 @@ function $9c1d49181fb3002a$var$expand_until_choice(data_structure) {
1913
1973
  });
1914
1974
  }
1915
1975
  const $cd0e5524f9476f9b$var$_tmpl$ = ["<div", ' class="checkbox-grid">', "</div>"],
1916
- $cd0e5524f9476f9b$var$_tmpl$2 = ["<button", ' class="', '">', "</button>"];
1976
+ $cd0e5524f9476f9b$var$_tmpl$2 = ["<span", ' class="count-wrapper"><span class="count">', "</span></span>"],
1977
+ $cd0e5524f9476f9b$var$_tmpl$3 = ["<button", "", ' class="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></button>"];
1917
1978
  const $cd0e5524f9476f9b$export$414f6a19d38e655c = _ref => {
1918
1979
  let {
1919
1980
  filter_: filter_,
@@ -1952,7 +2013,14 @@ const $cd0e5524f9476f9b$export$414f6a19d38e655c = _ref => {
1952
2013
  var _existing_filter, _existing_filter$data;
1953
2014
  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_);
1954
2015
  });
1955
- 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_));
2016
+ 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), {
2017
+ get when() {
2018
+ return value().count_ != undefined;
2019
+ },
2020
+ get children() {
2021
+ return $3hooq$solidjsweb.ssr($cd0e5524f9476f9b$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey(), $3hooq$solidjsweb.escape(value().count_));
2022
+ }
2023
+ })));
1956
2024
  }
1957
2025
  })));
1958
2026
  };
@@ -5495,35 +5563,6 @@ function $ede6c70ecdca46fe$export$f7d2f673fc2f091d(_ref) {
5495
5563
  }
5496
5564
  })))];
5497
5565
  }
5498
- function $d05611ff6b8c8357$export$23fca46f3143581f(component, error_message) {
5499
- const component_in_error_boundary = do_with_elements => {
5500
- const error_boundary_wrapped = $1b3cf201cdd38687$export$b69d0d92862de18b({
5501
- severity_: "error",
5502
- message_: error_message,
5503
- get children() {
5504
- const elements = component();
5505
- do_with_elements === null || do_with_elements === void 0 || do_with_elements(elements);
5506
- return elements;
5507
- }
5508
- });
5509
- // This might return an accessor, in that case we need to "unwrap" it since our SDK consumers expect HTML elements or arrays thereof
5510
- if (typeof error_boundary_wrapped === "function")
5511
- // @ts-ignore
5512
- return error_boundary_wrapped();
5513
- // On the server it returns a string, so we just return that
5514
- return error_boundary_wrapped;
5515
- };
5516
- const owner = $3hooq$solidjs.getOwner();
5517
- if (owner == null) return $3hooq$solidjs.createRoot(dispose => {
5518
- // 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
5519
- return component_in_error_boundary(elements => {
5520
- if (!(elements !== null && elements !== void 0 && elements.length)) return;
5521
- (0, $3hooq$depictaiutilishared.observer).onremoved(elements[0], dispose);
5522
- });
5523
- });else
5524
- // we're already in a root so cleanups are handled
5525
- return component_in_error_boundary();
5526
- }
5527
5566
  function $5dd9d0d3ea82e2dd$export$477caf01aecaeb2a(options) {
5528
5567
  var _globalThis$location$, _globalThis$location;
5529
5568
  const router_ = options.router_;
@@ -6964,7 +7003,7 @@ function $3cf7b4db1e203c93$export$605674723bcc715c() {
6964
7003
  const $0677d509ad208e22$var$_tmpl$ = ["<a", ' class="', '"', ">", "</a>"],
6965
7004
  $0677d509ad208e22$var$_tmpl$2 = ["<div", ' class="search-icon">', "</div>"],
6966
7005
  $0677d509ad208e22$var$_tmpl$3 = ["<span", ' class="type">', "</span>"],
6967
- $0677d509ad208e22$var$_tmpl$4 = ["<div", "><!--#-->", '<!--/--><span class="value">', "</span></div>"],
7006
+ $0677d509ad208e22$var$_tmpl$4 = ["<div", ' class="with-parent-title"><!--#-->', '<!--/--><span class="value line-clamp">', "</span></div>"],
6968
7007
  $0677d509ad208e22$var$_tmpl$5 = ["<div", ' class="with-icon"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
6969
7008
  $0677d509ad208e22$var$_tmpl$6 = ["<h2", ' class="text">', "</h2>"],
6970
7009
  $0677d509ad208e22$var$_tmpl$7 = ["<div", ' class="suggestion-container query"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
@@ -8142,7 +8181,9 @@ function $f1fc9ea3e7632eba$export$f631859cab12b342(_ref) {
8142
8181
  function $bf4a8d57aa8dd1c8$export$9ff751cd77687edc(_ref) {
8143
8182
  let {
8144
8183
  search_results_: search_results_,
8145
- router_: router_
8184
+ router_: router_,
8185
+ queries_without_content_results_: queries_without_content_results_,
8186
+ get_search_query_: get_search_query_
8146
8187
  } = _ref;
8147
8188
  const content_results = $3hooq$solidjs.createMemo(() => {
8148
8189
  var _search_results_;
@@ -8158,6 +8199,10 @@ function $bf4a8d57aa8dd1c8$export$9ff751cd77687edc(_ref) {
8158
8199
  }
8159
8200
  return map;
8160
8201
  });
8202
+ $3hooq$solidjs.createEffect(() => {
8203
+ const results = content_results();
8204
+ if (Array.isArray(results) && results.length === 0) queries_without_content_results_.add($3hooq$solidjs.untrack(get_search_query_));
8205
+ });
8161
8206
  return $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.For), {
8162
8207
  get each() {
8163
8208
  return [...content_results_by_page_url().keys()];
@@ -8197,7 +8242,7 @@ function $05f255c0a94b9ca1$export$4405d077f0a20494(_ref) {
8197
8242
  children: () => $3hooq$solidjsweb.createComponent((0, $f1fc9ea3e7632eba$export$f631859cab12b342), {})
8198
8243
  });
8199
8244
  }
8200
- const $eab939d0b95b75ee$var$_tmpl$ = ["<div", ' class="', '" style="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
8245
+ const $eab939d0b95b75ee$var$_tmpl$ = ["<div", ' class="content-results" style="', '"><!--#-->', "<!--/--><!--#-->", "<!--/--></div>"],
8201
8246
  $eab939d0b95b75ee$var$_tmpl$2 = ["<button", ' class="view-more">', "</button>"],
8202
8247
  $eab939d0b95b75ee$var$_tmpl$3 = ["<button", ' class="view-less">', "</button>"];
8203
8248
  const $eab939d0b95b75ee$export$70ceae36059a1036 = 1;
@@ -8225,9 +8270,16 @@ function $eab939d0b95b75ee$export$6d0c9c22f6652669(_ref) {
8225
8270
  number_: num_results,
8226
8271
  i18n_: i18n_
8227
8272
  });
8228
- const [is_showing_placeholders, set_is_showing_placeholders] = $3hooq$solidjs.createSignal(false);
8273
+ const queries_without_content_results_ = new (0, $3hooq$depictaiutilishared.ListenableSet)();
8274
+ const [check_query, set_check_query] = $3hooq$solidjs.createSignal(false);
8275
+ const placeholders_enabled = $3hooq$solidjs.createMemo(() => {
8276
+ // don't show placeholders when the user toggles filters
8277
+ check_query();
8278
+ return !queries_without_content_results_.has(get_search_query_());
8279
+ });
8229
8280
  const rows_object = $eab939d0b95b75ee$var$make_state_saved_rows(content_results_rows_, i18n_);
8230
- 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), {
8281
+ for (const ev of ["add", "delete"]) queries_without_content_results_.addEventListener(ev, () => set_check_query(prev => !prev));
8282
+ 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), {
8231
8283
  get_search_query_: get_search_query_,
8232
8284
  i18n_: i18n_,
8233
8285
  formatted_number_of_results_: formatted_number_of_results_,
@@ -8245,21 +8297,19 @@ function $eab939d0b95b75ee$export$6d0c9c22f6652669(_ref) {
8245
8297
  get children() {
8246
8298
  return $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Suspense), {
8247
8299
  get fallback() {
8248
- return (() => {
8249
- set_is_showing_placeholders(true);
8250
- $3hooq$solidjs.onCleanup(() => set_is_showing_placeholders(false));
8251
- return $3hooq$solidjsweb.createComponent((0, $05f255c0a94b9ca1$export$4405d077f0a20494), {
8252
- content_results_rows_: content_results_rows_,
8253
- get cols_at_size_() {
8254
- return $3hooq$solidjs.createMemo(() => layout_options_().cols_at_size);
8255
- }
8256
- });
8257
- })();
8300
+ return $3hooq$solidjsweb.createComponent((0, $05f255c0a94b9ca1$export$4405d077f0a20494), {
8301
+ content_results_rows_: content_results_rows_,
8302
+ get cols_at_size_() {
8303
+ return $3hooq$solidjs.createMemo(() => layout_options_().cols_at_size);
8304
+ }
8305
+ });
8258
8306
  },
8259
8307
  get children() {
8260
8308
  return $3hooq$solidjsweb.createComponent((0, $bf4a8d57aa8dd1c8$export$9ff751cd77687edc), {
8261
8309
  router_: router_,
8262
- search_results_: search_results_
8310
+ search_results_: search_results_,
8311
+ queries_without_content_results_: queries_without_content_results_,
8312
+ get_search_query_: get_search_query_
8263
8313
  });
8264
8314
  }
8265
8315
  });
@@ -8701,7 +8751,7 @@ function $ddd39c5f36f49703$var$_classApplyDescriptorGet(receiver, descriptor) {
8701
8751
  * 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.
8702
8752
  */
8703
8753
  const $ddd39c5f36f49703$var$privately_shared_properties = /*@__PURE__*/new WeakMap();
8704
- const $ddd39c5f36f49703$var$content_search_default = false;
8754
+ const $ddd39c5f36f49703$var$content_search_default = true;
8705
8755
  const $ddd39c5f36f49703$var$min_products_to_fetch_ = 20;
8706
8756
  const $ddd39c5f36f49703$export$bde3eb976dfded9 = depict_search => {
8707
8757
  var _privately_shared_pro;