@depict-ai/ui 1.0.14 → 1.0.15

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/dist/main.js CHANGED
@@ -32,15 +32,12 @@ $parcel$export(module.exports, "setup_fast_leave", () => $08e7f10b1831645f$expor
32
32
  $parcel$export(module.exports, "show_toast", () => $ee498ec5e7dc2bba$export$5196e4c01fa56fcb);
33
33
  $parcel$export(module.exports, "SolidFormatPrice", () => $d659702496cb72ea$export$a71e92cfbb498adc);
34
34
  $parcel$export(module.exports, "connect_search_field_height_to_aligner_height", () => $d8e94ea381ab57fa$export$828dcdd425fd3231);
35
- $parcel$export(module.exports, "BasePlaceholder", () => $9fe9883b1d8ecccc$export$acb3eaade4b23afd);
36
- $parcel$export(module.exports, "TextPlaceholder", () => $061ff5b4c3d36171$export$89c6019e4baa40b1);
37
- $parcel$export(module.exports, "ImagePlaceholder", () => $3bc4a89b971a3af5$export$3f37af283f8fb843);
38
35
  $parcel$export(module.exports, "PageReplacer", () => $0a6acf31d1eae57c$export$3ccaa27d81dd8556);
39
36
  $parcel$export(module.exports, "defaultGridSpacing", () => $a3280f0aad997933$export$864d304a0bc46829);
40
37
  $parcel$export(module.exports, "defaultColsAtSize", () => $a3280f0aad997933$export$c3834fa86c616831);
41
38
  $parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $a3280f0aad997933$export$7bf543b9d9be2c22);
42
39
  $parcel$export(module.exports, "version", () => $b757f75811f3261f$export$83d89fbfd8236492);
43
- /*! Depict.ai search and product listing SDK */ const $b757f75811f3261f$export$83d89fbfd8236492 = "1.0.14";
40
+ /*! Depict.ai search and product listing SDK */ const $b757f75811f3261f$export$83d89fbfd8236492 = "1.0.15";
44
41
 
45
42
 
46
43
 
@@ -824,8 +821,8 @@ function $0caf87eaa19079da$export$f33414a4df0afd3f({ product_card_template_: pro
824
821
  });
825
822
  return get_elements; // https://github.com/solidjs/solid/releases/tag/v1.7.0
826
823
  }
