@depict-ai/ui 4.7.29 → 4.7.31
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/ES10/index.cjs +630 -547
- package/ES10/index.d.ts +105 -81
- package/ES10/index.js +665 -583
- package/latest/index.cjs +580 -499
- package/latest/index.d.ts +105 -81
- package/latest/index.js +616 -536
- package/package.json +1 -1
- package/server/ES10/index.cjs +288 -261
- package/server/ES10/index.d.ts +105 -81
- package/server/ES10/index.js +329 -303
- package/server/latest/index.cjs +263 -238
- package/server/latest/index.d.ts +105 -81
- package/server/latest/index.js +305 -281
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@depict-ai/ui",
|
|
3
|
-
"version": "4.7.
|
|
3
|
+
"version": "4.7.31",
|
|
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",
|
package/server/ES10/index.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
var $3hooq$depictaiutilishared = require("@depict-ai/utilishared/ES10");
|
|
2
|
-
var $3hooq$depictaiutilisharedlatest = require("@depict-ai/utilishared/ES10");
|
|
3
|
-
var $3hooq$solidjs = require("solid-js");
|
|
4
2
|
var $3hooq$solidjsweb = require("solid-js/web");
|
|
3
|
+
var $3hooq$solidjs = require("solid-js");
|
|
4
|
+
var $3hooq$solidjsstore = require("solid-js/store");
|
|
5
|
+
var $3hooq$depictaiutilisharedlatest = require("@depict-ai/utilishared/ES10");
|
|
5
6
|
var $3hooq$babelruntimehelpersdefineProperty = require("@babel/runtime/helpers/defineProperty");
|
|
6
7
|
var $3hooq$babelruntimehelpersclassPrivateFieldSet = require("@babel/runtime/helpers/classPrivateFieldSet");
|
|
7
8
|
var $3hooq$babelruntimehelpersclassPrivateFieldGet = require("@babel/runtime/helpers/classPrivateFieldGet");
|
|
8
|
-
var $3hooq$solidjsstore = require("solid-js/store");
|
|
9
9
|
require("../../multi_import_deduplicator.cjs").register_es_version("ui", "ES10");
|
|
10
10
|
function $parcel$export(e, n, v, s) {
|
|
11
11
|
Object.defineProperty(e, n, {
|
|
@@ -18,6 +18,7 @@ function $parcel$export(e, n, v, s) {
|
|
|
18
18
|
function $parcel$interopDefault(a) {
|
|
19
19
|
return a && a.__esModule ? a.default : a;
|
|
20
20
|
}
|
|
21
|
+
$parcel$export(module.exports, "remap_blocks_to_index", () => $f8f375d6245ffff2$export$92aa5d691d588f3f);
|
|
21
22
|
$parcel$export(module.exports, "useMobileHover", () => $0deb6ff75e3d67c6$export$d4d96868197be50e);
|
|
22
23
|
$parcel$export(module.exports, "useVisibilityState", () => $e7a7d2fe8a8217d8$export$54299a3c81f5425);
|
|
23
24
|
$parcel$export(module.exports, "useSlidableInformation", () => $ad8ec7729fffeb9c$export$eaa625fb39439e37);
|
|
@@ -110,7 +111,253 @@ $parcel$export(module.exports, "BreadCrumbs", () => $335c02c1241a9ca8$export$5b7
|
|
|
110
111
|
$parcel$export(module.exports, "QuickLinks", () => $335c02c1241a9ca8$export$de035477d6fef996);
|
|
111
112
|
$parcel$export(module.exports, "CategoryPage", () => $c10e33c4681f8c9b$export$e2bf8ce7779e827e);
|
|
112
113
|
/*! Depict.ai search and product listing SDK */
|
|
113
|
-
const $aa1938dec50d6c12$export$83d89fbfd8236492 = "4.7.
|
|
114
|
+
const $aa1938dec50d6c12$export$83d89fbfd8236492 = "4.7.31";
|
|
115
|
+
function $3e17e871e9d0911d$export$d9f36cf74e24d595(media_query) {
|
|
116
|
+
const signal = $3hooq$solidjs.createSignal(false);
|
|
117
|
+
$3hooq$solidjs.onCleanup($3hooq$depictaiutilishared.javascript_media_query(media_query, _ref => {
|
|
118
|
+
let {
|
|
119
|
+
matches: matches
|
|
120
|
+
} = _ref;
|
|
121
|
+
return signal[1](matches);
|
|
122
|
+
}).remove);
|
|
123
|
+
return signal[0];
|
|
124
|
+
}
|
|
125
|
+
function $478e5a09664da64c$export$a79e666719b3647c(cols_at_size_) {
|
|
126
|
+
const size_active = $3hooq$solidjs.createMemo(() => cols_at_size_().map(_ref => {
|
|
127
|
+
let [n_cols, min_width, max_width] = _ref;
|
|
128
|
+
const media_query = $3hooq$depictaiutilishared.layout_media_query_header(min_width, max_width).replaceAll("@media", "");
|
|
129
|
+
const matches = $3e17e871e9d0911d$export$d9f36cf74e24d595(media_query);
|
|
130
|
+
return [matches, n_cols];
|
|
131
|
+
}));
|
|
132
|
+
const n_cols_currently_showing = $3hooq$solidjs.createMemo(() => {
|
|
133
|
+
try {
|
|
134
|
+
const [, n_cols_currently_showing] = size_active().find(_ref2 => {
|
|
135
|
+
let [media_query] = _ref2;
|
|
136
|
+
return media_query();
|
|
137
|
+
});
|
|
138
|
+
return n_cols_currently_showing;
|
|
139
|
+
} catch (e) {
|
|
140
|
+
$3hooq$depictaiutilishared.dwarn("No active size found in columnsAtSize - can't render content blocks or looks");
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
return n_cols_currently_showing;
|
|
145
|
+
}
|
|
146
|
+
var $e3d733f899558f40$var$_tmpl$ = ["<span", ' class="', '" style="', '"></span>'];
|
|
147
|
+
function $e3d733f899558f40$export$acb3eaade4b23afd(props) {
|
|
148
|
+
// Work around https://github.com/solidjs/solid/issues/1980
|
|
149
|
+
return $3hooq$solidjsweb.ssr($e3d733f899558f40$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "".concat($3hooq$solidjsweb.escape(props.class, true) || "", " depict-placeholder"), $3hooq$solidjsweb.ssrStyle(props.style));
|
|
150
|
+
}
|
|
151
|
+
function $b8a8d61b3ec5f5ac$export$3f37af283f8fb843(props) {
|
|
152
|
+
const style = $3hooq$solidjs.createMemo(() => {
|
|
153
|
+
const {
|
|
154
|
+
style: style,
|
|
155
|
+
height: height,
|
|
156
|
+
width: width,
|
|
157
|
+
aspectRatio: aspectRatio
|
|
158
|
+
} = props;
|
|
159
|
+
const is_image = aspectRatio != undefined;
|
|
160
|
+
const size_data = is_image ? {
|
|
161
|
+
width: "100%",
|
|
162
|
+
"padding-bottom": "calc(calc(1 / ".concat(aspectRatio, ") * 100%)")
|
|
163
|
+
} : {
|
|
164
|
+
width: width,
|
|
165
|
+
height: height
|
|
166
|
+
};
|
|
167
|
+
return {
|
|
168
|
+
display: "block",
|
|
169
|
+
...(style || {}),
|
|
170
|
+
...size_data
|
|
171
|
+
};
|
|
172
|
+
});
|
|
173
|
+
return $3hooq$solidjsweb.createComponent((0, $e3d733f899558f40$export$acb3eaade4b23afd), {
|
|
174
|
+
get style() {
|
|
175
|
+
return style();
|
|
176
|
+
},
|
|
177
|
+
get ["class"]() {
|
|
178
|
+
return props.class;
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
var $f8f375d6245ffff2$var$_tmpl$ = ["<div", ' class="content-block-wrapper" style="', '">', "</div>"];
|
|
183
|
+
function $f8f375d6245ffff2$export$791ef57e62e21c3f(_ref) {
|
|
184
|
+
let {
|
|
185
|
+
content_blocks_: incoming_content_blocks,
|
|
186
|
+
cols_at_size_: cols_at_size_,
|
|
187
|
+
set_top_row_shortened_by_: set_top_row_shortened_by_
|
|
188
|
+
} = _ref;
|
|
189
|
+
// these are by row
|
|
190
|
+
const [content_blocks, set_content_blocks] = $3hooq$solidjsstore.createStore([]);
|
|
191
|
+
const n_cols_currently_showing_ = $478e5a09664da64c$export$a79e666719b3647c(cols_at_size_);
|
|
192
|
+
$3hooq$solidjs.createEffect(() => {
|
|
193
|
+
const incoming_value = incoming_content_blocks();
|
|
194
|
+
if (!incoming_value) {
|
|
195
|
+
set_content_blocks([]);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
set_content_blocks($3hooq$solidjsstore.reconcile(incoming_value, {
|
|
199
|
+
key: "content"
|
|
200
|
+
})); // key: Make moving blocks faster, see https://github.com/solidjs/solid/issues/1925#issuecomment-1769671596
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
const get_wrapped_blocks_ = $f8f375d6245ffff2$var$wrap_blocks_in_div(content_blocks, n_cols_currently_showing_);
|
|
204
|
+
$3hooq$solidjs.createComputed(() => {
|
|
205
|
+
// Update our styling if a content block forces some items that should be in the top row into a lower one, so we can generate margin-top declarations for them
|
|
206
|
+
const top_row_block = get_wrapped_blocks_()[0];
|
|
207
|
+
const blocks_in_top_row_taken = top_row_block === null || top_row_block === void 0 ? void 0 : top_row_block.span_columns;
|
|
208
|
+
if (blocks_in_top_row_taken == undefined) {
|
|
209
|
+
// Fall back to zero if no content block in top row, since then no blocks in top row are taken
|
|
210
|
+
set_top_row_shortened_by_(0);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
set_top_row_shortened_by_(blocks_in_top_row_taken - 1); // minus one because the content block wrapper also is an element
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
return $3hooq$solidjs.createMemo(() => $f8f375d6245ffff2$export$92aa5d691d588f3f({
|
|
217
|
+
wrapped_blocks_: get_wrapped_blocks_(),
|
|
218
|
+
n_cols_currently_showing_: n_cols_currently_showing_()
|
|
219
|
+
}).content_blocks_by_index_);
|
|
220
|
+
}
|
|
221
|
+
function $f8f375d6245ffff2$export$92aa5d691d588f3f(_ref2) {
|
|
222
|
+
let {
|
|
223
|
+
wrapped_blocks_: wrapped_blocks_,
|
|
224
|
+
n_cols_currently_showing_: n_cols_currently_showing_
|
|
225
|
+
} = _ref2;
|
|
226
|
+
// This computation should be quite cheap since it just moves around things into an array
|
|
227
|
+
const content_blocks_by_index_ = [];
|
|
228
|
+
const constructed_block_arrays = new WeakSet();
|
|
229
|
+
// Need to keep track of products displaced by blocks above when mapping rows to indexes in the actual grid
|
|
230
|
+
const displaced_products_ = []; // undefined = is product, true = is content block if number instead of tuple number indicates content blocks in that row. Index in first array is row, index in second array is column
|
|
231
|
+
if (!n_cols_currently_showing_)
|
|
232
|
+
// Nope out of here if we don't know how many columns are showing
|
|
233
|
+
return {
|
|
234
|
+
content_blocks_by_index_: content_blocks_by_index_
|
|
235
|
+
};
|
|
236
|
+
for (let i = 0; i < wrapped_blocks_.length; i++) {
|
|
237
|
+
// i = row to show at
|
|
238
|
+
const block = wrapped_blocks_[i];
|
|
239
|
+
if (!block) continue; // Array can have holes/not defined places
|
|
240
|
+
const index_of_first_item_in_row = i * n_cols_currently_showing_;
|
|
241
|
+
const index_of_last_item_in_row = index_of_first_item_in_row + n_cols_currently_showing_;
|
|
242
|
+
const {
|
|
243
|
+
span_rows: span_rows,
|
|
244
|
+
position: position,
|
|
245
|
+
span_columns: span_columns
|
|
246
|
+
} = block; // span columns is already capped in the block wrapping step (wrap_blocks_in_div)
|
|
247
|
+
let target_index;
|
|
248
|
+
if (position === "left") target_index = index_of_first_item_in_row;else if (position === "right") target_index = index_of_last_item_in_row - span_columns;else if (position === "center") target_index = index_of_first_item_in_row + Math.floor((n_cols_currently_showing_ - span_columns) / 2);else throw new Error("Invalid position for content block - must be left, right or center: " + JSON.stringify(position));
|
|
249
|
+
// Calculate displacement of us by content blocks above us
|
|
250
|
+
let displacement_by_added_blocks = 0;
|
|
251
|
+
for (let j = 0; j < i; j++) {
|
|
252
|
+
const row = displaced_products_[j];
|
|
253
|
+
if (row === undefined) continue; // there were no blocks in this row
|
|
254
|
+
let displaced_items_in_row;
|
|
255
|
+
if (typeof row === "number") displaced_items_in_row = row;else {
|
|
256
|
+
displaced_items_in_row = row.filter(item => item).length;
|
|
257
|
+
displaced_products_[j] = displaced_items_in_row;
|
|
258
|
+
}
|
|
259
|
+
displacement_by_added_blocks += displaced_items_in_row;
|
|
260
|
+
}
|
|
261
|
+
const index_of_us_in_row = target_index - index_of_first_item_in_row;
|
|
262
|
+
for (let j = 0; j < index_of_us_in_row; j++) {
|
|
263
|
+
var _displaced_products_$;
|
|
264
|
+
if ((_displaced_products_$ = displaced_products_[i]) !== null && _displaced_products_$ !== void 0 && _displaced_products_$[j])
|
|
265
|
+
// Add blocks in our *current* row to the displacement, but only the ones to our left
|
|
266
|
+
displacement_by_added_blocks++;
|
|
267
|
+
}
|
|
268
|
+
// Add block to output array at the correct index
|
|
269
|
+
const final_target_index = target_index - displacement_by_added_blocks;
|
|
270
|
+
const existing_block = content_blocks_by_index_[final_target_index];
|
|
271
|
+
const block_content = block.content;
|
|
272
|
+
// If two blocks want to exist at the same location (can happen, for example if one block wants to be at the end of a row and the other one at the start of the next row) add an array with both
|
|
273
|
+
if (existing_block) {
|
|
274
|
+
if (constructed_block_arrays.has(existing_block))
|
|
275
|
+
// Only push to arrays we have created to not create funky bugs when there's an array in JSX.Element
|
|
276
|
+
existing_block.push(block_content);else {
|
|
277
|
+
const array = [existing_block, block_content];
|
|
278
|
+
constructed_block_arrays.add(array);
|
|
279
|
+
content_blocks_by_index_[final_target_index] = array;
|
|
280
|
+
}
|
|
281
|
+
} else content_blocks_by_index_[final_target_index] = block_content;
|
|
282
|
+
// Update displacement
|
|
283
|
+
for (let j = 0; j < span_rows; j++) {
|
|
284
|
+
var _ref3;
|
|
285
|
+
const row = displaced_products_[_ref3 = i + j] || (displaced_products_[_ref3] = []);
|
|
286
|
+
for (let k = index_of_us_in_row; k < index_of_us_in_row + span_columns; k++) row[k] = true;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return {
|
|
290
|
+
content_blocks_by_index_: content_blocks_by_index_,
|
|
291
|
+
displaced_products_: displaced_products_
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Takes a store that contains an array from where index is number of row and value is the result of executing the content block rendering function.
|
|
296
|
+
* Then renders the content and wraps it into a div with the correct styling.
|
|
297
|
+
* Also caps span_columns to max available columns
|
|
298
|
+
*/
|
|
299
|
+
function $f8f375d6245ffff2$var$wrap_blocks_in_div(rendered_content_blocks, max_span_columns) {
|
|
300
|
+
const get_wrapped_blocks = $3hooq$solidjs.mapArray(() => rendered_content_blocks, block => {
|
|
301
|
+
if (!block) return;
|
|
302
|
+
const final_span_columns = $3hooq$solidjs.createMemo(() => {
|
|
303
|
+
var _max_span_columns;
|
|
304
|
+
return Math.min(block.span_columns, (_max_span_columns = max_span_columns()) !== null && _max_span_columns !== void 0 ? _max_span_columns : Infinity);
|
|
305
|
+
});
|
|
306
|
+
// If the item spans an entire row, limit the height to 1 row since there's no concept of "rows" if there are no products beside the block
|
|
307
|
+
const final_span_rows = $3hooq$solidjs.createMemo(() => final_span_columns() === max_span_columns() ? 1 : block.span_rows);
|
|
308
|
+
const [rendering_delayed, set_rendering_delayed_] = $3hooq$solidjs.createSignal(true);
|
|
309
|
+
const content = $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
|
|
310
|
+
get when() {
|
|
311
|
+
return !rendering_delayed();
|
|
312
|
+
},
|
|
313
|
+
get children() {
|
|
314
|
+
return $3hooq$solidjsweb.ssr($f8f375d6245ffff2$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "grid-column:" + "span ".concat($3hooq$solidjsweb.escape(final_span_columns(), true)) + (";grid-row:" + "span ".concat($3hooq$solidjsweb.escape(final_span_rows(), true))) + (";spans_columns_variable_name:" + $3hooq$solidjsweb.escape(final_span_columns(), true)), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent($f8f375d6245ffff2$var$RenderContent, {
|
|
315
|
+
get content() {
|
|
316
|
+
return block.content;
|
|
317
|
+
}
|
|
318
|
+
})));
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
return $3hooq$solidjs.mergeProps(block, {
|
|
322
|
+
// Create content divs for the blocks with as much fine-grained diffing as possible?
|
|
323
|
+
content: () => {
|
|
324
|
+
// Sneaky on-demand rendering, so we don't render more blocks than we can show: we have the rendered value here and don't return a function that renders because if our block would be moved around we'd be guaranteed to re-render
|
|
325
|
+
// However, no need to count products to know if we should render: the <For> loops in Placeholders and render_displays will only call this function if there's actually a product here that wants to display this block
|
|
326
|
+
set_rendering_delayed_(false);
|
|
327
|
+
return content;
|
|
328
|
+
},
|
|
329
|
+
get span_columns() {
|
|
330
|
+
// Cap max width of block to the number of columns available, for everyone downstream
|
|
331
|
+
return final_span_columns();
|
|
332
|
+
},
|
|
333
|
+
get span_rows() {
|
|
334
|
+
return final_span_rows();
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
return get_wrapped_blocks;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Basically adds support for async content block functions and shows a rudimentary placeholder if rendering is delayed. Required due to react having a rendering delay.
|
|
342
|
+
*/
|
|
343
|
+
function $f8f375d6245ffff2$var$RenderContent(props) {
|
|
344
|
+
const [resource] = $3hooq$solidjs.createResource(() => props.content,
|
|
345
|
+
// Could be reactive
|
|
346
|
+
fn => fn());
|
|
347
|
+
$3hooq$solidjs.createEffect(() => {
|
|
348
|
+
if (resource.error) console.error("Error in content block rendering", resource.error);
|
|
349
|
+
});
|
|
350
|
+
// The suspense is for when there's an async content block (which we have to support due to react having a rendering delay) so that we can show some height while it's loading (should kinda never be visible)
|
|
351
|
+
return $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Suspense), {
|
|
352
|
+
get fallback() {
|
|
353
|
+
return $3hooq$solidjsweb.createComponent((0, $b8a8d61b3ec5f5ac$export$3f37af283f8fb843), {
|
|
354
|
+
width: "100%",
|
|
355
|
+
height: "max(100%, 400px)"
|
|
356
|
+
});
|
|
357
|
+
},
|
|
358
|
+
children: resource
|
|
359
|
+
});
|
|
360
|
+
}
|
|
114
361
|
let $0deb6ff75e3d67c6$var$elementsHoveredSignal;
|
|
115
362
|
let $0deb6ff75e3d67c6$var$consumersSignal;
|
|
116
363
|
function $0deb6ff75e3d67c6$export$d4d96868197be50e() {
|
|
@@ -1048,52 +1295,6 @@ function $d067f3a30f047b41$export$e68cff63f76bd15b(props) {
|
|
|
1048
1295
|
function $d067f3a30f047b41$export$8d0c4fdbb05a2f2e() {
|
|
1049
1296
|
return $3hooq$solidjs.useContext($d067f3a30f047b41$var$ListingContext);
|
|
1050
1297
|
}
|
|
1051
|
-
var $e3d733f899558f40$var$_tmpl$ = ["<span", ' class="', '" style="', '"></span>'];
|
|
1052
|
-
function $e3d733f899558f40$export$acb3eaade4b23afd(props) {
|
|
1053
|
-
// Work around https://github.com/solidjs/solid/issues/1980
|
|
1054
|
-
return $3hooq$solidjsweb.ssr($e3d733f899558f40$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "".concat($3hooq$solidjsweb.escape(props.class, true) || "", " depict-placeholder"), $3hooq$solidjsweb.ssrStyle(props.style));
|
|
1055
|
-
}
|
|
1056
|
-
function $b8a8d61b3ec5f5ac$export$3f37af283f8fb843(props) {
|
|
1057
|
-
const style = $3hooq$solidjs.createMemo(() => {
|
|
1058
|
-
const {
|
|
1059
|
-
style: style,
|
|
1060
|
-
height: height,
|
|
1061
|
-
width: width,
|
|
1062
|
-
aspectRatio: aspectRatio
|
|
1063
|
-
} = props;
|
|
1064
|
-
const is_image = aspectRatio != undefined;
|
|
1065
|
-
const size_data = is_image ? {
|
|
1066
|
-
width: "100%",
|
|
1067
|
-
"padding-bottom": "calc(calc(1 / ".concat(aspectRatio, ") * 100%)")
|
|
1068
|
-
} : {
|
|
1069
|
-
width: width,
|
|
1070
|
-
height: height
|
|
1071
|
-
};
|
|
1072
|
-
return {
|
|
1073
|
-
display: "block",
|
|
1074
|
-
...(style || {}),
|
|
1075
|
-
...size_data
|
|
1076
|
-
};
|
|
1077
|
-
});
|
|
1078
|
-
return $3hooq$solidjsweb.createComponent((0, $e3d733f899558f40$export$acb3eaade4b23afd), {
|
|
1079
|
-
get style() {
|
|
1080
|
-
return style();
|
|
1081
|
-
},
|
|
1082
|
-
get ["class"]() {
|
|
1083
|
-
return props.class;
|
|
1084
|
-
}
|
|
1085
|
-
});
|
|
1086
|
-
}
|
|
1087
|
-
function $3e17e871e9d0911d$export$d9f36cf74e24d595(media_query) {
|
|
1088
|
-
const signal = $3hooq$solidjs.createSignal(false);
|
|
1089
|
-
$3hooq$solidjs.onCleanup($3hooq$depictaiutilishared.javascript_media_query(media_query, _ref => {
|
|
1090
|
-
let {
|
|
1091
|
-
matches: matches
|
|
1092
|
-
} = _ref;
|
|
1093
|
-
return signal[1](matches);
|
|
1094
|
-
}).remove);
|
|
1095
|
-
return signal[0];
|
|
1096
|
-
}
|
|
1097
1298
|
function $a7f7d416e6f61504$export$89c6019e4baa40b1(props) {
|
|
1098
1299
|
const style = $3hooq$solidjs.createMemo(() => {
|
|
1099
1300
|
const {
|
|
@@ -8289,7 +8490,8 @@ class $e270e9f953fcbc58$export$e015ed2f2950f2e3 {
|
|
|
8289
8490
|
breadcrumbs: [],
|
|
8290
8491
|
quick_links: [],
|
|
8291
8492
|
image_urls: [],
|
|
8292
|
-
failed: true
|
|
8493
|
+
failed: true,
|
|
8494
|
+
content_blocks: []
|
|
8293
8495
|
}),
|
|
8294
8496
|
method_: "GET"
|
|
8295
8497
|
});
|
|
@@ -9836,209 +10038,6 @@ function $c749e60bca5000cb$export$cb5808ba002cdeed(_ref) {
|
|
|
9836
10038
|
}) : when_filters_closed_cols;
|
|
9837
10039
|
});
|
|
9838
10040
|
}
|
|
9839
|
-
function $478e5a09664da64c$export$a79e666719b3647c(cols_at_size_) {
|
|
9840
|
-
const size_active = $3hooq$solidjs.createMemo(() => cols_at_size_().map(_ref => {
|
|
9841
|
-
let [n_cols, min_width, max_width] = _ref;
|
|
9842
|
-
const media_query = $3hooq$depictaiutilishared.layout_media_query_header(min_width, max_width).replaceAll("@media", "");
|
|
9843
|
-
const matches = $3e17e871e9d0911d$export$d9f36cf74e24d595(media_query);
|
|
9844
|
-
return [matches, n_cols];
|
|
9845
|
-
}));
|
|
9846
|
-
const n_cols_currently_showing = $3hooq$solidjs.createMemo(() => {
|
|
9847
|
-
try {
|
|
9848
|
-
const [, n_cols_currently_showing] = size_active().find(_ref2 => {
|
|
9849
|
-
let [media_query] = _ref2;
|
|
9850
|
-
return media_query();
|
|
9851
|
-
});
|
|
9852
|
-
return n_cols_currently_showing;
|
|
9853
|
-
} catch (e) {
|
|
9854
|
-
$3hooq$depictaiutilishared.dwarn("No active size found in columnsAtSize - can't render content blocks or looks");
|
|
9855
|
-
return null;
|
|
9856
|
-
}
|
|
9857
|
-
});
|
|
9858
|
-
return n_cols_currently_showing;
|
|
9859
|
-
}
|
|
9860
|
-
var $f8f375d6245ffff2$var$_tmpl$ = ["<div", ' class="content-block-wrapper" style="', '">', "</div>"];
|
|
9861
|
-
function $f8f375d6245ffff2$export$791ef57e62e21c3f(_ref) {
|
|
9862
|
-
let {
|
|
9863
|
-
content_blocks_: incoming_content_blocks,
|
|
9864
|
-
cols_at_size_: cols_at_size_,
|
|
9865
|
-
set_top_row_shortened_by_: set_top_row_shortened_by_
|
|
9866
|
-
} = _ref;
|
|
9867
|
-
// these are by row
|
|
9868
|
-
const [content_blocks, set_content_blocks] = $3hooq$solidjsstore.createStore([]);
|
|
9869
|
-
const n_cols_currently_showing_ = $478e5a09664da64c$export$a79e666719b3647c(cols_at_size_);
|
|
9870
|
-
$3hooq$solidjs.createEffect(() => {
|
|
9871
|
-
const incoming_value = incoming_content_blocks();
|
|
9872
|
-
if (!incoming_value) {
|
|
9873
|
-
set_content_blocks([]);
|
|
9874
|
-
return;
|
|
9875
|
-
}
|
|
9876
|
-
set_content_blocks($3hooq$solidjsstore.reconcile(incoming_value, {
|
|
9877
|
-
key: "content"
|
|
9878
|
-
})); // key: Make moving blocks faster, see https://github.com/solidjs/solid/issues/1925#issuecomment-1769671596
|
|
9879
|
-
});
|
|
9880
|
-
|
|
9881
|
-
const get_wrapped_blocks_ = $f8f375d6245ffff2$var$wrap_blocks_in_div(content_blocks, n_cols_currently_showing_);
|
|
9882
|
-
$3hooq$solidjs.createComputed(() => {
|
|
9883
|
-
// Update our styling if a content block forces some items that should be in the top row into a lower one, so we can generate margin-top declarations for them
|
|
9884
|
-
const top_row_block = get_wrapped_blocks_()[0];
|
|
9885
|
-
const blocks_in_top_row_taken = top_row_block === null || top_row_block === void 0 ? void 0 : top_row_block.span_columns;
|
|
9886
|
-
if (blocks_in_top_row_taken == undefined) {
|
|
9887
|
-
// Fall back to zero if no content block in top row, since then no blocks in top row are taken
|
|
9888
|
-
set_top_row_shortened_by_(0);
|
|
9889
|
-
return;
|
|
9890
|
-
}
|
|
9891
|
-
set_top_row_shortened_by_(blocks_in_top_row_taken - 1); // minus one because the content block wrapper also is an element
|
|
9892
|
-
});
|
|
9893
|
-
|
|
9894
|
-
return $f8f375d6245ffff2$var$remap_blocks_to_index({
|
|
9895
|
-
get_wrapped_blocks_: get_wrapped_blocks_,
|
|
9896
|
-
n_cols_currently_showing_: n_cols_currently_showing_
|
|
9897
|
-
});
|
|
9898
|
-
}
|
|
9899
|
-
/**
|
|
9900
|
-
* Calculate where to put each of the finished wrapped content blocks. Also limit blocks' max width.
|
|
9901
|
-
* @returns an array where index is index of the blocks in the "displays array" and value is the content block (elements) to show at that index
|
|
9902
|
-
*/
|
|
9903
|
-
function $f8f375d6245ffff2$var$remap_blocks_to_index(_ref2) {
|
|
9904
|
-
let {
|
|
9905
|
-
get_wrapped_blocks_: get_wrapped_blocks_,
|
|
9906
|
-
n_cols_currently_showing_: n_cols_currently_showing_
|
|
9907
|
-
} = _ref2;
|
|
9908
|
-
return $3hooq$solidjs.createMemo(() => {
|
|
9909
|
-
// This computation should be quite cheap since it just moves around things into an array
|
|
9910
|
-
const content_blocks_by_index = [];
|
|
9911
|
-
const constructed_block_arrays = new WeakSet();
|
|
9912
|
-
const wrapped_blocks = get_wrapped_blocks_();
|
|
9913
|
-
const cols_showing = n_cols_currently_showing_();
|
|
9914
|
-
// Need to keep track of products displaced by blocks above when mapping rows to indexes in the actual grid
|
|
9915
|
-
const displaced_products = []; // undefined = is product, true = is content block if number instead of tuple number indicates content blocks in that row. Index in first array is row, index in second array is column
|
|
9916
|
-
if (!cols_showing)
|
|
9917
|
-
// Nope out of here if we don't know how many columns are showing
|
|
9918
|
-
return content_blocks_by_index;
|
|
9919
|
-
for (let i = 0; i < wrapped_blocks.length; i++) {
|
|
9920
|
-
// i = row to show at
|
|
9921
|
-
const block = wrapped_blocks[i];
|
|
9922
|
-
if (!block) continue; // Array can have holes/not defined places
|
|
9923
|
-
const index_of_first_item_in_row = i * cols_showing;
|
|
9924
|
-
const index_of_last_item_in_row = index_of_first_item_in_row + cols_showing;
|
|
9925
|
-
const {
|
|
9926
|
-
span_rows: span_rows,
|
|
9927
|
-
position: position,
|
|
9928
|
-
span_columns: span_columns
|
|
9929
|
-
} = block; // span columns is already capped in the block wrapping step (wrap_blocks_in_div)
|
|
9930
|
-
let target_index;
|
|
9931
|
-
if (position === "left") target_index = index_of_first_item_in_row;else if (position === "right") target_index = index_of_last_item_in_row - span_columns;else if (position === "center") target_index = index_of_first_item_in_row + Math.floor((cols_showing - span_columns) / 2);else throw new Error("Invalid position for content block - must be left, right or center: " + JSON.stringify(position));
|
|
9932
|
-
// Calculate displacement of us by content blocks above us
|
|
9933
|
-
let displacement_by_added_blocks = 0;
|
|
9934
|
-
for (let j = 0; j < i; j++) {
|
|
9935
|
-
const row = displaced_products[j];
|
|
9936
|
-
if (row === undefined) continue; // there were no blocks in this row
|
|
9937
|
-
let displaced_items_in_row;
|
|
9938
|
-
if (typeof row === "number") displaced_items_in_row = row;else {
|
|
9939
|
-
displaced_items_in_row = row.filter(item => item).length;
|
|
9940
|
-
displaced_products[j] = displaced_items_in_row;
|
|
9941
|
-
}
|
|
9942
|
-
displacement_by_added_blocks += displaced_items_in_row;
|
|
9943
|
-
}
|
|
9944
|
-
const index_of_us_in_row = target_index - index_of_first_item_in_row;
|
|
9945
|
-
for (let j = 0; j < index_of_us_in_row; j++) {
|
|
9946
|
-
var _displaced_products$i;
|
|
9947
|
-
if ((_displaced_products$i = displaced_products[i]) !== null && _displaced_products$i !== void 0 && _displaced_products$i[j])
|
|
9948
|
-
// Add blocks in our *current* row to the displacement, but only the ones to our left
|
|
9949
|
-
displacement_by_added_blocks++;
|
|
9950
|
-
}
|
|
9951
|
-
// Add block to output array at the correct index
|
|
9952
|
-
const final_target_index = target_index - displacement_by_added_blocks;
|
|
9953
|
-
const existing_block = content_blocks_by_index[final_target_index];
|
|
9954
|
-
const block_content = block.content;
|
|
9955
|
-
// If two blocks want to exist at the same location (can happen, for example if one block wants to be at the end of a row and the other one at the start of the next row) add an array with both
|
|
9956
|
-
if (existing_block) {
|
|
9957
|
-
if (constructed_block_arrays.has(existing_block))
|
|
9958
|
-
// Only push to arrays we have created to not create funky bugs when there's an array in JSX.Element
|
|
9959
|
-
existing_block.push(block_content);else {
|
|
9960
|
-
const array = [existing_block, block_content];
|
|
9961
|
-
constructed_block_arrays.add(array);
|
|
9962
|
-
content_blocks_by_index[final_target_index] = array;
|
|
9963
|
-
}
|
|
9964
|
-
} else content_blocks_by_index[final_target_index] = block_content;
|
|
9965
|
-
// Update displacement
|
|
9966
|
-
for (let j = 0; j < span_rows; j++) {
|
|
9967
|
-
var _ref3;
|
|
9968
|
-
const row = displaced_products[_ref3 = i + j] || (displaced_products[_ref3] = []);
|
|
9969
|
-
for (let k = index_of_us_in_row; k < index_of_us_in_row + span_columns; k++) row[k] = true;
|
|
9970
|
-
}
|
|
9971
|
-
}
|
|
9972
|
-
return content_blocks_by_index;
|
|
9973
|
-
});
|
|
9974
|
-
}
|
|
9975
|
-
/**
|
|
9976
|
-
* Takes a store that contains an array from where index is number of row and value is the result of executing the content block rendering function.
|
|
9977
|
-
* Then renders the content and wraps it into a div with the correct styling.
|
|
9978
|
-
* Also caps span_columns to max available columns
|
|
9979
|
-
*/
|
|
9980
|
-
function $f8f375d6245ffff2$var$wrap_blocks_in_div(rendered_content_blocks, max_span_columns) {
|
|
9981
|
-
const get_wrapped_blocks = $3hooq$solidjs.mapArray(() => rendered_content_blocks, block => {
|
|
9982
|
-
if (!block) return;
|
|
9983
|
-
const final_span_columns = $3hooq$solidjs.createMemo(() => {
|
|
9984
|
-
var _max_span_columns;
|
|
9985
|
-
return Math.min(block.span_columns, (_max_span_columns = max_span_columns()) !== null && _max_span_columns !== void 0 ? _max_span_columns : Infinity);
|
|
9986
|
-
});
|
|
9987
|
-
// If the item spans an entire row, limit the height to 1 row since there's no concept of "rows" if there are no products beside the block
|
|
9988
|
-
const final_span_rows = $3hooq$solidjs.createMemo(() => final_span_columns() === max_span_columns() ? 1 : block.span_rows);
|
|
9989
|
-
const [rendering_delayed, set_rendering_delayed_] = $3hooq$solidjs.createSignal(true);
|
|
9990
|
-
const content = $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Show), {
|
|
9991
|
-
get when() {
|
|
9992
|
-
return !rendering_delayed();
|
|
9993
|
-
},
|
|
9994
|
-
get children() {
|
|
9995
|
-
return $3hooq$solidjsweb.ssr($f8f375d6245ffff2$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey(), "grid-column:" + "span ".concat($3hooq$solidjsweb.escape(final_span_columns(), true)) + (";grid-row:" + "span ".concat($3hooq$solidjsweb.escape(final_span_rows(), true))) + (";spans_columns_variable_name:" + $3hooq$solidjsweb.escape(final_span_columns(), true)), $3hooq$solidjsweb.escape($3hooq$solidjsweb.createComponent($f8f375d6245ffff2$var$RenderContent, {
|
|
9996
|
-
get content() {
|
|
9997
|
-
return block.content;
|
|
9998
|
-
}
|
|
9999
|
-
})));
|
|
10000
|
-
}
|
|
10001
|
-
});
|
|
10002
|
-
return $3hooq$solidjs.mergeProps(block, {
|
|
10003
|
-
// Create content divs for the blocks with as much fine-grained diffing as possible?
|
|
10004
|
-
content: () => {
|
|
10005
|
-
// Sneaky on-demand rendering, so we don't render more blocks than we can show: we have the rendered value here and don't return a function that renders because if our block would be moved around we'd be guaranteed to re-render
|
|
10006
|
-
// However, no need to count products to know if we should render: the <For> loops in Placeholders and render_displays will only call this function if there's actually a product here that wants to display this block
|
|
10007
|
-
set_rendering_delayed_(false);
|
|
10008
|
-
return content;
|
|
10009
|
-
},
|
|
10010
|
-
get span_columns() {
|
|
10011
|
-
// Cap max width of block to the number of columns available, for everyone downstream
|
|
10012
|
-
return final_span_columns();
|
|
10013
|
-
},
|
|
10014
|
-
get span_rows() {
|
|
10015
|
-
return final_span_rows();
|
|
10016
|
-
}
|
|
10017
|
-
});
|
|
10018
|
-
});
|
|
10019
|
-
return get_wrapped_blocks;
|
|
10020
|
-
}
|
|
10021
|
-
/**
|
|
10022
|
-
* Basically adds support for async content block functions and shows a rudimentary placeholder if rendering is delayed. Required due to react having a rendering delay.
|
|
10023
|
-
*/
|
|
10024
|
-
function $f8f375d6245ffff2$var$RenderContent(props) {
|
|
10025
|
-
const [resource] = $3hooq$solidjs.createResource(() => props.content,
|
|
10026
|
-
// Could be reactive
|
|
10027
|
-
fn => fn());
|
|
10028
|
-
$3hooq$solidjs.createEffect(() => {
|
|
10029
|
-
if (resource.error) console.error("Error in content block rendering", resource.error);
|
|
10030
|
-
});
|
|
10031
|
-
// The suspense is for when there's an async content block (which we have to support due to react having a rendering delay) so that we can show some height while it's loading (should kinda never be visible)
|
|
10032
|
-
return $3hooq$solidjsweb.createComponent((0, $3hooq$solidjs.Suspense), {
|
|
10033
|
-
get fallback() {
|
|
10034
|
-
return $3hooq$solidjsweb.createComponent((0, $b8a8d61b3ec5f5ac$export$3f37af283f8fb843), {
|
|
10035
|
-
width: "100%",
|
|
10036
|
-
height: "max(100%, 400px)"
|
|
10037
|
-
});
|
|
10038
|
-
},
|
|
10039
|
-
children: resource
|
|
10040
|
-
});
|
|
10041
|
-
}
|
|
10042
10041
|
var $484eec37514a982e$var$_tmpl$ = ["<div", ' class="', '"><!--$-->', "<!--/--><!--$-->", "<!--/--></div>"];
|
|
10043
10042
|
function $484eec37514a982e$export$3925f87b1545cfc6(_ref) {
|
|
10044
10043
|
let {
|
|
@@ -13297,6 +13296,16 @@ function $8b366fdb0c76194d$var$clear_if_opened_new_tab_with_sideways_url_params_
|
|
|
13297
13296
|
});
|
|
13298
13297
|
tracking_function_for_plp_results(plp_results_);
|
|
13299
13298
|
}
|
|
13299
|
+
var $c19709057a32b2e7$var$_tmpl$ = ["<a", "><img", ' style="', '"></a>'],
|
|
13300
|
+
$c19709057a32b2e7$var$_tmpl$2 = ["<a", "><video", ' muted="" autoplay="" playsinline="" loop style="', '"></video></a>'];
|
|
13301
|
+
function $c19709057a32b2e7$export$780a853d15174484(_ref) {
|
|
13302
|
+
let {
|
|
13303
|
+
contentBlock: contentBlock,
|
|
13304
|
+
router_: router_
|
|
13305
|
+
} = _ref;
|
|
13306
|
+
if (contentBlock.content.type === "image") return () => $3hooq$solidjsweb.ssr($c19709057a32b2e7$var$_tmpl$, $3hooq$solidjsweb.ssrHydrationKey() + $3hooq$solidjsweb.ssrAttribute("href", $3hooq$solidjsweb.escape(contentBlock.content.link, true), false), $3hooq$solidjsweb.ssrAttribute("src", $3hooq$solidjsweb.escape(contentBlock.content.url, true), false), "width:100%;height:100%;object-fit:cover;position:absolute;inset:0");
|
|
13307
|
+
if (contentBlock.content.type === "video") return () => $3hooq$solidjsweb.ssr($c19709057a32b2e7$var$_tmpl$2, $3hooq$solidjsweb.ssrHydrationKey() + $3hooq$solidjsweb.ssrAttribute("href", $3hooq$solidjsweb.escape(contentBlock.content.link, true), false), $3hooq$solidjsweb.ssrAttribute("src", $3hooq$solidjsweb.escape(contentBlock.content.url, true), false), "width:100%;height:100%;object-fit:cover;position:absolute;inset:0");
|
|
13308
|
+
}
|
|
13300
13309
|
var $ede6c70ecdca46fe$var$_tmpl$ = ["<div", ' class="product-count"><!--$-->', "<!--/--> <!--$-->", "<!--/--></div>"],
|
|
13301
13310
|
$ede6c70ecdca46fe$var$_tmpl$2 = ["<div", "></div>"],
|
|
13302
13311
|
$ede6c70ecdca46fe$var$_tmpl$3 = ["<div", ' class="filter-results-for-one-row"><!--$-->', "<!--/--><!--$-->", "<!--/--></div>"],
|
|
@@ -13393,6 +13402,24 @@ function $ede6c70ecdca46fe$export$f7d2f673fc2f091d(_ref) {
|
|
|
13393
13402
|
}));
|
|
13394
13403
|
// Make "Get Listing" request to get quicklinks, breadcrumbs, title, etc
|
|
13395
13404
|
const [plp_meta] = $3hooq$solidjs.createResource(meta_query_base, $3hooq$depictaiutilisharedlatest.catchify(query => depict_api_.get_listing(query)));
|
|
13405
|
+
const contentBlocksByRow = $3hooq$solidjs.createMemo(() => {
|
|
13406
|
+
var _plp_meta, _plp_meta$content_blo;
|
|
13407
|
+
if (content_blocks_by_row_()) return content_blocks_by_row_();
|
|
13408
|
+
const content = [];
|
|
13409
|
+
(_plp_meta = plp_meta()) === null || _plp_meta === void 0 || (_plp_meta$content_blo = _plp_meta.content_blocks) === null || _plp_meta$content_blo === void 0 || _plp_meta$content_blo.forEach(row => {
|
|
13410
|
+
const contentBlock = {
|
|
13411
|
+
span_columns: row.span_columns,
|
|
13412
|
+
span_rows: row.span_rows,
|
|
13413
|
+
position: row.position,
|
|
13414
|
+
content: $c19709057a32b2e7$export$780a853d15174484({
|
|
13415
|
+
contentBlock: row,
|
|
13416
|
+
router_: router_
|
|
13417
|
+
})
|
|
13418
|
+
};
|
|
13419
|
+
content[row.row] = contentBlock;
|
|
13420
|
+
});
|
|
13421
|
+
return content;
|
|
13422
|
+
});
|
|
13396
13423
|
const available_sortings_ = $3hooq$solidjs.createMemo(() => {
|
|
13397
13424
|
var _plp_products_, _plp_products_$sorts;
|
|
13398
13425
|
return (_plp_products_ = plp_products_()) === null || _plp_products_ === void 0 ? void 0 : (_plp_products_$sorts = _plp_products_.sorts) === null || _plp_products_$sorts === void 0 ? void 0 : _plp_products_$sorts.map(sort => {
|
|
@@ -13408,13 +13435,13 @@ function $ede6c70ecdca46fe$export$f7d2f673fc2f091d(_ref) {
|
|
|
13408
13435
|
return (_plp_products_2 = plp_products_()) === null || _plp_products_2 === void 0 ? void 0 : _plp_products_2.filters;
|
|
13409
13436
|
});
|
|
13410
13437
|
const title = $3hooq$solidjs.createMemo(() => {
|
|
13411
|
-
var
|
|
13412
|
-
return (
|
|
13438
|
+
var _plp_meta2;
|
|
13439
|
+
return (_plp_meta2 = plp_meta()) === null || _plp_meta2 === void 0 ? void 0 : _plp_meta2.title;
|
|
13413
13440
|
});
|
|
13414
13441
|
const crumb_data_ = $ede6c70ecdca46fe$var$add_us_to_crumbs(plp_meta);
|
|
13415
13442
|
const quicklinks_data_ = $3hooq$solidjs.createMemo(() => {
|
|
13416
|
-
var
|
|
13417
|
-
return (
|
|
13443
|
+
var _plp_meta3;
|
|
13444
|
+
return (_plp_meta3 = plp_meta()) === null || _plp_meta3 === void 0 ? void 0 : _plp_meta3.quick_links;
|
|
13418
13445
|
});
|
|
13419
13446
|
const [sort_or_filter_open_, set_sort_or_filter_open_] = $3hooq$solidjs.createSignal(false);
|
|
13420
13447
|
const [desktop_filter_elements_, set_desktop_filter_elements] = $3hooq$solidjs.createSignal();
|
|
@@ -13639,7 +13666,7 @@ function $ede6c70ecdca46fe$export$f7d2f673fc2f091d(_ref) {
|
|
|
13639
13666
|
product_card_template_: product_card_template_,
|
|
13640
13667
|
sort_or_filter_open_: sort_or_filter_open_,
|
|
13641
13668
|
desktop_filter_elements_: desktop_filter_elements_,
|
|
13642
|
-
content_blocks_by_row_:
|
|
13669
|
+
content_blocks_by_row_: contentBlocksByRow,
|
|
13643
13670
|
ConfiguredScrollStatus_: ConfiguredScrollStatus_,
|
|
13644
13671
|
id_currently_querying_for_: id_to_query_for_,
|
|
13645
13672
|
no_results_options_: {
|
|
@@ -13680,8 +13707,8 @@ function $ede6c70ecdca46fe$export$f7d2f673fc2f091d(_ref) {
|
|
|
13680
13707
|
function $ede6c70ecdca46fe$var$add_us_to_crumbs(plp_meta) {
|
|
13681
13708
|
const href_accessor = $3hooq$depictaiutilisharedlatest.use_href_accessor();
|
|
13682
13709
|
return $3hooq$solidjs.createMemo(() => {
|
|
13683
|
-
var
|
|
13684
|
-
const api_value = (
|
|
13710
|
+
var _plp_meta4;
|
|
13711
|
+
const api_value = (_plp_meta4 = plp_meta()) === null || _plp_meta4 === void 0 ? void 0 : _plp_meta4.breadcrumbs;
|
|
13685
13712
|
if (!api_value) return api_value;
|
|
13686
13713
|
return [...api_value, $3hooq$solidjs.mergeProps(plp_meta(), {
|
|
13687
13714
|
get page_url() {
|