827
- /**
828
- * Get one placeholder element. It will be cloned for each placeholder for ultimate performance even when solid-js isn't rendering the placeholders.
824
+ /**
825
+ * Get one placeholder element. It will be cloned for each placeholder for ultimate performance even when solid-js isn't rendering the placeholders.
829
826
  */ function $0caf87eaa19079da$var$Placeholder({ product_card_template_: product_card_template_ }) {
830
827
  const get_cloned_placeholders = (element_to_clone = $0caf87eaa19079da$var$cached_placeholder_element)=>Array.isArray(element_to_clone) ? element_to_clone.map((el)=>el instanceof Node ? el.cloneNode(true) : el) : element_to_clone;
831
828
  if ($0caf87eaa19079da$var$cached_placeholder_element) return get_cloned_placeholders();
@@ -870,8 +867,8 @@ function $0caf87eaa19079da$export$f33414a4df0afd3f({ product_card_template_: pro
870
867
  }
871
868
 
872
869
 
873
- /*
874
- * Usually product templates are somewhat height-elastic depending on the content, i.e. if the title is longer we might up to two extra rows for this. That means that the placeholders almost never will reflect the size of the actual content when we do scroll restoration. This magic number specifies how many extra placeholders we should render everytime to compensate for this, since if the placeholders are in total shorter than the old scroll location the scroll restoration won't work.
870
+ /*
871
+ * Usually product templates are somewhat height-elastic depending on the content, i.e. if the title is longer we might up to two extra rows for this. That means that the placeholders almost never will reflect the size of the actual content when we do scroll restoration. This magic number specifies how many extra placeholders we should render everytime to compensate for this, since if the placeholders are in total shorter than the old scroll location the scroll restoration won't work.
875
872
  */ const $aec24316ed262dc0$export$6c9030e511152266 = 30;
876
873
 
877
874
 
@@ -963,8 +960,8 @@ function $4117463e2939f5f4$export$63dd0350f8559dda({ displays_by_key_: displays_
963
960
 
964
961
 
965
962
 
966
- /**
967
- * Gets product_id (the thing we key the rendering on) from a display
963
+ /**
964
+ * Gets product_id (the thing we key the rendering on) from a display
968
965
  */ function $a5871dacf261adf8$export$548d053aba053d79(display) {
969
966
  if ("variant_index" in display) {
970
967
  const actual_display = display.variant_displays[display.variant_index];
@@ -1265,9 +1262,9 @@ function $fe76fb463cc60b89$export$3925f87b1545cfc6({ plp_results_: plp_results_
1265
1262
  return _el$;
1266
1263
  })();
1267
1264
  }
1268
- /**
1269
- * Sets styling to styling generated by "Layout" (n_col_styling_with_dist) depending on if filters are open or not
1270
- * This function is special to the actual PLPResults.
1265
+ /**
1266
+ * Sets styling to styling generated by "Layout" (n_col_styling_with_dist) depending on if filters are open or not
1267
+ * This function is special to the actual PLPResults.
1271
1268
  */ function $fe76fb463cc60b89$var$results_grid_styling_generator({ layout_options_: layout_options_ , sort_or_filter_open_: sort_or_filter_open_ , set_styling_: set_styling_ , selector_beginning_: selector_beginning_ }) {
1272
1269
  (0, $iBTHO$solidjs.createRenderEffect)(()=>{
1273
1270
  // Add grid styling that changes when filters get opened/closed
@@ -3190,52 +3187,6 @@ function $8c939a05b87fbbbc$export$ab34afce88557c0e(props) {
3190
3187
 
3191
3188
 
3192
3189
 
3193
-
3194
-
3195
-
3196
-
3197
-
3198
- const $9fe9883b1d8ecccc$var$_tmpl$ = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<span></span>`, 2);
3199
- function $9fe9883b1d8ecccc$export$acb3eaade4b23afd(props) {
3200
- return (()=>{
3201
- const _el$ = $9fe9883b1d8ecccc$var$_tmpl$.cloneNode(true);
3202
- (0, $iBTHO$solidjsweb.effect)((_p$)=>{
3203
- const _v$ = `depict-placeholder ${props.class || ""}`, _v$2 = props.style;
3204
- _v$ !== _p$._v$ && (0, $iBTHO$solidjsweb.className)(_el$, _p$._v$ = _v$);
3205
- _p$._v$2 = (0, $iBTHO$solidjsweb.style)(_el$, _v$2, _p$._v$2);
3206
- return _p$;
3207
- }, {
3208
- _v$: undefined,
3209
- _v$2: undefined
3210
- });
3211
- return _el$;
3212
- })();
3213
- }
3214
-
3215
-
3216
-
3217
- function $061ff5b4c3d36171$export$89c6019e4baa40b1(props) {
3218
- const style = (0, $iBTHO$solidjs.createMemo)(()=>{
3219
- const { style: style , height: height , width: width } = props;
3220
- return {
3221
- ...style || {},
3222
- height: height ?? "1em",
3223
- ...width && {
3224
- width: width
3225
- }
3226
- };
3227
- });
3228
- return (0, $iBTHO$solidjsweb.createComponent)((0, $9fe9883b1d8ecccc$export$acb3eaade4b23afd), {
3229
- get style () {
3230
- return style();
3231
- },
3232
- get ["class"] () {
3233
- return props.class;
3234
- }
3235
- });
3236
- }
3237
-
3238
-
3239
3190
  const $aff9a96d30ed3563$var$_tmpl$ = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="filter-collapsible"></div>`, 2), $aff9a96d30ed3563$var$_tmpl$2 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<button class="clear-group"><span></span></button>`, 4), $aff9a96d30ed3563$var$_tmpl$3 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="view-more-clear"></div>`, 2), $aff9a96d30ed3563$var$_tmpl$4 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="filter-collapsible-body"><div class="filter-part"></div></div>`, 4), $aff9a96d30ed3563$var$_tmpl$5 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<details class="filter-collapsible"></details>`, 2), $aff9a96d30ed3563$var$_tmpl$6 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<summary class="filter-group-summary"><div class="summary"><span></span><div class="selected-w-sign"></div></div></summary>`, 8), $aff9a96d30ed3563$var$_tmpl$7 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="ungrouped"></div>`, 2), $aff9a96d30ed3563$var$_tmpl$8 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<button class="clear-all-filters major"></button>`, 2);
3240
3191
  function $aff9a96d30ed3563$export$3f1a388cc0d8fed7(props) {
3241
3192
  // Split like this to make placeholder wrapping more visible & this component is exported and used in MobileModal
@@ -3248,7 +3199,7 @@ function $aff9a96d30ed3563$export$3f1a388cc0d8fed7(props) {
3248
3199
  length: 5
3249
3200
  }).map(()=>(()=>{
3250
3201
  const _el$ = $aff9a96d30ed3563$var$_tmpl$.cloneNode(true);
3251
- (0, $iBTHO$solidjsweb.insert)(_el$, (0, $iBTHO$solidjsweb.createComponent)((0, $061ff5b4c3d36171$export$89c6019e4baa40b1), {
3202
+ (0, $iBTHO$solidjsweb.insert)(_el$, (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.Placeholder), {
3252
3203
  width: "100%",
3253
3204
  height: "50px"
3254
3205
  }));
@@ -3478,7 +3429,6 @@ function $aff9a96d30ed3563$var$ActualFilterBody(props) {
3478
3429
 
3479
3430
 
3480
3431
 
3481
-
3482
3432
  const $be89be42ce9ea60f$var$_tmpl$ = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="sorting-attributes"></div>`, 2), $be89be42ce9ea60f$var$_tmpl$2 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="sorting-direction"></div>`, 2), $be89be42ce9ea60f$var$_tmpl$3 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div><div class="input-row"><input type="radio"><span class="custom-indicator"></span></div></div>`, 7), $be89be42ce9ea60f$var$_tmpl$4 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div><label class="input-row"><input type="radio"><span class="custom-indicator"></span></label></div>`, 7);
3483
3433
  function $be89be42ce9ea60f$export$1f1775a58da589b5({ available_sortings_: available_sortings_ , current_sorting_: [get_current_sorting, set_current_sorting] , meta_of_currently_selected_sorting_: meta_of_currently_selected_sorting_ }) {
3484
3434
  const title_radio_name = (0, $iBTHO$depictaiutilishared.make_random_classname)();
@@ -3495,7 +3445,7 @@ function $be89be42ce9ea60f$export$1f1775a58da589b5({ available_sortings_: availa
3495
3445
  }).map(()=>(()=>{
3496
3446
  const _el$4 = $be89be42ce9ea60f$var$_tmpl$3.cloneNode(true), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild, _el$7 = _el$6.nextSibling;
3497
3447
  _el$6.disabled = true;
3498
- (0, $iBTHO$solidjsweb.insert)(_el$5, (0, $iBTHO$solidjsweb.createComponent)((0, $061ff5b4c3d36171$export$89c6019e4baa40b1), {
3448
+ (0, $iBTHO$solidjsweb.insert)(_el$5, (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.Placeholder), {
3499
3449
  height: "1.2em",
3500
3450
  width: "100%"
3501
3451
  }), null);
@@ -4004,9 +3954,9 @@ function $70482f04605572e2$export$b288c38ae3fddb56({ available_filters_: availab
4004
3954
  last_remote_state = available_filters_();
4005
3955
  });
4006
3956
  }
4007
- /**
4008
- * When a filter is only available locally due to being selected in a previous navigation, we want to make that clear and prevent further "invalid" choices.
4009
- * This sets the counts to 0 (if applicable) and removes non-selected options (if applicable)
3957
+ /**
3958
+ * When a filter is only available locally due to being selected in a previous navigation, we want to make that clear and prevent further "invalid" choices.
3959
+ * This sets the counts to 0 (if applicable) and removes non-selected options (if applicable)
4010
3960
  */ function $70482f04605572e2$var$modify_only_local_filter(local_filter_object, selected_filter) {
4011
3961
  const old_meta = local_filter_object.meta;
4012
3962
  const selected_filter_data = selected_filter.data;
@@ -4446,10 +4396,10 @@ const $1ab22f2cd39b3061$var$range_delimiter = "-";
4446
4396
  const $1ab22f2cd39b3061$var$string_item_delimiter = "‚"; // This is not a comma but a comma-like character that browsers will render in the URL bar.
4447
4397
  const $1ab22f2cd39b3061$var$array_item_delimiter = "‣"; // FIXME: decide on a character. Could theoretically be a double string delimiter.
4448
4398
  const $1ab22f2cd39b3061$var$empty_item_replacement = "0️⃣";
4449
- /**
4450
- * Checks if a given array of filter data can be neatly serialized into an URL query parameter, or if it should fall back to JSON+base64.
4451
- * The requirements are either an array of strings, containing no reserved characters, or an array of arrays of strings, containing no reserved characters.
4452
- * No deep or mixed nesting levels are supported.
4399
+ /**
4400
+ * Checks if a given array of filter data can be neatly serialized into an URL query parameter, or if it should fall back to JSON+base64.
4401
+ * The requirements are either an array of strings, containing no reserved characters, or an array of arrays of strings, containing no reserved characters.
4402
+ * No deep or mixed nesting levels are supported.
4453
4403
  */ function $1ab22f2cd39b3061$var$array_is_serializable(array, is_root = true) {
4454
4404
  if (array.every((item)=>Array.isArray(item))) {
4455
4405
  if (!is_root) // Deeply nested arrays are not supported, but also don't exist as filters (yet)
@@ -4461,10 +4411,10 @@ const $1ab22f2cd39b3061$var$empty_item_replacement = "0️⃣";
4461
4411
  // Encoding reserved characters is not supported
4462
4412
  return !array.some((item)=>item.includes($1ab22f2cd39b3061$var$array_item_delimiter) || item.includes($1ab22f2cd39b3061$var$string_item_delimiter) || item === $1ab22f2cd39b3061$var$empty_item_replacement);
4463
4413
  }
4464
- /**
4465
- * Human readable string[] or string[][] serialization for URLs.
4466
- * @param array
4467
- * @returns
4414
+ /**
4415
+ * Human readable string[] or string[][] serialization for URLs.
4416
+ * @param array
4417
+ * @returns
4468
4418
  */ function $1ab22f2cd39b3061$var$encode_array(array) {
4469
4419
  const is_nested = array.every((item)=>Array.isArray(item));
4470
4420
  if (is_nested) return array.map($1ab22f2cd39b3061$var$encode_array).join($1ab22f2cd39b3061$var$array_item_delimiter) + $1ab22f2cd39b3061$var$array_item_delimiter; // Nested arrays require a suffix to close nesting levels
@@ -4576,7 +4526,6 @@ function $1ab22f2cd39b3061$export$43cd1e747fecd42e(to_url, set_clearing_flag, fr
4576
4526
  }
4577
4527
 
4578
4528
 
4579
-
4580
4529
  const $e53b2e7e632ac4cb$var$_tmpl$ = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<nav class="crumbs"></nav>`, 2), $e53b2e7e632ac4cb$var$_tmpl$2 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<a class="crumb"></a>`, 2), $e53b2e7e632ac4cb$var$_tmpl$3 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<span class="separator"></span>`, 2);
4581
4530
  function $e53b2e7e632ac4cb$export$5646050d516e06bc({ crumb_data_: get_api_crumb_data , router_: router_ , i18n_: i18n_ }) {
4582
4531
  const placeholder_crumb_data = [
@@ -4602,7 +4551,7 @@ function $e53b2e7e632ac4cb$export$5646050d516e06bc({ crumb_data_: get_api_crumb_
4602
4551
  return display_accessor();
4603
4552
  },
4604
4553
  get fallback () {
4605
- return (0, $iBTHO$solidjsweb.createComponent)((0, $061ff5b4c3d36171$export$89c6019e4baa40b1), {
4554
+ return (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.Placeholder), {
4606
4555
  height: "calc(1em + 1px)",
4607
4556
  width: "10ch"
4608
4557
  });
@@ -4655,7 +4604,6 @@ function $e53b2e7e632ac4cb$export$5646050d516e06bc({ crumb_data_: get_api_crumb_
4655
4604
 
4656
4605
 
4657
4606
 
4658
-
4659
4607
  const $8cceb1d3a967f369$var$_tmpl$ = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<nav class="quicklinks"></nav>`, 2), $8cceb1d3a967f369$var$_tmpl$2 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div>QuickLinks failed</div>`, 2), $8cceb1d3a967f369$var$_tmpl$3 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<a class="quicklink"></a>`, 2);
4660
4608
  function $8cceb1d3a967f369$export$466cdc317043f6cb({ quicklinks_data_: quicklinks_data_ , router_: router_ , current_query_id_: current_query_id_ , slider_arrow_button_: slider_arrow_button_ , breadcrumb_data_: breadcrumb_data_ , i18n_: i18n_ }) {
4661
4609
  let scrolling_logic_ran_for_query_id = false;
@@ -4808,7 +4756,7 @@ function $8cceb1d3a967f369$export$466cdc317043f6cb({ quicklinks_data_: quicklink
4808
4756
  category_query_id_: display_accessor()?.query_id
4809
4757
  });
4810
4758
  }), true);
4811
- (0, $iBTHO$solidjsweb.insert)(_el$3, ()=>display_accessor()?.title || (0, $iBTHO$solidjsweb.createComponent)((0, $061ff5b4c3d36171$export$89c6019e4baa40b1), {
4759
+ (0, $iBTHO$solidjsweb.insert)(_el$3, ()=>display_accessor()?.title || (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.Placeholder), {
4812
4760
  height: "1em",
4813
4761
  width: "10ch"
4814
4762
  }));
@@ -5062,7 +5010,6 @@ function $cafad5eca9f09cb5$export$d4fc5c0e68a52116(el, query_id_, i18n_) {
5062
5010
  ]);
5063
5011
 
5064
5012
 
5065
-
5066
5013
  const $840d88a04b2d22a7$var$_tmpl$ = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="product-count"> </div>`, 2), $840d88a04b2d22a7$var$_tmpl$2 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div></div>`, 2), $840d88a04b2d22a7$var$_tmpl$3 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="filter-results-for-one-row"></div>`, 2), $840d88a04b2d22a7$var$_tmpl$4 = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="depict plp category"><div class="listing-page"></div></div>`, 4);
5067
5014
  function $840d88a04b2d22a7$export$f7d2f673fc2f091d({ depict_api_: depict_api_ , query_id_: query_id_ , current_sorting_: current_sorting_ , min_products_to_fetch_: min_products_to_fetch_ , category_filters_open_: category_filters_open_ , category_sorting_open_: category_sorting_open_ , expanded_filters_: expanded_filters_ , selected_filters_: selected_filters_ , get_quicklinks_accessor_: get_quicklinks_accessor_ , i18n_: incoming_i18n , get_breadcrumb_accessor_: get_breadcrumb_accessor_ , slider_arrow_button_: slider_arrow_button_ , expanded_hierarchical_filters_: expanded_hierarchical_filters_ , local_filter_cache_: local_filter_cache_ , tenant_: tenant_ , market_: market_ , router_: router_ , show_quicklinks_: show_quicklinks_ , category_title_: category_title_ , show_breadcrumbs_: show_breadcrumbs_ , layout_options_: layout_options_ , scroll_restoration_data_: scroll_restoration_data_ , product_card_template_: product_card_template_ , sideways_filter_clearing_flag_: sideways_filter_clearing_flag_ }) {
5068
5015
  let results_for;
@@ -5139,7 +5086,7 @@ function $840d88a04b2d22a7$export$f7d2f673fc2f091d({ depict_api_: depict_api_ ,
5139
5086
  get children () {
5140
5087
  return [
5141
5088
  " ",
5142
- (0, $iBTHO$solidjsweb.createComponent)((0, $061ff5b4c3d36171$export$89c6019e4baa40b1), {
5089
+ (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.Placeholder), {
5143
5090
  height: "1em",
5144
5091
  width: "3ch"
5145
5092
  })
@@ -5562,8 +5509,8 @@ function $c79fd10a3ab7d6e0$export$477caf01aecaeb2a(options) {
5562
5509
  }
5563
5510
  };
5564
5511
  }
5565
- /**
5566
- * Writes the sorting and filters to the URL query parameters when they change.
5512
+ /**
5513
+ * Writes the sorting and filters to the URL query parameters when they change.
5567
5514
  */ function $c79fd10a3ab7d6e0$var$start_href_writer({ get_sorting_: get_sorting_ , get_selected_filters_: get_selected_filters_ , router_: router_ , get_has_sideways_filter_clearing_flag_: get_has_sideways_filter_clearing_flag_ }) {
5568
5515
  (0, $iBTHO$solidjs.createEffect)((0, $iBTHO$solidjs.on)([
5569
5516
  get_sorting_,
@@ -5603,8 +5550,8 @@ function $c79fd10a3ab7d6e0$var$delete_sideways_param_flag(searchParams) {
5603
5550
 
5604
5551
 
5605
5552
  class $e96dd13889871fc0$export$7e1297a3a19f10d8 {
5606
- /**
5607
- * Function that will be called when we want to navigate, or a string saying it's not an SPA. You can change this OTG
5553
+ /**
5554
+ * Function that will be called when we want to navigate, or a string saying it's not an SPA. You can change this OTG
5608
5555
  */ #throwing_on_navigation(...args) {
5609
5556
  const { on_navigation_: on_navigation_ } = this;
5610
5557
  if (typeof on_navigation_ !== "function") throw new Error("on_navigation_ is not a function");
@@ -5617,14 +5564,14 @@ class $e96dd13889871fc0$export$7e1297a3a19f10d8 {
5617
5564
  });
5618
5565
  }
5619
5566
  }
5620
- /**
5621
- * Checks if this tab shouldn't navigate because user wants to open in new tab
5567
+ /**
5568
+ * Checks if this tab shouldn't navigate because user wants to open in new tab
5622
5569
  */ #dont_attempt_navigation(ev) {
5623
5570
  return ev?.button || ev?.metaKey || ev?.ctrlKey;
5624
5571
  }
5625
- /**
5626
- * Vue has async router that needs to be awaited (it navigates after a microtask)
5627
- * This standardises waiting for all kinds of routers
5572
+ /**
5573
+ * Vue has async router that needs to be awaited (it navigates after a microtask)
5574
+ * This standardises waiting for all kinds of routers
5628
5575
  */ #get_navigation_happened_promise(is_replace) {
5629
5576
  return new Promise((resolve)=>{
5630
5577
  const handler = (what_happened)=>{
@@ -5637,19 +5584,19 @@ class $e96dd13889871fc0$export$7e1297a3a19f10d8 {
5637
5584
  });
5638
5585
  }
5639
5586
  navigate_ = {
5640
- /**
5641
- * Call this if you *just* want to replace the state object in history.state
5587
+ /**
5588
+ * Call this if you *just* want to replace the state object in history.state
5642
5589
  */ replace_state_: (new_state)=>{
5643
5590
  // This doesn't break any router, so we just do this directly for now, since many don't expose an interface for changing the state
5644
5591
  history.replaceState(new_state, "");
5645
5592
  },
5646
- /**
5647
- * Call this to change the URL
5648
- * @param new_url_ new URL to go to
5649
- * @param event_ event if you have this in a click handler, will not do anything on cmd/ctrl or non-left click then
5650
- * @param force_spa_navigation_ if you want to force SPA navigation even if on_navigation_ is set to "hard_navigation". You should only set this to true for inter-SDK-page navigations
5651
- * @param is_replace_ if you want to replace the current URL in history instead of pushing a new one
5652
- * @param category_query_id_ If you are navigating to a category and know the query_id of, please provide it. This is for making a better devEx in js-ui
5593
+ /**
5594
+ * Call this to change the URL
5595
+ * @param new_url_ new URL to go to
5596
+ * @param event_ event if you have this in a click handler, will not do anything on cmd/ctrl or non-left click then
5597
+ * @param force_spa_navigation_ if you want to force SPA navigation even if on_navigation_ is set to "hard_navigation". You should only set this to true for inter-SDK-page navigations
5598
+ * @param is_replace_ if you want to replace the current URL in history instead of pushing a new one
5599
+ * @param category_query_id_ If you are navigating to a category and know the query_id of, please provide it. This is for making a better devEx in js-ui
5653
5600
  */ go_to_: (0, $iBTHO$depictaiutilishared.catchify)(async ({ new_url_: raw_new_url , event_: event_ , force_spa_navigation_: force_spa_navigation_ , is_replace_: is_replace_ , category_query_id_: category_query_id_ })=>{
5654
5601
  const new_url_ = raw_new_url instanceof URL ? raw_new_url : new URL(raw_new_url, location.origin);
5655
5602
  const wants_hard_navigation = this.on_navigation_ === "hard_navigation";
@@ -5857,7 +5804,7 @@ const $0b23bfd073d9a4e8$export$b91cec6bdc6b32a1 = /*@__PURE__*/ (()=>{
5857
5804
  const actual_function = ({ category_title_: category_title_ , product_count_: product_count_ })=>{
5858
5805
  return (()=>{
5859
5806
  const _el$ = $0b23bfd073d9a4e8$var$_tmpl$.cloneNode(true), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild;
5860
- (0, $iBTHO$solidjsweb.insert)(_el$2, ()=>category_title_() || (0, $iBTHO$solidjsweb.createComponent)((0, $061ff5b4c3d36171$export$89c6019e4baa40b1), {
5807
+ (0, $iBTHO$solidjsweb.insert)(_el$2, ()=>category_title_() || (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.Placeholder), {
5861
5808
  height: "1em",
5862
5809
  width: "10ch"
5863
5810
  }));
@@ -6035,45 +5982,14 @@ async function $7b4bc889571cc67b$var$download_categories(tenant, market) {
6035
5982
 
6036
5983
 
6037
5984
 
6038
-
6039
-
6040
- function $3bc4a89b971a3af5$export$3f37af283f8fb843(props) {
6041
- const style = (0, $iBTHO$solidjs.createMemo)(()=>{
6042
- const { style: style , height: height , width: width , aspectRatio: aspectRatio } = props;
6043
- const is_image = aspectRatio != undefined;
6044
- const size_data = is_image ? {
6045
- width: "100%",
6046
- "padding-bottom": 1 / aspectRatio * 100 + "%"
6047
- } : {
6048
- width: width,
6049
- height: height
6050
- };
6051
- return {
6052
- display: "block",
6053
- ...style || {},
6054
- ...size_data
6055
- };
6056
- });
6057
- return (0, $iBTHO$solidjsweb.createComponent)((0, $9fe9883b1d8ecccc$export$acb3eaade4b23afd), {
6058
- get style () {
6059
- return style();
6060
- },
6061
- get ["class"] () {
6062
- return props.class;
6063
- }
6064
- });
6065
- }
6066
-
6067
-
6068
-
6069
5985
  const $6f604560873e4f69$var$_tmpl$ = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="instant-card"><div class="img-part"></div><div class="right-part"><div class="title-brand-tagline"><span class="title"></span></div></div></div>`, 10);
6070
5986
  function $6f604560873e4f69$export$ee1733d9a8495996() {
6071
5987
  return (()=>{
6072
5988
  const _el$ = $6f604560873e4f69$var$_tmpl$.cloneNode(true), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild;
6073
- (0, $iBTHO$solidjsweb.insert)(_el$2, (0, $iBTHO$solidjsweb.createComponent)((0, $3bc4a89b971a3af5$export$3f37af283f8fb843), {
6074
- aspectRatio: 1
5989
+ (0, $iBTHO$solidjsweb.insert)(_el$2, (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.ContainedPlaceholderImage), {
5990
+ aspect_ratio: 1
6075
5991
  }));
6076
- (0, $iBTHO$solidjsweb.insert)(_el$5, (0, $iBTHO$solidjsweb.createComponent)((0, $061ff5b4c3d36171$export$89c6019e4baa40b1), {
5992
+ (0, $iBTHO$solidjsweb.insert)(_el$5, (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.Placeholder), {
6077
5993
  width: "20ch",
6078
5994
  height: "1em"
6079
5995
  }));
@@ -6488,8 +6404,8 @@ async function $f328bd45f8ede33c$export$e16630ecb9644a1c({ on_submit_with_unchan
6488
6404
 
6489
6405
 
6490
6406
 
6491
- /**
6492
- * Expand an object where every value in the top-level is an accessor into a normal object. Used for converting solid_i18n objects into external i18n typed objects.
6407
+ /**
6408
+ * Expand an object where every value in the top-level is an accessor into a normal object. Used for converting solid_i18n objects into external i18n typed objects.
6493
6409
  */ const $639c124c22b6cbaa$export$27b710c08412a7ad = (obj)=>{
6494
6410
  return Object.fromEntries(Object.keys(obj).map((key)=>[
6495
6411
  key,
@@ -6541,7 +6457,8 @@ const $6ae613870d3380fc$export$b05c0ae390cf3e06 = (display_or_variant_container,
6541
6457
  sizes: "0px"
6542
6458
  }));
6543
6459
  const is_sale = (0, $iBTHO$solidjs.createMemo)(()=>display().sale_price !== display().original_price);
6544
- const href = (0, $iBTHO$solidjs.createMemo)(()=>display().page_url);
6460
+ // localized_page_url currently only used by MayaDelorez, but potentially more. Convenience to avoid requireing full frontend URL transformation.
6461
+ const href = (0, $iBTHO$solidjs.createMemo)(()=>display().localized_page_url || display().page_url);
6545
6462
  return (()=>{
6546
6463
  const _el$ = $6ae613870d3380fc$var$_tmpl$2.cloneNode(true), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$5.nextSibling, _el$7 = _el$4.nextSibling, _el$9 = _el$7.firstChild;
6547
6464
  (0, $iBTHO$solidjsweb.addEventListener)(_el$, "click", (0, $iBTHO$depictaiutilishared.catchify)((event_)=>router_.navigate_.go_to_({
@@ -7656,7 +7573,7 @@ function $04048c1bef16c249$export$c05a196222ba1302({ suggestions_: suggestions_
7656
7573
  get fallback () {
7657
7574
  return (()=>{
7658
7575
  const _el$2 = $04048c1bef16c249$var$_tmpl$2.cloneNode(true);
7659
- (0, $iBTHO$solidjsweb.insert)(_el$2, (0, $iBTHO$solidjsweb.createComponent)((0, $061ff5b4c3d36171$export$89c6019e4baa40b1), {
7576
+ (0, $iBTHO$solidjsweb.insert)(_el$2, (0, $iBTHO$solidjsweb.createComponent)((0, $iBTHO$depictaiutilishared.Placeholder), {
7660
7577
  height: "19px",
7661
7578
  width: "133px"
7662
7579
  }));
@@ -8030,8 +7947,8 @@ function $d8e94ea381ab57fa$export$828dcdd425fd3231(aligner) {
8030
7947
 
8031
7948
 
8032
7949
  const $2c61e4cd8229c49a$var$_tmpl$ = /*@__PURE__*/ (0, /*@__PURE__*/$iBTHO$solidjsweb.template)(`<div class="depict plp search"></div>`, 2);
8033
- /**
8034
- * 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.
7950
+ /**
7951
+ * 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.
8035
7952
  */ const $2c61e4cd8229c49a$var$privately_shared_properties = /*@__PURE__*/ new WeakMap();
8036
7953
  const $2c61e4cd8229c49a$var$min_products_to_fetch_ = 20;
8037
7954
  const $2c61e4cd8229c49a$export$bde3eb976dfded9 = (depict_search)=>$2c61e4cd8229c49a$var$privately_shared_properties.get(depict_search)?.search_query_updating_blocked_;
@@ -8428,8 +8345,8 @@ const $9c143d25df1fc2a2$export$d86a33413558014e = (openModalParams)=>{
8428
8345
  }
8429
8346
  const { cleanup: cleanup } = (0, $d8e94ea381ab57fa$export$828dcdd425fd3231)(openModalParams.element);
8430
8347
  let dispose_aligner;
8431
- /**
8432
- * Setting position to fixed is important to make the modal work with align_field.
8348
+ /**
8349
+ * Setting position to fixed is important to make the modal work with align_field.
8433
8350
  */ const style_props_ = (0, $iBTHO$solidjs.createSignal)({
8434
8351
  position: "fixed"
8435
8352
  });
@@ -8509,9 +8426,6 @@ function $08e7f10b1831645f$export$689e204eadb33baf(pr) {
8509
8426
 
8510
8427
 
8511
8428
 
8512
-
8513
-
8514
-
8515
8429
  class $0a6acf31d1eae57c$export$3ccaa27d81dd8556 extends EventTarget {
8516
8430
  #stop_listening;
8517
8431
  #disconnect_observer;
@@ -8528,8 +8442,8 @@ class $0a6acf31d1eae57c$export$3ccaa27d81dd8556 extends EventTarget {
8528
8442
  })();
8529
8443
  return new Set();
8530
8444
  })();
8531
- /**
8532
- * Returns if the "replacement page" is currently open
8445
+ /**
8446
+ * Returns if the "replacement page" is currently open
8533
8447
  */ get open_() {
8534
8448
  // make this "readonly" from the outside, the only way to open is by making the url change so that is_page_ returns true
8535
8449
  return this.#is_open;
@@ -8614,26 +8528,26 @@ class $0a6acf31d1eae57c$export$3ccaa27d81dd8556 extends EventTarget {
8614
8528
  if (what_happened !== "popstate") return;
8615
8529
  const cleaned_current_url = $0a6acf31d1eae57c$var$clean_url(location.href);
8616
8530
  if (!$0a6acf31d1eae57c$export$3ccaa27d81dd8556.#visited_urls.has(cleaned_current_url)) {
8617
- /*
8618
- What does this check do? Well, there's a bug without it where people end up on a page that they shouldn't see (i.e. a somewhat blank page).
8619
- The culprit of that bug is: the browser remembers where to make "hard"-navigations (i.e. a full document rebuild with a new `document` and `window` object) when going back and forwards in the history and where to just change the url. What it doesn't always correctly remember (observed in at least chrome and firefox), is *what document to hard-navigate to*. Therefore, we have to jump in and take care of that.
8620
- The reproduction is this:
8621
- Spendrups has set up a search page for us under /start/search. We don't want to hard-reload the page though to get there.
8622
- 1. Go to a product page like https://ehandel.spendrups.se/Product/1104201
8623
- 2. Make a search
8624
- We use PageReplacer to just replace the current page (and the url in the address bar) with the search page. The thing is though, that when going back now the URL just updates but the browser doesn't actually navigate - that's fine, PageReplacer will just restore the old page contents
8625
- 3. Try going back just for fun
8626
- Everything works as expected
8627
- 4. Go forwards again (just for fun, skip this if you skipped 3)
8628
- Now the trouble comes when we introduce "hard" navigation.
8629
- 5. Click on a search result. The browser will now "hard" navigate to a new page.
8630
- 6. Click "back"
8631
- What happens now, is that the browser hard-navigates to /start/search.
8632
- 7. Click "back" again
8633
- What happens now, is that the browser "soft-navigates" (just changes the URL) to https://ehandel.spendrups.se/Product/1104201
8634
- PageReplacer unload itself and reveals the original document - it is expected to be the one under https://ehandel.spendrups.se/Product/1104201, but actually it is the one under /start/search - a white page.
8635
- The fix: is to remember all pages that we have visited since the creation of `window` (we do that by having a static property on PageReplacer since we assume the PageReplacer source code will only exist once on the page and will be loaded at page load, the latter assumption might be wrong, but I hope not). If we get a "popstate" event (meaning back or forwards button, not new page being pushed) to an unknown page we reload.
8636
- */ (0, $iBTHO$depictaiutilishared.dlog)("PageReplacer: ", cleaned_current_url, " hasn't been visited since document was created, reloading since we won't be able to show this page otherwise");
8531
+ /*
8532
+ What does this check do? Well, there's a bug without it where people end up on a page that they shouldn't see (i.e. a somewhat blank page).
8533
+ The culprit of that bug is: the browser remembers where to make "hard"-navigations (i.e. a full document rebuild with a new `document` and `window` object) when going back and forwards in the history and where to just change the url. What it doesn't always correctly remember (observed in at least chrome and firefox), is *what document to hard-navigate to*. Therefore, we have to jump in and take care of that.
8534
+ The reproduction is this:
8535
+ Spendrups has set up a search page for us under /start/search. We don't want to hard-reload the page though to get there.
8536
+ 1. Go to a product page like https://ehandel.spendrups.se/Product/1104201
8537
+ 2. Make a search
8538
+ We use PageReplacer to just replace the current page (and the url in the address bar) with the search page. The thing is though, that when going back now the URL just updates but the browser doesn't actually navigate - that's fine, PageReplacer will just restore the old page contents
8539
+ 3. Try going back just for fun
8540
+ Everything works as expected
8541
+ 4. Go forwards again (just for fun, skip this if you skipped 3)
8542
+ Now the trouble comes when we introduce "hard" navigation.
8543
+ 5. Click on a search result. The browser will now "hard" navigate to a new page.
8544
+ 6. Click "back"
8545
+ What happens now, is that the browser hard-navigates to /start/search.
8546
+ 7. Click "back" again
8547
+ What happens now, is that the browser "soft-navigates" (just changes the URL) to https://ehandel.spendrups.se/Product/1104201
8548
+ PageReplacer unload itself and reveals the original document - it is expected to be the one under https://ehandel.spendrups.se/Product/1104201, but actually it is the one under /start/search - a white page.
8549
+ The fix: is to remember all pages that we have visited since the creation of `window` (we do that by having a static property on PageReplacer since we assume the PageReplacer source code will only exist once on the page and will be loaded at page load, the latter assumption might be wrong, but I hope not). If we get a "popstate" event (meaning back or forwards button, not new page being pushed) to an unknown page we reload.
8550
+ */ (0, $iBTHO$depictaiutilishared.dlog)("PageReplacer: ", cleaned_current_url, " hasn't been visited since document was created, reloading since we won't be able to show this page otherwise");
8637
8551
  location.reload();
8638
8552
  $0a6acf31d1eae57c$export$3ccaa27d81dd8556.#reverting_permitted = false; // Disallow any reverting since we can't - it would flash a white page until the reload has finished.
8639
8553
  this.#unload(); // Call unload to "kill" the solid-js stuff quicker so that it stops updating - the user is expecting the next thing that happens to be a navigation to the actual page the URL says they're on.
@@ -8642,8 +8556,8 @@ class $0a6acf31d1eae57c$export$3ccaa27d81dd8556 extends EventTarget {
8642
8556
  (0, $iBTHO$depictaiutilishared.instant_exec_on_suspect_history_change).add(on_maybe_popstate);
8643
8557
  this.#revert_fns.push(()=>(0, $iBTHO$depictaiutilishared.instant_exec_on_suspect_history_change).delete(on_maybe_popstate)); // Don't run the bugfixer if there isn't a PageReplacer page open since I assume the bug only happens when going back from a PageReplace'd page
8644
8558
  }
8645
- /**
8646
- * Stops listening to URL changes and closes the page (if it is currently open)
8559
+ /**
8560
+ * Stops listening to URL changes and closes the page (if it is currently open)
8647
8561
  */ destroy_() {
8648
8562
  this.#unload();
8649
8563
  this.#stop_listening?.();
@@ -8658,8 +8572,8 @@ class $0a6acf31d1eae57c$export$3ccaa27d81dd8556 extends EventTarget {
8658
8572
  if (!is_spa_) (0, $08e7f10b1831645f$export$689e204eadb33baf)(this); // Make so that clicking on links to the previous page work instantly
8659
8573
  }
8660
8574
  }
8661
- /**
8662
- * Remove hash from URL
8575
+ /**
8576
+ * Remove hash from URL
8663
8577
  */ function $0a6acf31d1eae57c$var$clean_url(url) {
8664
8578
  // Would want to have this a static private function on PageReplacer, but that's not supported in MobileSafari yet
8665
8579
  // remove hash, all other params *could* trigger a re-request