@searchcraft/javascript-sdk 0.10.4 → 0.10.6
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/components/index.d.ts +52 -20
- package/dist/components/index.js +4 -4
- package/dist/components/{p-9d2e55a7.js → p-2735dceb.js} +3 -3
- package/dist/components/{p-9d2e55a7.js.map → p-2735dceb.js.map} +1 -1
- package/dist/components/p-4dd1995c.js +193 -0
- package/dist/components/p-4dd1995c.js.map +1 -0
- package/dist/components/{p-35ee16e2.js → p-6e5ed641.js} +2 -2
- package/dist/components/{p-35ee16e2.js.map → p-6e5ed641.js.map} +1 -1
- package/dist/components/{p-4c610bc4.js → p-75134ca7.js} +2 -2
- package/dist/components/{p-4c610bc4.js.map → p-75134ca7.js.map} +1 -1
- package/dist/components/{p-eb633481.js → p-9f4c50ed.js} +3 -3
- package/dist/components/{p-eb633481.js.map → p-9f4c50ed.js.map} +1 -1
- package/dist/components/{p-6065aee1.js → p-a7d611cd.js} +17 -12
- package/dist/components/p-a7d611cd.js.map +1 -0
- package/dist/components/{p-6ed5cca1.js → p-aba24c85.js} +4 -4
- package/dist/components/{p-6ed5cca1.js.map → p-aba24c85.js.map} +1 -1
- package/dist/components/p-b194d081.js +406 -0
- package/dist/components/p-b194d081.js.map +1 -0
- package/dist/components/{p-60fd824d.js → p-b54873ff.js} +371 -348
- package/dist/components/p-b54873ff.js.map +1 -0
- package/dist/components/p-d54771ef.js +182 -0
- package/dist/components/p-d54771ef.js.map +1 -0
- package/dist/components/{p-2d975f19.js → p-f2976b33.js} +2 -2
- package/dist/components/{p-2d975f19.js.map → p-f2976b33.js.map} +1 -1
- package/dist/components/searchcraft-ad.js +1 -1
- package/dist/components/searchcraft-facet-list.js +1 -1
- package/dist/components/searchcraft-filter-panel.js +13 -18
- package/dist/components/searchcraft-filter-panel.js.map +1 -1
- package/dist/components/searchcraft-input-form.js +1 -1
- package/dist/components/searchcraft-pagination.js +1 -1
- package/dist/components/searchcraft-popover-button.js +1 -1
- package/dist/components/searchcraft-popover-footer.js +1 -1
- package/dist/components/searchcraft-popover-form.js +6 -6
- package/dist/components/searchcraft-popover-list-item.js +1 -1
- package/dist/components/searchcraft-popover-list-view.js +1 -1
- package/dist/components/searchcraft-results-info.js +2 -2
- package/dist/components/searchcraft-search-result.js +1 -1
- package/dist/components/searchcraft-search-results-per-page.js +1 -1
- package/dist/components/searchcraft-search-results.js +3 -3
- package/dist/components/searchcraft-slider.js +1 -1
- package/dist/components/searchcraft-theme.js +1 -1
- package/dist/components/searchcraft-theme.js.map +1 -1
- package/dist/components/searchcraft-toggle-button.js +1 -1
- package/dist/hydrate/index.js +710 -434
- package/dist/hydrate/index.mjs +710 -434
- package/dist/themes/hologram.css +1 -1
- package/dist/themes/hologram.css.map +1 -1
- package/dist/types/components/searchcraft-facet-list/searchcraft-facet-list.d.ts +33 -14
- package/dist/types/components/searchcraft-filter-panel/searchcraft-filter-panel.d.ts +2 -2
- package/dist/types/components/searchcraft-input-form/searchcraft-input-form.d.ts +6 -0
- package/dist/types/components/searchcraft-slider/searchcraft-slider.d.ts +10 -4
- package/dist/types/components.d.ts +23 -7
- package/dist/types/store/SearchcraftStore.types.d.ts +5 -3
- package/dist/types/utils/facets.d.ts +30 -3
- package/dist/types/utils/throttle.d.ts +14 -0
- package/dist/types/utils/units.d.ts +33 -0
- package/package.json +3 -3
- package/dist/components/p-163402fb.js +0 -291
- package/dist/components/p-163402fb.js.map +0 -1
- package/dist/components/p-4d37616e.js +0 -105
- package/dist/components/p-4d37616e.js.map +0 -1
- package/dist/components/p-6065aee1.js.map +0 -1
- package/dist/components/p-60fd824d.js.map +0 -1
- package/dist/components/p-7c650118.js +0 -110
- package/dist/components/p-7c650118.js.map +0 -1
package/dist/hydrate/index.js
CHANGED
|
@@ -3182,12 +3182,12 @@ Object.keys(react).forEach(function (k) {
|
|
|
3182
3182
|
|
|
3183
3183
|
var B = Object.defineProperty;
|
|
3184
3184
|
var N = (a, e, n) => e in a ? B(a, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : a[e] = n;
|
|
3185
|
-
var
|
|
3185
|
+
var h = (a, e, n) => N(a, typeof e != "symbol" ? e + "" : e, n);
|
|
3186
3186
|
var O = /* @__PURE__ */ ((a) => (a[a.DEBUG = 0] = "DEBUG", a[a.INFO = 1] = "INFO", a[a.WARN = 2] = "WARN", a[a.ERROR = 3] = "ERROR", a))(O || {});
|
|
3187
3187
|
class pe {
|
|
3188
3188
|
constructor(e) {
|
|
3189
|
-
|
|
3190
|
-
|
|
3189
|
+
h(this, "logLevel");
|
|
3190
|
+
h(this, "logFormatter");
|
|
3191
3191
|
this.logLevel = e.logLevel || 1, this.logFormatter = e.logFormatter || this.defaultFormatter;
|
|
3192
3192
|
}
|
|
3193
3193
|
defaultFormatter(e, n) {
|
|
@@ -3222,87 +3222,87 @@ class pe {
|
|
|
3222
3222
|
}
|
|
3223
3223
|
}
|
|
3224
3224
|
}
|
|
3225
|
-
function
|
|
3226
|
-
return new (n || (n = Promise))(function(
|
|
3227
|
-
function t(
|
|
3225
|
+
function y(a, e, n, r) {
|
|
3226
|
+
return new (n || (n = Promise))(function(o, i) {
|
|
3227
|
+
function t(s) {
|
|
3228
3228
|
try {
|
|
3229
|
-
|
|
3230
|
-
} catch (
|
|
3231
|
-
|
|
3229
|
+
l(r.next(s));
|
|
3230
|
+
} catch (c) {
|
|
3231
|
+
i(c);
|
|
3232
3232
|
}
|
|
3233
3233
|
}
|
|
3234
|
-
function u(
|
|
3234
|
+
function u(s) {
|
|
3235
3235
|
try {
|
|
3236
|
-
|
|
3237
|
-
} catch (
|
|
3238
|
-
|
|
3236
|
+
l(r.throw(s));
|
|
3237
|
+
} catch (c) {
|
|
3238
|
+
i(c);
|
|
3239
3239
|
}
|
|
3240
3240
|
}
|
|
3241
|
-
function
|
|
3242
|
-
var
|
|
3243
|
-
|
|
3244
|
-
|
|
3241
|
+
function l(s) {
|
|
3242
|
+
var c;
|
|
3243
|
+
s.done ? o(s.value) : (c = s.value, c instanceof n ? c : new n(function(g) {
|
|
3244
|
+
g(c);
|
|
3245
3245
|
})).then(t, u);
|
|
3246
3246
|
}
|
|
3247
|
-
|
|
3247
|
+
l((r = r.apply(a, [])).next());
|
|
3248
3248
|
});
|
|
3249
3249
|
}
|
|
3250
|
-
function
|
|
3251
|
-
var n, r,
|
|
3252
|
-
if (1 &
|
|
3253
|
-
return
|
|
3250
|
+
function w(a, e) {
|
|
3251
|
+
var n, r, o, i, t = { label: 0, sent: function() {
|
|
3252
|
+
if (1 & o[0]) throw o[1];
|
|
3253
|
+
return o[1];
|
|
3254
3254
|
}, trys: [], ops: [] };
|
|
3255
|
-
return
|
|
3255
|
+
return i = { next: u(0), throw: u(1), return: u(2) }, typeof Symbol == "function" && (i[Symbol.iterator] = function() {
|
|
3256
3256
|
return this;
|
|
3257
|
-
}),
|
|
3258
|
-
function u(
|
|
3259
|
-
return function(
|
|
3260
|
-
return function(
|
|
3257
|
+
}), i;
|
|
3258
|
+
function u(l) {
|
|
3259
|
+
return function(s) {
|
|
3260
|
+
return function(c) {
|
|
3261
3261
|
if (n) throw new TypeError("Generator is already executing.");
|
|
3262
|
-
for (;
|
|
3263
|
-
if (n = 1, r && (
|
|
3264
|
-
switch (r = 0,
|
|
3262
|
+
for (; i && (i = 0, c[0] && (t = 0)), t; ) try {
|
|
3263
|
+
if (n = 1, r && (o = 2 & c[0] ? r.return : c[0] ? r.throw || ((o = r.return) && o.call(r), 0) : r.next) && !(o = o.call(r, c[1])).done) return o;
|
|
3264
|
+
switch (r = 0, o && (c = [2 & c[0], o.value]), c[0]) {
|
|
3265
3265
|
case 0:
|
|
3266
3266
|
case 1:
|
|
3267
|
-
|
|
3267
|
+
o = c;
|
|
3268
3268
|
break;
|
|
3269
3269
|
case 4:
|
|
3270
|
-
return t.label++, { value:
|
|
3270
|
+
return t.label++, { value: c[1], done: !1 };
|
|
3271
3271
|
case 5:
|
|
3272
|
-
t.label++, r =
|
|
3272
|
+
t.label++, r = c[1], c = [0];
|
|
3273
3273
|
continue;
|
|
3274
3274
|
case 7:
|
|
3275
|
-
|
|
3275
|
+
c = t.ops.pop(), t.trys.pop();
|
|
3276
3276
|
continue;
|
|
3277
3277
|
default:
|
|
3278
|
-
if (
|
|
3278
|
+
if (o = t.trys, !((o = o.length > 0 && o[o.length - 1]) || c[0] !== 6 && c[0] !== 2)) {
|
|
3279
3279
|
t = 0;
|
|
3280
3280
|
continue;
|
|
3281
3281
|
}
|
|
3282
|
-
if (
|
|
3283
|
-
t.label =
|
|
3282
|
+
if (c[0] === 3 && (!o || c[1] > o[0] && c[1] < o[3])) {
|
|
3283
|
+
t.label = c[1];
|
|
3284
3284
|
break;
|
|
3285
3285
|
}
|
|
3286
|
-
if (
|
|
3287
|
-
t.label =
|
|
3286
|
+
if (c[0] === 6 && t.label < o[1]) {
|
|
3287
|
+
t.label = o[1], o = c;
|
|
3288
3288
|
break;
|
|
3289
3289
|
}
|
|
3290
|
-
if (
|
|
3291
|
-
t.label =
|
|
3290
|
+
if (o && t.label < o[2]) {
|
|
3291
|
+
t.label = o[2], t.ops.push(c);
|
|
3292
3292
|
break;
|
|
3293
3293
|
}
|
|
3294
|
-
|
|
3294
|
+
o[2] && t.ops.pop(), t.trys.pop();
|
|
3295
3295
|
continue;
|
|
3296
3296
|
}
|
|
3297
|
-
|
|
3298
|
-
} catch (
|
|
3299
|
-
|
|
3297
|
+
c = e.call(a, t);
|
|
3298
|
+
} catch (g) {
|
|
3299
|
+
c = [6, g], r = 0;
|
|
3300
3300
|
} finally {
|
|
3301
|
-
n =
|
|
3301
|
+
n = o = 0;
|
|
3302
3302
|
}
|
|
3303
|
-
if (5 &
|
|
3304
|
-
return { value:
|
|
3305
|
-
}([
|
|
3303
|
+
if (5 & c[0]) throw c[1];
|
|
3304
|
+
return { value: c[0] ? c[1] : void 0, done: !0 };
|
|
3305
|
+
}([l, s]);
|
|
3306
3306
|
};
|
|
3307
3307
|
}
|
|
3308
3308
|
}
|
|
@@ -3313,68 +3313,68 @@ function T(a) {
|
|
|
3313
3313
|
return a ^= a >>> 16, a = Math.imul(a, 2246822507), a ^= a >>> 13, a = Math.imul(a, 3266489909), (a ^= a >>> 16) >>> 0;
|
|
3314
3314
|
}
|
|
3315
3315
|
var m = new Uint32Array([597399067, 2869860233, 951274213, 2716044179]);
|
|
3316
|
-
function
|
|
3316
|
+
function p(a, e) {
|
|
3317
3317
|
return a << e | a >>> 32 - e;
|
|
3318
3318
|
}
|
|
3319
|
-
function
|
|
3319
|
+
function _(a, e) {
|
|
3320
3320
|
var n;
|
|
3321
3321
|
if (e === void 0 && (e = 0), e = e ? 0 | e : 0, typeof a == "string" && (n = a, a = new TextEncoder().encode(n).buffer), !(a instanceof ArrayBuffer)) throw new TypeError("Expected key to be ArrayBuffer or string");
|
|
3322
3322
|
var r = new Uint32Array([e, e, e, e]);
|
|
3323
|
-
(((function(
|
|
3324
|
-
for (var u =
|
|
3325
|
-
var
|
|
3326
|
-
|
|
3327
|
-
}
|
|
3328
|
-
})))(a, r), function(
|
|
3329
|
-
var u =
|
|
3330
|
-
switch (
|
|
3323
|
+
(((function(i, t) {
|
|
3324
|
+
for (var u = i.byteLength / 16 | 0, l = new Uint32Array(i, 0, 4 * u), s = 0; s < u; s++) {
|
|
3325
|
+
var c = l.subarray(4 * s, 4 * (s + 1));
|
|
3326
|
+
c[0] = Math.imul(c[0], m[0]), c[0] = p(c[0], 15), c[0] = Math.imul(c[0], m[1]), t[0] = t[0] ^ c[0], t[0] = p(t[0], 19), t[0] = t[0] + t[1], t[0] = Math.imul(t[0], 5) + 1444728091, c[1] = Math.imul(c[1], m[1]), c[1] = p(c[1], 16), c[1] = Math.imul(c[1], m[2]), t[1] = t[1] ^ c[1], t[1] = p(t[1], 17), t[1] = t[1] + t[2], t[1] = Math.imul(t[1], 5) + 197830471, c[2] = Math.imul(c[2], m[2]), c[2] = p(c[2], 17), c[2] = Math.imul(c[2], m[3]), t[2] = t[2] ^ c[2], t[2] = p(t[2], 15), t[2] = t[2] + t[3], t[2] = Math.imul(t[2], 5) + 2530024501, c[3] = Math.imul(c[3], m[3]), c[3] = p(c[3], 18), c[3] = Math.imul(c[3], m[0]), t[3] = t[3] ^ c[3], t[3] = p(t[3], 13), t[3] = t[3] + t[0], t[3] = Math.imul(t[3], 5) + 850148119;
|
|
3327
|
+
}
|
|
3328
|
+
})))(a, r), function(i, t) {
|
|
3329
|
+
var u = i.byteLength / 16 | 0, l = i.byteLength % 16, s = new Uint32Array(4), c = new Uint8Array(i, 16 * u, l);
|
|
3330
|
+
switch (l) {
|
|
3331
3331
|
case 15:
|
|
3332
|
-
|
|
3332
|
+
s[3] = s[3] ^ c[14] << 16;
|
|
3333
3333
|
case 14:
|
|
3334
|
-
|
|
3334
|
+
s[3] = s[3] ^ c[13] << 8;
|
|
3335
3335
|
case 13:
|
|
3336
|
-
|
|
3336
|
+
s[3] = s[3] ^ c[12] << 0, s[3] = Math.imul(s[3], m[3]), s[3] = p(s[3], 18), s[3] = Math.imul(s[3], m[0]), t[3] = t[3] ^ s[3];
|
|
3337
3337
|
case 12:
|
|
3338
|
-
|
|
3338
|
+
s[2] = s[2] ^ c[11] << 24;
|
|
3339
3339
|
case 11:
|
|
3340
|
-
|
|
3340
|
+
s[2] = s[2] ^ c[10] << 16;
|
|
3341
3341
|
case 10:
|
|
3342
|
-
|
|
3342
|
+
s[2] = s[2] ^ c[9] << 8;
|
|
3343
3343
|
case 9:
|
|
3344
|
-
|
|
3344
|
+
s[2] = s[2] ^ c[8] << 0, s[2] = Math.imul(s[2], m[2]), s[2] = p(s[2], 17), s[2] = Math.imul(s[2], m[3]), t[2] = t[2] ^ s[2];
|
|
3345
3345
|
case 8:
|
|
3346
|
-
|
|
3346
|
+
s[1] = s[1] ^ c[7] << 24;
|
|
3347
3347
|
case 7:
|
|
3348
|
-
|
|
3348
|
+
s[1] = s[1] ^ c[6] << 16;
|
|
3349
3349
|
case 6:
|
|
3350
|
-
|
|
3350
|
+
s[1] = s[1] ^ c[5] << 8;
|
|
3351
3351
|
case 5:
|
|
3352
|
-
|
|
3352
|
+
s[1] = s[1] ^ c[4] << 0, s[1] = Math.imul(s[1], m[1]), s[1] = p(s[1], 16), s[1] = Math.imul(s[1], m[2]), t[1] = t[1] ^ s[1];
|
|
3353
3353
|
case 4:
|
|
3354
|
-
|
|
3354
|
+
s[0] = s[0] ^ c[3] << 24;
|
|
3355
3355
|
case 3:
|
|
3356
|
-
|
|
3356
|
+
s[0] = s[0] ^ c[2] << 16;
|
|
3357
3357
|
case 2:
|
|
3358
|
-
|
|
3358
|
+
s[0] = s[0] ^ c[1] << 8;
|
|
3359
3359
|
case 1:
|
|
3360
|
-
|
|
3360
|
+
s[0] = s[0] ^ c[0] << 0, s[0] = Math.imul(s[0], m[0]), s[0] = p(s[0], 15), s[0] = Math.imul(s[0], m[1]), t[0] = t[0] ^ s[0];
|
|
3361
3361
|
}
|
|
3362
|
-
}(a, r), function(
|
|
3363
|
-
t[0] = t[0] ^
|
|
3362
|
+
}(a, r), function(i, t) {
|
|
3363
|
+
t[0] = t[0] ^ i.byteLength, t[1] = t[1] ^ i.byteLength, t[2] = t[2] ^ i.byteLength, t[3] = t[3] ^ i.byteLength, t[0] = t[0] + t[1] | 0, t[0] = t[0] + t[2] | 0, t[0] = t[0] + t[3] | 0, t[1] = t[1] + t[0] | 0, t[2] = t[2] + t[0] | 0, t[3] = t[3] + t[0] | 0, t[0] = T(t[0]), t[1] = T(t[1]), t[2] = T(t[2]), t[3] = T(t[3]), t[0] = t[0] + t[1] | 0, t[0] = t[0] + t[2] | 0, t[0] = t[0] + t[3] | 0, t[1] = t[1] + t[0] | 0, t[2] = t[2] + t[0] | 0, t[3] = t[3] + t[0] | 0;
|
|
3364
3364
|
}(a, r);
|
|
3365
|
-
var
|
|
3366
|
-
return Array.from(
|
|
3367
|
-
return
|
|
3365
|
+
var o = new Uint8Array(r.buffer);
|
|
3366
|
+
return Array.from(o).map(function(i) {
|
|
3367
|
+
return i.toString(16).padStart(2, "0");
|
|
3368
3368
|
}).join("");
|
|
3369
3369
|
}
|
|
3370
3370
|
function H(a) {
|
|
3371
3371
|
for (var e = 0, n = 0; n < a.length; ++n) e += Math.abs(a[n]);
|
|
3372
3372
|
return e;
|
|
3373
3373
|
}
|
|
3374
|
-
function
|
|
3375
|
-
for (var r = [],
|
|
3376
|
-
for (var
|
|
3377
|
-
r.push(Q(
|
|
3374
|
+
function q(a, e, n) {
|
|
3375
|
+
for (var r = [], o = 0; o < a[0].data.length; o++) {
|
|
3376
|
+
for (var i = [], t = 0; t < a.length; t++) i.push(a[t].data[o]);
|
|
3377
|
+
r.push(Q(i));
|
|
3378
3378
|
}
|
|
3379
3379
|
var u = new Uint8ClampedArray(r);
|
|
3380
3380
|
return new ImageData(u, e, n);
|
|
@@ -3382,32 +3382,32 @@ function L(a, e, n) {
|
|
|
3382
3382
|
function Q(a) {
|
|
3383
3383
|
if (a.length === 0) return 0;
|
|
3384
3384
|
for (var e = {}, n = 0, r = a; n < r.length; n++)
|
|
3385
|
-
e[
|
|
3386
|
-
var
|
|
3387
|
-
for (var
|
|
3388
|
-
return
|
|
3385
|
+
e[i = r[n]] = (e[i] || 0) + 1;
|
|
3386
|
+
var o = a[0];
|
|
3387
|
+
for (var i in e) e[i] > e[o] && (o = parseInt(i, 10));
|
|
3388
|
+
return o;
|
|
3389
3389
|
}
|
|
3390
3390
|
function C() {
|
|
3391
3391
|
if (typeof navigator > "u") return { name: "unknown", version: "unknown" };
|
|
3392
3392
|
for (var a = navigator.userAgent, e = { Edg: "Edge", OPR: "Opera" }, n = 0, r = [/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/, /(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/, /(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/, /(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/, /(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/, /(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/, /(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/]; n < r.length; n++) {
|
|
3393
|
-
var
|
|
3394
|
-
if (
|
|
3393
|
+
var o = r[n], i = a.match(o);
|
|
3394
|
+
if (i && i.groups) return { name: e[i.groups.name] || i.groups.name, version: i.groups.version };
|
|
3395
3395
|
}
|
|
3396
3396
|
return { name: "unknown", version: "unknown" };
|
|
3397
3397
|
}
|
|
3398
3398
|
v("audio", function() {
|
|
3399
|
-
return
|
|
3400
|
-
return
|
|
3399
|
+
return y(this, void 0, void 0, function() {
|
|
3400
|
+
return w(this, function(a) {
|
|
3401
3401
|
return [2, new Promise(function(e, n) {
|
|
3402
3402
|
try {
|
|
3403
|
-
var r = new (window.OfflineAudioContext || window.webkitOfflineAudioContext)(1, 5e3, 44100),
|
|
3404
|
-
|
|
3403
|
+
var r = new (window.OfflineAudioContext || window.webkitOfflineAudioContext)(1, 5e3, 44100), o = r.createBufferSource(), i = r.createOscillator();
|
|
3404
|
+
i.frequency.value = 1e3;
|
|
3405
3405
|
var t, u = r.createDynamicsCompressor();
|
|
3406
|
-
u.threshold.value = -50, u.knee.value = 40, u.ratio.value = 12, u.attack.value = 0, u.release.value = 0.2,
|
|
3407
|
-
t =
|
|
3406
|
+
u.threshold.value = -50, u.knee.value = 40, u.ratio.value = 12, u.attack.value = 0, u.release.value = 0.2, i.connect(u), u.connect(r.destination), i.start(), r.oncomplete = function(l) {
|
|
3407
|
+
t = l.renderedBuffer.getChannelData(0), e({ sampleHash: H(t), oscillator: i.type, maxChannels: r.destination.maxChannelCount, channelCountMode: o.channelCountMode });
|
|
3408
3408
|
}, r.startRendering();
|
|
3409
|
-
} catch (
|
|
3410
|
-
console.error("Error creating audio fingerprint:",
|
|
3409
|
+
} catch (l) {
|
|
3410
|
+
console.error("Error creating audio fingerprint:", l), n(l);
|
|
3411
3411
|
}
|
|
3412
3412
|
})];
|
|
3413
3413
|
});
|
|
@@ -3421,18 +3421,18 @@ C().name != "Firefox" && v("canvas", function() {
|
|
|
3421
3421
|
var n = document.createElement("canvas"), r = n.getContext("2d");
|
|
3422
3422
|
if (!r) return new ImageData(1, 1);
|
|
3423
3423
|
n.width = P, n.height = k;
|
|
3424
|
-
var
|
|
3425
|
-
|
|
3426
|
-
var
|
|
3427
|
-
r.font = "23.123px Arial", r.fillStyle = "black", r.fillText(
|
|
3424
|
+
var o = r.createLinearGradient(0, 0, n.width, n.height);
|
|
3425
|
+
o.addColorStop(0, "red"), o.addColorStop(0.16666666666666666, "orange"), o.addColorStop(0.3333333333333333, "yellow"), o.addColorStop(0.5, "green"), o.addColorStop(0.6666666666666666, "blue"), o.addColorStop(0.8333333333333334, "indigo"), o.addColorStop(1, "violet"), r.fillStyle = o, r.fillRect(0, 0, n.width, n.height);
|
|
3426
|
+
var i = "Random Text WMwmil10Oo";
|
|
3427
|
+
r.font = "23.123px Arial", r.fillStyle = "black", r.fillText(i, -5, 15), r.fillStyle = "rgba(0, 0, 255, 0.5)", r.fillText(i, -3.3, 17.7), r.beginPath(), r.moveTo(0, 0), r.lineTo(2 * n.width / 7, n.height), r.strokeStyle = "white", r.lineWidth = 2, r.stroke();
|
|
3428
3428
|
var t = r.getImageData(0, 0, n.width, n.height);
|
|
3429
3429
|
return t;
|
|
3430
3430
|
}();
|
|
3431
3431
|
});
|
|
3432
|
-
a({ commonImageDataHash:
|
|
3432
|
+
a({ commonImageDataHash: _(q(e, P, k).data.toString()).toString() });
|
|
3433
3433
|
});
|
|
3434
3434
|
});
|
|
3435
|
-
var
|
|
3435
|
+
var I, X = ["Arial", "Arial Black", "Arial Narrow", "Arial Rounded MT", "Arimo", "Archivo", "Barlow", "Bebas Neue", "Bitter", "Bookman", "Calibri", "Cabin", "Candara", "Century", "Century Gothic", "Comic Sans MS", "Constantia", "Courier", "Courier New", "Crimson Text", "DM Mono", "DM Sans", "DM Serif Display", "DM Serif Text", "Dosis", "Droid Sans", "Exo", "Fira Code", "Fira Sans", "Franklin Gothic Medium", "Garamond", "Geneva", "Georgia", "Gill Sans", "Helvetica", "Impact", "Inconsolata", "Indie Flower", "Inter", "Josefin Sans", "Karla", "Lato", "Lexend", "Lucida Bright", "Lucida Console", "Lucida Sans Unicode", "Manrope", "Merriweather", "Merriweather Sans", "Montserrat", "Myriad", "Noto Sans", "Nunito", "Nunito Sans", "Open Sans", "Optima", "Orbitron", "Oswald", "Pacifico", "Palatino", "Perpetua", "PT Sans", "PT Serif", "Poppins", "Prompt", "Public Sans", "Quicksand", "Rajdhani", "Recursive", "Roboto", "Roboto Condensed", "Rockwell", "Rubik", "Segoe Print", "Segoe Script", "Segoe UI", "Sora", "Source Sans Pro", "Space Mono", "Tahoma", "Taviraj", "Times", "Times New Roman", "Titillium Web", "Trebuchet MS", "Ubuntu", "Varela Round", "Verdana", "Work Sans"], J = ["monospace", "sans-serif", "serif"];
|
|
3436
3436
|
function F(a, e) {
|
|
3437
3437
|
if (!a) throw new Error("Canvas context not supported");
|
|
3438
3438
|
return a.font = "72px ".concat(e), a.measureText("WwMmLli0Oo").width;
|
|
@@ -3440,15 +3440,15 @@ function F(a, e) {
|
|
|
3440
3440
|
function Y() {
|
|
3441
3441
|
var a, e = document.createElement("canvas"), n = (a = e.getContext("webgl")) !== null && a !== void 0 ? a : e.getContext("experimental-webgl");
|
|
3442
3442
|
if (n && "getParameter" in n) try {
|
|
3443
|
-
var r = (n.getParameter(n.VENDOR) || "").toString(),
|
|
3444
|
-
if (!
|
|
3443
|
+
var r = (n.getParameter(n.VENDOR) || "").toString(), o = (n.getParameter(n.RENDERER) || "").toString(), i = { vendor: r, renderer: o, version: (n.getParameter(n.VERSION) || "").toString(), shadingLanguageVersion: (n.getParameter(n.SHADING_LANGUAGE_VERSION) || "").toString() };
|
|
3444
|
+
if (!o.length || !r.length) {
|
|
3445
3445
|
var t = n.getExtension("WEBGL_debug_renderer_info");
|
|
3446
3446
|
if (t) {
|
|
3447
|
-
var u = (n.getParameter(t.UNMASKED_VENDOR_WEBGL) || "").toString(),
|
|
3448
|
-
u && (
|
|
3447
|
+
var u = (n.getParameter(t.UNMASKED_VENDOR_WEBGL) || "").toString(), l = (n.getParameter(t.UNMASKED_RENDERER_WEBGL) || "").toString();
|
|
3448
|
+
u && (i.vendorUnmasked = u), l && (i.rendererUnmasked = l);
|
|
3449
3449
|
}
|
|
3450
3450
|
}
|
|
3451
|
-
return
|
|
3451
|
+
return i;
|
|
3452
3452
|
} catch {
|
|
3453
3453
|
}
|
|
3454
3454
|
return "undefined";
|
|
@@ -3460,23 +3460,23 @@ function Z() {
|
|
|
3460
3460
|
function ee(a, e) {
|
|
3461
3461
|
var n = {};
|
|
3462
3462
|
return e.forEach(function(r) {
|
|
3463
|
-
var
|
|
3464
|
-
if (
|
|
3463
|
+
var o = function(i) {
|
|
3464
|
+
if (i.length === 0) return null;
|
|
3465
3465
|
var t = {};
|
|
3466
|
-
|
|
3467
|
-
var
|
|
3468
|
-
t[
|
|
3466
|
+
i.forEach(function(s) {
|
|
3467
|
+
var c = String(s);
|
|
3468
|
+
t[c] = (t[c] || 0) + 1;
|
|
3469
3469
|
});
|
|
3470
|
-
var u =
|
|
3471
|
-
return Object.keys(t).forEach(function(
|
|
3472
|
-
t[
|
|
3470
|
+
var u = i[0], l = 1;
|
|
3471
|
+
return Object.keys(t).forEach(function(s) {
|
|
3472
|
+
t[s] > l && (u = s, l = t[s]);
|
|
3473
3473
|
}), u;
|
|
3474
|
-
}(a.map(function(
|
|
3475
|
-
return r in
|
|
3476
|
-
}).filter(function(
|
|
3477
|
-
return
|
|
3474
|
+
}(a.map(function(i) {
|
|
3475
|
+
return r in i ? i[r] : void 0;
|
|
3476
|
+
}).filter(function(i) {
|
|
3477
|
+
return i !== void 0;
|
|
3478
3478
|
}));
|
|
3479
|
-
|
|
3479
|
+
o && (n[r] = o);
|
|
3480
3480
|
}), n;
|
|
3481
3481
|
}
|
|
3482
3482
|
function te() {
|
|
@@ -3500,37 +3500,37 @@ C().name != "Firefox" && v("fonts", function() {
|
|
|
3500
3500
|
return new Promise(function(e, n) {
|
|
3501
3501
|
try {
|
|
3502
3502
|
(function(r) {
|
|
3503
|
-
var
|
|
3504
|
-
|
|
3505
|
-
var
|
|
3506
|
-
return
|
|
3507
|
-
switch (
|
|
3503
|
+
var o;
|
|
3504
|
+
y(this, void 0, void 0, function() {
|
|
3505
|
+
var i, t, u;
|
|
3506
|
+
return w(this, function(l) {
|
|
3507
|
+
switch (l.label) {
|
|
3508
3508
|
case 0:
|
|
3509
|
-
return document.body ? [3, 2] : [4, (
|
|
3510
|
-
return setTimeout(
|
|
3509
|
+
return document.body ? [3, 2] : [4, (s = 50, new Promise(function(g) {
|
|
3510
|
+
return setTimeout(g, s, c);
|
|
3511
3511
|
}))];
|
|
3512
3512
|
case 1:
|
|
3513
|
-
return
|
|
3513
|
+
return l.sent(), [3, 0];
|
|
3514
3514
|
case 2:
|
|
3515
|
-
if ((
|
|
3515
|
+
if ((i = document.createElement("iframe")).setAttribute("frameBorder", "0"), (t = i.style).setProperty("position", "fixed"), t.setProperty("display", "block", "important"), t.setProperty("visibility", "visible"), t.setProperty("border", "0"), t.setProperty("opacity", "0"), i.src = "about:blank", document.body.appendChild(i), !(u = i.contentDocument || ((o = i.contentWindow) === null || o === void 0 ? void 0 : o.document))) throw new Error("Iframe document is not accessible");
|
|
3516
3516
|
return r({ iframe: u }), setTimeout(function() {
|
|
3517
|
-
document.body.removeChild(
|
|
3517
|
+
document.body.removeChild(i);
|
|
3518
3518
|
}, 0), [2];
|
|
3519
3519
|
}
|
|
3520
|
-
var
|
|
3520
|
+
var s, c;
|
|
3521
3521
|
});
|
|
3522
3522
|
});
|
|
3523
3523
|
})(function(r) {
|
|
3524
|
-
var
|
|
3525
|
-
return
|
|
3526
|
-
var
|
|
3527
|
-
return
|
|
3528
|
-
return
|
|
3529
|
-
return F(t,
|
|
3530
|
-
}),
|
|
3531
|
-
var
|
|
3532
|
-
u.includes(
|
|
3533
|
-
}), e(
|
|
3524
|
+
var o = r.iframe;
|
|
3525
|
+
return y(a, void 0, void 0, function() {
|
|
3526
|
+
var i, t, u, l;
|
|
3527
|
+
return w(this, function(s) {
|
|
3528
|
+
return i = o.createElement("canvas"), t = i.getContext("2d"), u = J.map(function(c) {
|
|
3529
|
+
return F(t, c);
|
|
3530
|
+
}), l = {}, X.forEach(function(c) {
|
|
3531
|
+
var g = F(t, c);
|
|
3532
|
+
u.includes(g) || (l[c] = g);
|
|
3533
|
+
}), e(l), [2];
|
|
3534
3534
|
});
|
|
3535
3535
|
});
|
|
3536
3536
|
});
|
|
@@ -3548,24 +3548,24 @@ C().name != "Firefox" && v("fonts", function() {
|
|
|
3548
3548
|
a({ languages: navigator.language, timezone: Intl.DateTimeFormat().resolvedOptions().timeZone });
|
|
3549
3549
|
});
|
|
3550
3550
|
}), v("permissions", function() {
|
|
3551
|
-
return
|
|
3551
|
+
return y(this, void 0, void 0, function() {
|
|
3552
3552
|
var a;
|
|
3553
|
-
return
|
|
3554
|
-
return
|
|
3553
|
+
return w(this, function(e) {
|
|
3554
|
+
return I = (S == null ? void 0 : S.permissions_to_check) || ["accelerometer", "accessibility", "accessibility-events", "ambient-light-sensor", "background-fetch", "background-sync", "bluetooth", "camera", "clipboard-read", "clipboard-write", "device-info", "display-capture", "gyroscope", "geolocation", "local-fonts", "magnetometer", "microphone", "midi", "nfc", "notifications", "payment-handler", "persistent-storage", "push", "speaker", "storage-access", "top-level-storage-access", "window-management", "query"], a = Array.from({ length: (S == null ? void 0 : S.retries) || 3 }, function() {
|
|
3555
3555
|
return function() {
|
|
3556
|
-
return
|
|
3557
|
-
var n, r,
|
|
3558
|
-
return
|
|
3556
|
+
return y(this, void 0, void 0, function() {
|
|
3557
|
+
var n, r, o, i, t;
|
|
3558
|
+
return w(this, function(u) {
|
|
3559
3559
|
switch (u.label) {
|
|
3560
3560
|
case 0:
|
|
3561
|
-
n = {}, r = 0,
|
|
3561
|
+
n = {}, r = 0, o = I, u.label = 1;
|
|
3562
3562
|
case 1:
|
|
3563
|
-
if (!(r <
|
|
3564
|
-
|
|
3563
|
+
if (!(r < o.length)) return [3, 6];
|
|
3564
|
+
i = o[r], u.label = 2;
|
|
3565
3565
|
case 2:
|
|
3566
|
-
return u.trys.push([2, 4, , 5]), [4, navigator.permissions.query({ name:
|
|
3566
|
+
return u.trys.push([2, 4, , 5]), [4, navigator.permissions.query({ name: i })];
|
|
3567
3567
|
case 3:
|
|
3568
|
-
return t = u.sent(), n[
|
|
3568
|
+
return t = u.sent(), n[i] = t.state.toString(), [3, 5];
|
|
3569
3569
|
case 4:
|
|
3570
3570
|
return u.sent(), [3, 5];
|
|
3571
3571
|
case 5:
|
|
@@ -3577,7 +3577,7 @@ C().name != "Firefox" && v("fonts", function() {
|
|
|
3577
3577
|
});
|
|
3578
3578
|
}();
|
|
3579
3579
|
}), [2, Promise.all(a).then(function(n) {
|
|
3580
|
-
return ee(n,
|
|
3580
|
+
return ee(n, I);
|
|
3581
3581
|
})];
|
|
3582
3582
|
});
|
|
3583
3583
|
});
|
|
@@ -3600,18 +3600,18 @@ C().name != "Firefox" && v("fonts", function() {
|
|
|
3600
3600
|
a({ platform: window.navigator.platform, cookieEnabled: window.navigator.cookieEnabled, productSub: navigator.productSub, product: navigator.product, useragent: navigator.userAgent, hardwareConcurrency: navigator.hardwareConcurrency, browser: { name: e.name, version: e.version }, applePayVersion: ne() });
|
|
3601
3601
|
});
|
|
3602
3602
|
});
|
|
3603
|
-
var f, re = C().name !== "SamsungBrowser" ? 1 : 3,
|
|
3603
|
+
var f, re = C().name !== "SamsungBrowser" ? 1 : 3, d = null;
|
|
3604
3604
|
v("webgl", function() {
|
|
3605
|
-
return
|
|
3605
|
+
return y(this, void 0, void 0, function() {
|
|
3606
3606
|
var a;
|
|
3607
|
-
return
|
|
3608
|
-
typeof document < "u" && ((f = document.createElement("canvas")).width = 200, f.height = 100,
|
|
3607
|
+
return w(this, function(e) {
|
|
3608
|
+
typeof document < "u" && ((f = document.createElement("canvas")).width = 200, f.height = 100, d = f.getContext("webgl"));
|
|
3609
3609
|
try {
|
|
3610
|
-
if (!
|
|
3610
|
+
if (!d) throw new Error("WebGL not supported");
|
|
3611
3611
|
return a = Array.from({ length: re }, function() {
|
|
3612
3612
|
return function() {
|
|
3613
3613
|
try {
|
|
3614
|
-
if (!
|
|
3614
|
+
if (!d) throw new Error("WebGL not supported");
|
|
3615
3615
|
var n = `
|
|
3616
3616
|
attribute vec2 position;
|
|
3617
3617
|
void main() {
|
|
@@ -3622,31 +3622,31 @@ v("webgl", function() {
|
|
|
3622
3622
|
void main() {
|
|
3623
3623
|
gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color
|
|
3624
3624
|
}
|
|
3625
|
-
`,
|
|
3626
|
-
if (!
|
|
3627
|
-
if (
|
|
3628
|
-
if (
|
|
3629
|
-
var t =
|
|
3625
|
+
`, o = d.createShader(d.VERTEX_SHADER), i = d.createShader(d.FRAGMENT_SHADER);
|
|
3626
|
+
if (!o || !i) throw new Error("Failed to create shaders");
|
|
3627
|
+
if (d.shaderSource(o, n), d.shaderSource(i, r), d.compileShader(o), !d.getShaderParameter(o, d.COMPILE_STATUS)) throw new Error("Vertex shader compilation failed: " + d.getShaderInfoLog(o));
|
|
3628
|
+
if (d.compileShader(i), !d.getShaderParameter(i, d.COMPILE_STATUS)) throw new Error("Fragment shader compilation failed: " + d.getShaderInfoLog(i));
|
|
3629
|
+
var t = d.createProgram();
|
|
3630
3630
|
if (!t) throw new Error("Failed to create shader program");
|
|
3631
|
-
if (
|
|
3632
|
-
|
|
3633
|
-
for (var u = 137,
|
|
3634
|
-
var
|
|
3635
|
-
|
|
3631
|
+
if (d.attachShader(t, o), d.attachShader(t, i), d.linkProgram(t), !d.getProgramParameter(t, d.LINK_STATUS)) throw new Error("Shader program linking failed: " + d.getProgramInfoLog(t));
|
|
3632
|
+
d.useProgram(t);
|
|
3633
|
+
for (var u = 137, l = new Float32Array(4 * u), s = 2 * Math.PI / u, c = 0; c < u; c++) {
|
|
3634
|
+
var g = c * s;
|
|
3635
|
+
l[4 * c] = 0, l[4 * c + 1] = 0, l[4 * c + 2] = Math.cos(g) * (f.width / 2), l[4 * c + 3] = Math.sin(g) * (f.height / 2);
|
|
3636
3636
|
}
|
|
3637
|
-
var
|
|
3638
|
-
|
|
3639
|
-
var R =
|
|
3640
|
-
|
|
3637
|
+
var L = d.createBuffer();
|
|
3638
|
+
d.bindBuffer(d.ARRAY_BUFFER, L), d.bufferData(d.ARRAY_BUFFER, l, d.STATIC_DRAW);
|
|
3639
|
+
var R = d.getAttribLocation(t, "position");
|
|
3640
|
+
d.enableVertexAttribArray(R), d.vertexAttribPointer(R, 2, d.FLOAT, !1, 0, 0), d.viewport(0, 0, f.width, f.height), d.clearColor(0, 0, 0, 1), d.clear(d.COLOR_BUFFER_BIT), d.drawArrays(d.LINES, 0, 2 * u);
|
|
3641
3641
|
var x = new Uint8ClampedArray(f.width * f.height * 4);
|
|
3642
|
-
return
|
|
3642
|
+
return d.readPixels(0, 0, f.width, f.height, d.RGBA, d.UNSIGNED_BYTE, x), new ImageData(x, f.width, f.height);
|
|
3643
3643
|
} catch {
|
|
3644
3644
|
return new ImageData(1, 1);
|
|
3645
3645
|
} finally {
|
|
3646
|
-
|
|
3646
|
+
d && (d.bindBuffer(d.ARRAY_BUFFER, null), d.useProgram(null), d.viewport(0, 0, d.drawingBufferWidth, d.drawingBufferHeight), d.clearColor(0, 0, 0, 0));
|
|
3647
3647
|
}
|
|
3648
3648
|
}();
|
|
3649
|
-
}), [2, { commonImageHash:
|
|
3649
|
+
}), [2, { commonImageHash: _(q(a, f.width, f.height).data.toString()).toString() }];
|
|
3650
3650
|
} catch {
|
|
3651
3651
|
return [2, { webgl: "unsupported" }];
|
|
3652
3652
|
}
|
|
@@ -3655,13 +3655,13 @@ v("webgl", function() {
|
|
|
3655
3655
|
});
|
|
3656
3656
|
});
|
|
3657
3657
|
var b = function(a, e, n, r) {
|
|
3658
|
-
for (var
|
|
3659
|
-
|
|
3660
|
-
return
|
|
3658
|
+
for (var o = (n - e) / r, i = 0, t = 0; t < r; t++)
|
|
3659
|
+
i += a(e + (t + 0.5) * o);
|
|
3660
|
+
return i * o;
|
|
3661
3661
|
};
|
|
3662
3662
|
v("math", function() {
|
|
3663
|
-
return
|
|
3664
|
-
return
|
|
3663
|
+
return y(void 0, void 0, void 0, function() {
|
|
3664
|
+
return w(this, function(a) {
|
|
3665
3665
|
return [2, { acos: Math.acos(0.5), asin: b(Math.asin, -1, 1, 97), atan: b(Math.atan, -1, 1, 97), cos: b(Math.cos, 0, Math.PI, 97), cosh: Math.cosh(9 / 7), e: Math.E, largeCos: Math.cos(1e20), largeSin: Math.sin(1e20), largeTan: Math.tan(1e20), log: Math.log(1e3), pi: Math.PI, sin: b(Math.sin, -Math.PI, Math.PI, 97), sinh: b(Math.sinh, -9 / 7, 7 / 9, 97), sqrt: Math.sqrt(2), tan: b(Math.tan, 0, 2 * Math.PI, 97), tanh: b(Math.tanh, -9 / 7, 7 / 9, 97) }];
|
|
3666
3666
|
});
|
|
3667
3667
|
});
|
|
@@ -3681,9 +3681,11 @@ const initialSearchcraftStateValues = {
|
|
|
3681
3681
|
rangeValueForIndexFields: {},
|
|
3682
3682
|
searchTerm: '',
|
|
3683
3683
|
searchMode: 'fuzzy',
|
|
3684
|
+
searchClientRequest: undefined,
|
|
3684
3685
|
searchClientResponseItems: [],
|
|
3685
3686
|
searchResponseTimeTaken: undefined,
|
|
3686
3687
|
searchResponseFacetPrime: undefined,
|
|
3688
|
+
supplementalFacetPrime: undefined,
|
|
3687
3689
|
searchResultsCount: 0,
|
|
3688
3690
|
searchResultsPerPage: 20,
|
|
3689
3691
|
searchResultsPage: 1,
|
|
@@ -3783,7 +3785,7 @@ const searchcraftStore = zustand.createStore((_set, get) => {
|
|
|
3783
3785
|
}, functions.setSearchClientResponseItemsFromResponse, functions.setAdClientResponseItems);
|
|
3784
3786
|
},
|
|
3785
3787
|
setAdClientResponseItems: (items) => functions.set({ adClientResponseItems: items }),
|
|
3786
|
-
setSearchClientResponseItemsFromResponse: (response, items) => {
|
|
3788
|
+
setSearchClientResponseItemsFromResponse: (request, response, items, supplementalResponse) => {
|
|
3787
3789
|
const { facets, count = 0, time_taken = 0 } = response.data;
|
|
3788
3790
|
const state = functions.set((state) => {
|
|
3789
3791
|
return {
|
|
@@ -3795,12 +3797,14 @@ const searchcraftStore = zustand.createStore((_set, get) => {
|
|
|
3795
3797
|
count === state.searchResultsCount ? state.searchResultsPage : 1,
|
|
3796
3798
|
searchResultsCount: count,
|
|
3797
3799
|
searchResponseFacetPrime: facets,
|
|
3800
|
+
supplementalFacetPrime: supplementalResponse?.data.facets,
|
|
3801
|
+
searchClientRequest: request,
|
|
3798
3802
|
};
|
|
3799
3803
|
});
|
|
3800
3804
|
state.logger?.log(O.DEBUG, `Search results: ${JSON.stringify(items)}`);
|
|
3801
3805
|
state.logger?.log(O.DEBUG, `Facets from response: ${JSON.stringify(facets)}`);
|
|
3802
3806
|
},
|
|
3803
|
-
setInitialSearchClientResponseItemsFromResponse: (response, items) => {
|
|
3807
|
+
setInitialSearchClientResponseItemsFromResponse: (request, response, items) => {
|
|
3804
3808
|
const state = get();
|
|
3805
3809
|
const { count = 0, time_taken = 0 } = response.data;
|
|
3806
3810
|
functions.set((state) => {
|
|
@@ -3812,6 +3816,7 @@ const searchcraftStore = zustand.createStore((_set, get) => {
|
|
|
3812
3816
|
// Reset to first page when response count changes
|
|
3813
3817
|
count === state.searchResultsCount ? state.searchResultsPage : 1,
|
|
3814
3818
|
searchResultsCount: count,
|
|
3819
|
+
searchClientRequest: request,
|
|
3815
3820
|
};
|
|
3816
3821
|
});
|
|
3817
3822
|
state.logger?.log(O.DEBUG, `Search results: ${JSON.stringify(items)}`);
|
|
@@ -3839,12 +3844,6 @@ const searchcraftStore = zustand.createStore((_set, get) => {
|
|
|
3839
3844
|
*/
|
|
3840
3845
|
functions.set({
|
|
3841
3846
|
searchTerm,
|
|
3842
|
-
facetPathsForIndexFields: {},
|
|
3843
|
-
...(searchTerm.trim().length === 0 && {
|
|
3844
|
-
searchMode: 'fuzzy',
|
|
3845
|
-
sortType: null,
|
|
3846
|
-
orderByField: null,
|
|
3847
|
-
}),
|
|
3848
3847
|
});
|
|
3849
3848
|
},
|
|
3850
3849
|
setSearchClientResponseItems: (items) => functions.set({ searchClientResponseItems: items }),
|
|
@@ -3872,7 +3871,22 @@ const searchcraftStore = zustand.createStore((_set, get) => {
|
|
|
3872
3871
|
return stateObject;
|
|
3873
3872
|
});
|
|
3874
3873
|
|
|
3875
|
-
|
|
3874
|
+
/**
|
|
3875
|
+
* Helper function for getting a Node (FacetWithChildrenObject)
|
|
3876
|
+
* at a given path. Traverses the node tree to get the node.
|
|
3877
|
+
*/
|
|
3878
|
+
const getFacetTreeNodeAtPath = (tree, nodePaths) => {
|
|
3879
|
+
let cursor = tree;
|
|
3880
|
+
for (const nodePath of nodePaths) {
|
|
3881
|
+
cursor = cursor?.children[nodePath];
|
|
3882
|
+
}
|
|
3883
|
+
return cursor;
|
|
3884
|
+
};
|
|
3885
|
+
/**
|
|
3886
|
+
* Helper function to perform a deep merge.
|
|
3887
|
+
* Used for merging two branches of a facet tree together.
|
|
3888
|
+
*/
|
|
3889
|
+
const deepMergeWithSpread = (obj1, obj2) => {
|
|
3876
3890
|
const result = { ...obj1 };
|
|
3877
3891
|
for (const key in obj2) {
|
|
3878
3892
|
// biome-ignore lint/suspicious/noPrototypeBuiltins: <explanation>
|
|
@@ -3886,119 +3900,95 @@ function deepMergeWithSpread(obj1, obj2) {
|
|
|
3886
3900
|
}
|
|
3887
3901
|
}
|
|
3888
3902
|
return result;
|
|
3889
|
-
}
|
|
3903
|
+
};
|
|
3890
3904
|
/**
|
|
3891
|
-
* Given an array of facet paths, removes parent facet paths
|
|
3905
|
+
* Given an array of facet paths, removes parent facet paths so that only the
|
|
3906
|
+
* Leaf facets are sent with the search request.
|
|
3892
3907
|
*/
|
|
3893
3908
|
function removeSubstringMatches(arr) {
|
|
3894
3909
|
return arr.filter((entry, index, array) => !array.some((otherEntry, otherIndex) => otherIndex !== index && otherEntry.includes(entry)));
|
|
3895
3910
|
}
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
|
|
3901
|
-
|
|
3902
|
-
|
|
3903
|
-
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
3908
|
-
|
|
3909
|
-
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
const fragment = record[key];
|
|
3918
|
-
if (!fragment) {
|
|
3919
|
-
return;
|
|
3920
|
-
}
|
|
3921
|
-
if (fragment.path === '/') {
|
|
3922
|
-
return;
|
|
3923
|
-
}
|
|
3924
|
-
const pathParts = fragment.path.substring(1).split('/');
|
|
3925
|
-
let currentRoot = root;
|
|
3926
|
-
let currentPath = '';
|
|
3927
|
-
pathParts.forEach((part, index) => {
|
|
3928
|
-
const nextPath = `${currentPath}/${part}`;
|
|
3929
|
-
if (!currentRoot.children[nextPath]) {
|
|
3930
|
-
currentRoot.children[nextPath] = {
|
|
3931
|
-
count: 0,
|
|
3932
|
-
path: nextPath,
|
|
3933
|
-
children: {},
|
|
3911
|
+
/**
|
|
3912
|
+
* Merges a current facet tree with an incoming facet tree.
|
|
3913
|
+
*
|
|
3914
|
+
* At each branch, the incoming facet tree's facets override current facet tree
|
|
3915
|
+
*
|
|
3916
|
+
* @param currentTree
|
|
3917
|
+
* @param incomingTree
|
|
3918
|
+
*/
|
|
3919
|
+
const mergeFacetTrees = (currentTree, incomingTree) => {
|
|
3920
|
+
const mergedTree = structuredClone(currentTree);
|
|
3921
|
+
const merge = (currentBranch, nodePath) => {
|
|
3922
|
+
const mergedBranch = structuredClone(currentBranch);
|
|
3923
|
+
const incomingBranch = getFacetTreeNodeAtPath(incomingTree, nodePath);
|
|
3924
|
+
if (!incomingBranch) {
|
|
3925
|
+
return mergedBranch;
|
|
3926
|
+
}
|
|
3927
|
+
for (const nodeName of Object.keys(currentBranch.children)) {
|
|
3928
|
+
if (incomingBranch.children[nodeName]) {
|
|
3929
|
+
mergedBranch.children[nodeName] = {
|
|
3930
|
+
...deepMergeWithSpread(currentBranch.children[nodeName], incomingBranch.children[nodeName]),
|
|
3931
|
+
count: mergedBranch.children[nodeName]?.count || 0,
|
|
3934
3932
|
};
|
|
3935
3933
|
}
|
|
3936
|
-
if (
|
|
3937
|
-
|
|
3934
|
+
else if (mergedBranch.children[nodeName]) {
|
|
3935
|
+
mergedBranch.children[nodeName] = merge(mergedBranch.children[nodeName], [...nodePath, nodeName]);
|
|
3938
3936
|
}
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
});
|
|
3942
|
-
});
|
|
3943
|
-
return root;
|
|
3944
|
-
}
|
|
3945
|
-
function objectToFacet(childObject) {
|
|
3946
|
-
const transformed = {
|
|
3947
|
-
count: childObject.count,
|
|
3948
|
-
path: childObject.path,
|
|
3949
|
-
children: [],
|
|
3937
|
+
}
|
|
3938
|
+
return mergedBranch;
|
|
3950
3939
|
};
|
|
3951
|
-
|
|
3952
|
-
|
|
3953
|
-
}
|
|
3954
|
-
return transformed;
|
|
3955
|
-
}
|
|
3940
|
+
return merge(mergedTree, []);
|
|
3941
|
+
};
|
|
3956
3942
|
/**
|
|
3957
|
-
*
|
|
3943
|
+
* A function that converts a FacetWithChidrenArray to a complete FacetTree object.
|
|
3944
|
+
*
|
|
3945
|
+
* It uses the `path` of each Facet to build the tree.
|
|
3946
|
+
*
|
|
3947
|
+
* @param facetWithChildArray
|
|
3958
3948
|
*/
|
|
3959
|
-
|
|
3960
|
-
//
|
|
3961
|
-
const
|
|
3962
|
-
const paths2 = Object.keys(record2);
|
|
3963
|
-
// Find all parent paths in record2
|
|
3964
|
-
const parentPaths = new Set(paths2
|
|
3965
|
-
.filter((path) => path.split('/').length > 2) // Only consider paths with more than one level
|
|
3966
|
-
.map((path) => path.substring(0, path.lastIndexOf('/'))));
|
|
3967
|
-
// Filter out keys in record1 that share a parent path with any of the identified parent paths
|
|
3968
|
-
const filteredRecord = Object.fromEntries(paths1
|
|
3969
|
-
.filter((path) => !parentPaths.has(path.substring(0, path.lastIndexOf('/'))))
|
|
3970
|
-
.map((path) => [path, record1[path]]));
|
|
3971
|
-
return filteredRecord;
|
|
3972
|
-
}
|
|
3973
|
-
function mergeFacetRoots(fieldName, currentRoot, incomingRoot) {
|
|
3974
|
-
const currentArray = currentRoot[fieldName];
|
|
3975
|
-
const incomingArray = incomingRoot[fieldName];
|
|
3976
|
-
const currentRootFacetChild = {
|
|
3977
|
-
count: 0,
|
|
3949
|
+
const facetWithChildrenArrayToCompleteFacetTree = (rootArray) => {
|
|
3950
|
+
// 1) Start with an empty tree at root "/"
|
|
3951
|
+
const tree = {
|
|
3978
3952
|
path: '/',
|
|
3979
|
-
children: currentArray,
|
|
3980
|
-
};
|
|
3981
|
-
const incomingRootFacetChild = {
|
|
3982
3953
|
count: 0,
|
|
3983
|
-
|
|
3984
|
-
children: incomingArray,
|
|
3954
|
+
children: {},
|
|
3985
3955
|
};
|
|
3986
|
-
//
|
|
3987
|
-
const
|
|
3988
|
-
const
|
|
3989
|
-
|
|
3990
|
-
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
const mergedFacetChild = objectToFacet(mergedObject);
|
|
3998
|
-
return {
|
|
3999
|
-
[fieldName]: mergedFacetChild.children,
|
|
3956
|
+
// 2) Recursively collect all nodes except the implicit "/" itself
|
|
3957
|
+
const allFacets = [];
|
|
3958
|
+
const collect = (node) => {
|
|
3959
|
+
if (node.path !== '/') {
|
|
3960
|
+
allFacets.push({ path: node.path, count: node.count });
|
|
3961
|
+
}
|
|
3962
|
+
if (node.children) {
|
|
3963
|
+
for (const child of node.children) {
|
|
3964
|
+
collect(child);
|
|
3965
|
+
}
|
|
3966
|
+
}
|
|
4000
3967
|
};
|
|
4001
|
-
|
|
3968
|
+
collect(rootArray);
|
|
3969
|
+
// 3) Insert each flat node into our tree, creating missing ancestors
|
|
3970
|
+
for (const { path, count } of allFacets) {
|
|
3971
|
+
const segments = path.split('/').filter(Boolean); // "/sports/outdoors" -> ["sports","outdoors"]
|
|
3972
|
+
let cursor = tree; // start at the root
|
|
3973
|
+
for (const segment of segments) {
|
|
3974
|
+
// Build the full path of this level
|
|
3975
|
+
const prefixPath = cursor.path === '/' ? `/${segment}` : `${cursor.path}/${segment}`;
|
|
3976
|
+
// If this segment doesn't exist yet, create it
|
|
3977
|
+
if (!cursor.children[segment]) {
|
|
3978
|
+
cursor.children[segment] = {
|
|
3979
|
+
path: prefixPath,
|
|
3980
|
+
count: count,
|
|
3981
|
+
children: {},
|
|
3982
|
+
};
|
|
3983
|
+
}
|
|
3984
|
+
// Descend to the next level deeper
|
|
3985
|
+
cursor = cursor.children[segment];
|
|
3986
|
+
}
|
|
3987
|
+
// 4) now `cursor` is the node matching `path` — assign its real count
|
|
3988
|
+
cursor.count = count;
|
|
3989
|
+
}
|
|
3990
|
+
return tree;
|
|
3991
|
+
};
|
|
4002
3992
|
|
|
4003
3993
|
/**
|
|
4004
3994
|
* Given a document and a SearchResultMapping, return a mapped value from the document.
|
|
@@ -4031,30 +4021,6 @@ function getDocumentValueFromSearchResultMapping(document, mapping) {
|
|
|
4031
4021
|
.join(mapping.delimiter || ' ');
|
|
4032
4022
|
}
|
|
4033
4023
|
}
|
|
4034
|
-
/**
|
|
4035
|
-
* Convert different units of time to milliseconds.
|
|
4036
|
-
*
|
|
4037
|
-
* @param unit - The unit of time
|
|
4038
|
-
* @returns {number}
|
|
4039
|
-
*/
|
|
4040
|
-
function getMillis(unit) {
|
|
4041
|
-
const millisInHour = 60 * 60 * 1000;
|
|
4042
|
-
const millisInDay = 24 * millisInHour;
|
|
4043
|
-
const millisInMonth = 30 * millisInDay;
|
|
4044
|
-
const millisInYear = 365 * millisInDay;
|
|
4045
|
-
switch (unit) {
|
|
4046
|
-
case 'hour':
|
|
4047
|
-
return millisInHour;
|
|
4048
|
-
case 'day':
|
|
4049
|
-
return millisInDay;
|
|
4050
|
-
case 'month':
|
|
4051
|
-
return millisInMonth;
|
|
4052
|
-
case 'year':
|
|
4053
|
-
return millisInYear;
|
|
4054
|
-
default:
|
|
4055
|
-
return 3600000;
|
|
4056
|
-
}
|
|
4057
|
-
}
|
|
4058
4024
|
/**
|
|
4059
4025
|
* Format a number with commas as thousands separators.
|
|
4060
4026
|
*
|
|
@@ -4101,6 +4067,107 @@ function formatRelativeDate(dateInput, locale = 'en-US', options = {
|
|
|
4101
4067
|
}
|
|
4102
4068
|
return new Intl.DateTimeFormat(locale, options).format(date);
|
|
4103
4069
|
}
|
|
4070
|
+
/**
|
|
4071
|
+
* Given a date, returns the timestamp (in ms) for the start of the specified unit.
|
|
4072
|
+
*
|
|
4073
|
+
* @param unit - The unit to calculate the start of ('year' | 'month' | 'day' | 'hour').
|
|
4074
|
+
* @param timestamp - The date to evaluate.
|
|
4075
|
+
* @param offset - The number of units to offset by.
|
|
4076
|
+
* @returns The timestamp (in ms) for the start of the specified unit.
|
|
4077
|
+
*/
|
|
4078
|
+
function getStartOf(timestamp, unit, offset = 0) {
|
|
4079
|
+
const d = new Date(timestamp);
|
|
4080
|
+
switch (unit) {
|
|
4081
|
+
case 'year':
|
|
4082
|
+
return new Date(d.getFullYear() + offset, 0, 1, 0, 0, 0, 0).getTime();
|
|
4083
|
+
case 'month':
|
|
4084
|
+
return new Date(d.getFullYear(), d.getMonth() + offset, 1, 0, 0, 0, 0).getTime();
|
|
4085
|
+
case 'day':
|
|
4086
|
+
return new Date(d.getFullYear(), d.getMonth(), d.getDate() + offset, 0, 0, 0, 0).getTime();
|
|
4087
|
+
case 'hour':
|
|
4088
|
+
return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours() + offset, 0, 0, 0).getTime();
|
|
4089
|
+
default:
|
|
4090
|
+
throw new Error(`Unsupported unit: ${unit}`);
|
|
4091
|
+
}
|
|
4092
|
+
}
|
|
4093
|
+
/**
|
|
4094
|
+
* Given a start and end date, returns the difference in the number of the specified units.
|
|
4095
|
+
*
|
|
4096
|
+
* @param units - The unit to measure ('year' | 'month' | 'day' | 'hour').
|
|
4097
|
+
* @param startDate - The start date.
|
|
4098
|
+
* @param endDate - The end date.
|
|
4099
|
+
* @returns The difference in the given unit.
|
|
4100
|
+
*/
|
|
4101
|
+
function getDifferenceInUnits(unit, startTime, endTime) {
|
|
4102
|
+
const start = new Date(startTime);
|
|
4103
|
+
const end = new Date(endTime);
|
|
4104
|
+
switch (unit) {
|
|
4105
|
+
case 'year':
|
|
4106
|
+
return Math.abs(end.getFullYear() - start.getFullYear());
|
|
4107
|
+
case 'month':
|
|
4108
|
+
return Math.abs(end.getFullYear() * 12 +
|
|
4109
|
+
end.getMonth() -
|
|
4110
|
+
(start.getFullYear() * 12 + start.getMonth()));
|
|
4111
|
+
case 'day':
|
|
4112
|
+
return Math.floor(Math.abs(end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24));
|
|
4113
|
+
case 'hour':
|
|
4114
|
+
return Math.floor(Math.abs(end.getTime() - start.getTime()) / (1000 * 60 * 60));
|
|
4115
|
+
default:
|
|
4116
|
+
throw new Error(`Unsupported unit: ${unit}`);
|
|
4117
|
+
}
|
|
4118
|
+
}
|
|
4119
|
+
/**
|
|
4120
|
+
* Returns the ordinal representation of a day of the month.
|
|
4121
|
+
*/
|
|
4122
|
+
const getOrdinal = (n) => {
|
|
4123
|
+
if (n >= 11 && n <= 13)
|
|
4124
|
+
return `${n}th`;
|
|
4125
|
+
switch (n % 10) {
|
|
4126
|
+
case 1:
|
|
4127
|
+
return `${n}st`;
|
|
4128
|
+
case 2:
|
|
4129
|
+
return `${n}nd`;
|
|
4130
|
+
case 3:
|
|
4131
|
+
return `${n}rd`;
|
|
4132
|
+
default:
|
|
4133
|
+
return `${n}th`;
|
|
4134
|
+
}
|
|
4135
|
+
};
|
|
4136
|
+
/**
|
|
4137
|
+
* Given a granularity level, returns a formatted, human-readable, date string.
|
|
4138
|
+
*
|
|
4139
|
+
* @param granularity - The granularity level to display. The granularity level dictates how the date is formatted.
|
|
4140
|
+
* @param date - The date to format.
|
|
4141
|
+
*
|
|
4142
|
+
* @returns A formatted string representing the date at the specified granularity.
|
|
4143
|
+
*
|
|
4144
|
+
* @example
|
|
4145
|
+
* getFormattedDateString('year', new Date('2023-01-01')) // "2023"
|
|
4146
|
+
* getFormattedDateString('month', new Date('2023-01-01')) // "Jan 2023"
|
|
4147
|
+
* getFormattedDateString('day', new Date('2023-01-31')) // "Jan 31st, 2023"
|
|
4148
|
+
* getFormattedDateString('hour', new Date('2023-01-31T12:00:00')) // "Jan 31st, 12:00 PM"
|
|
4149
|
+
*/
|
|
4150
|
+
function getFormattedDateString(granularity, date) {
|
|
4151
|
+
const monthFormatter = new Intl.DateTimeFormat('en-US', { month: 'short' });
|
|
4152
|
+
switch (granularity) {
|
|
4153
|
+
case 'year':
|
|
4154
|
+
return date.getFullYear().toString();
|
|
4155
|
+
case 'month':
|
|
4156
|
+
return `${monthFormatter.format(date)} ${date.getFullYear()}`;
|
|
4157
|
+
case 'day':
|
|
4158
|
+
return `${monthFormatter.format(date)} ${getOrdinal(date.getDate())}, ${date.getFullYear()}`;
|
|
4159
|
+
case 'hour': {
|
|
4160
|
+
const timeFormatter = new Intl.DateTimeFormat('en-US', {
|
|
4161
|
+
hour: 'numeric',
|
|
4162
|
+
minute: '2-digit',
|
|
4163
|
+
hour12: true,
|
|
4164
|
+
});
|
|
4165
|
+
return `${monthFormatter.format(date)} ${getOrdinal(date.getDate())}, ${timeFormatter.format(date)}`;
|
|
4166
|
+
}
|
|
4167
|
+
default:
|
|
4168
|
+
throw new Error(`Unsupported granularity: ${granularity}`);
|
|
4169
|
+
}
|
|
4170
|
+
}
|
|
4104
4171
|
|
|
4105
4172
|
var purify = {exports: {}};
|
|
4106
4173
|
|
|
@@ -5495,65 +5562,175 @@ class SearchcraftFacetList {
|
|
|
5495
5562
|
*/
|
|
5496
5563
|
fieldName = '';
|
|
5497
5564
|
/**
|
|
5498
|
-
*
|
|
5565
|
+
* Emitted when the facets are updated.
|
|
5499
5566
|
*/
|
|
5500
5567
|
facetSelectionUpdated;
|
|
5501
|
-
|
|
5502
|
-
|
|
5568
|
+
/**
|
|
5569
|
+
* The currently selected facet paths.
|
|
5570
|
+
*/
|
|
5503
5571
|
selectedPaths = {};
|
|
5572
|
+
/**
|
|
5573
|
+
* A Tree representing all of the facets collected from search responses.
|
|
5574
|
+
*/
|
|
5575
|
+
facetTreeCollectedFromSearchResponse = {
|
|
5576
|
+
path: '/',
|
|
5577
|
+
count: 0,
|
|
5578
|
+
children: {},
|
|
5579
|
+
};
|
|
5580
|
+
/**
|
|
5581
|
+
* A Tree representing the facet paths that are selected, but were not included
|
|
5582
|
+
* in any search response.
|
|
5583
|
+
*/
|
|
5584
|
+
facetTreeFromFacetPathsNotInSearchResponse = {
|
|
5585
|
+
path: '/',
|
|
5586
|
+
count: 0,
|
|
5587
|
+
children: {},
|
|
5588
|
+
};
|
|
5589
|
+
/**
|
|
5590
|
+
* The facet tree that ultimately gets rendered.
|
|
5591
|
+
* This is a mergin of the facetTreeCollectedFromSearchResponse and the facetTreeFromFacetPathsNotInSearchResponse tree
|
|
5592
|
+
*/
|
|
5593
|
+
renderedFacetTree = {
|
|
5594
|
+
path: '/',
|
|
5595
|
+
count: 0,
|
|
5596
|
+
children: {},
|
|
5597
|
+
};
|
|
5598
|
+
// Internal vars used to track when to perform various facet actions.
|
|
5504
5599
|
lastTimeTaken;
|
|
5505
|
-
hasNewSearchTerm = false;
|
|
5506
5600
|
lastSearchTerm;
|
|
5507
5601
|
lastSearchMode;
|
|
5508
5602
|
lastSortType;
|
|
5603
|
+
lastRangeValues;
|
|
5604
|
+
lastFacetValues;
|
|
5509
5605
|
unsubscribe;
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5516
|
-
|
|
5517
|
-
|
|
5518
|
-
|
|
5519
|
-
|
|
5520
|
-
|
|
5521
|
-
|
|
5522
|
-
|
|
5523
|
-
|
|
5524
|
-
|
|
5525
|
-
|
|
5526
|
-
|
|
5527
|
-
|
|
5528
|
-
|
|
5529
|
-
|
|
5530
|
-
|
|
5531
|
-
|
|
5532
|
-
|
|
5533
|
-
this.
|
|
5534
|
-
|
|
5535
|
-
|
|
5606
|
+
get areAnyFacetPathsSelected() {
|
|
5607
|
+
return Object.keys(this.selectedPaths).some((key) => this.selectedPaths[key]);
|
|
5608
|
+
}
|
|
5609
|
+
handleIncomingSearchResponse(state, actionType) {
|
|
5610
|
+
// Look at the incoming facet root from the search response, and convert it to a FacetTree
|
|
5611
|
+
const incomingFacetRoot = state.searchResponseFacetPrime?.find((facet) => this.fieldName === Object.keys(facet)[0]);
|
|
5612
|
+
const incomingFacetsWithChildrenArray = incomingFacetRoot?.[this.fieldName];
|
|
5613
|
+
const incomingFacetTree = facetWithChildrenArrayToCompleteFacetTree({
|
|
5614
|
+
path: '/',
|
|
5615
|
+
count: 0,
|
|
5616
|
+
children: incomingFacetsWithChildrenArray || [],
|
|
5617
|
+
});
|
|
5618
|
+
// Determine what action to take to accumulate items into the `facetTreeCollectedFromSearchResponse`.
|
|
5619
|
+
// This facet tree gets accumulated in different ways depending on what action type occured.
|
|
5620
|
+
switch (actionType) {
|
|
5621
|
+
case 'SEARCH_TERM_EMPTY':
|
|
5622
|
+
this.facetTreeCollectedFromSearchResponse = {
|
|
5623
|
+
path: '/',
|
|
5624
|
+
count: 0,
|
|
5625
|
+
children: {},
|
|
5626
|
+
};
|
|
5627
|
+
break;
|
|
5628
|
+
case 'NEW_SEARCH_TERM':
|
|
5629
|
+
this.facetTreeCollectedFromSearchResponse = incomingFacetTree;
|
|
5630
|
+
break;
|
|
5631
|
+
case 'NEW_SEARCH_TERM_WHILE_FACETS_ACTIVE':
|
|
5632
|
+
case 'EXACT_MATCH_UPDATE':
|
|
5633
|
+
case 'RANGE_VALUE_UPDATE': {
|
|
5634
|
+
if (state.supplementalFacetPrime) {
|
|
5635
|
+
const supplementalFacetRoot = state.supplementalFacetPrime?.find((facet) => this.fieldName === Object.keys(facet)[0]);
|
|
5636
|
+
const supplementalFacetsWithChildrenArray = supplementalFacetRoot?.[this.fieldName];
|
|
5637
|
+
const supplementalFacetTree = facetWithChildrenArrayToCompleteFacetTree({
|
|
5638
|
+
path: '/',
|
|
5639
|
+
count: 0,
|
|
5640
|
+
children: supplementalFacetsWithChildrenArray || [],
|
|
5641
|
+
});
|
|
5642
|
+
this.facetTreeCollectedFromSearchResponse = mergeFacetTrees(supplementalFacetTree, incomingFacetTree);
|
|
5643
|
+
}
|
|
5644
|
+
else {
|
|
5645
|
+
this.facetTreeCollectedFromSearchResponse = incomingFacetTree;
|
|
5646
|
+
}
|
|
5647
|
+
break;
|
|
5536
5648
|
}
|
|
5537
|
-
|
|
5538
|
-
|
|
5539
|
-
this.
|
|
5649
|
+
case 'FACET_UPDATE':
|
|
5650
|
+
case 'SORT_ORDER_UPDATE':
|
|
5651
|
+
this.facetTreeCollectedFromSearchResponse = mergeFacetTrees(this.facetTreeCollectedFromSearchResponse, incomingFacetTree);
|
|
5652
|
+
break;
|
|
5653
|
+
default:
|
|
5654
|
+
return;
|
|
5655
|
+
}
|
|
5656
|
+
// Determine if there are any selected facet paths not in the current tree.
|
|
5657
|
+
// If there are, we add them to "facetTreeFromFacetPathsNotInSearchResponse"
|
|
5658
|
+
this.facetTreeFromFacetPathsNotInSearchResponse = {
|
|
5659
|
+
path: '/',
|
|
5660
|
+
count: 0,
|
|
5661
|
+
children: {},
|
|
5662
|
+
};
|
|
5663
|
+
const collectedFacetArray = {
|
|
5664
|
+
path: '/',
|
|
5665
|
+
count: 0,
|
|
5666
|
+
children: [],
|
|
5667
|
+
};
|
|
5668
|
+
for (const pathName of Object.keys(this.selectedPaths).filter((path) => this.selectedPaths[path])) {
|
|
5669
|
+
const nodePaths = pathName.startsWith('/')
|
|
5670
|
+
? pathName.substring(1).split('/')
|
|
5671
|
+
: pathName.split('/');
|
|
5672
|
+
const wasFoundInFacetTree = !!getFacetTreeNodeAtPath(this.facetTreeCollectedFromSearchResponse, nodePaths);
|
|
5673
|
+
const pathKeyName = nodePaths.at(-1);
|
|
5674
|
+
if (!wasFoundInFacetTree && pathKeyName) {
|
|
5675
|
+
collectedFacetArray.children?.push({
|
|
5676
|
+
children: [],
|
|
5677
|
+
count: 0,
|
|
5678
|
+
path: pathName,
|
|
5679
|
+
});
|
|
5540
5680
|
}
|
|
5541
5681
|
}
|
|
5542
|
-
|
|
5543
|
-
|
|
5544
|
-
|
|
5545
|
-
|
|
5546
|
-
|
|
5547
|
-
|
|
5548
|
-
|
|
5682
|
+
this.facetTreeFromFacetPathsNotInSearchResponse =
|
|
5683
|
+
facetWithChildrenArrayToCompleteFacetTree(collectedFacetArray);
|
|
5684
|
+
// Merges facetTreeCollectedFromSearchResponse with selectedFacetPathsNotInCurrentFacetTree.
|
|
5685
|
+
// This results in a single, final facet tree that gets rendered in as Checkboxes
|
|
5686
|
+
this.renderedFacetTree = deepMergeWithSpread(this.facetTreeFromFacetPathsNotInSearchResponse, this.facetTreeCollectedFromSearchResponse);
|
|
5687
|
+
}
|
|
5688
|
+
handleStateUpdate(_state) {
|
|
5689
|
+
const state = { ..._state };
|
|
5690
|
+
// Determine what action to take based on the current State
|
|
5691
|
+
if (state.searchTerm.trim() === '') {
|
|
5692
|
+
this.handleIncomingSearchResponse(state, 'SEARCH_TERM_EMPTY');
|
|
5693
|
+
this.lastSearchTerm = '';
|
|
5694
|
+
}
|
|
5695
|
+
else if (this.lastTimeTaken !== state.searchResponseTimeTaken &&
|
|
5696
|
+
state.searchClientRequest &&
|
|
5697
|
+
typeof state.searchClientRequest === 'object') {
|
|
5698
|
+
const request = state.searchClientRequest;
|
|
5699
|
+
let actionType = 'UNKNOWN';
|
|
5700
|
+
if (this.lastSearchTerm !== request.searchTerm) {
|
|
5701
|
+
if (this.areAnyFacetPathsSelected) {
|
|
5702
|
+
actionType = 'NEW_SEARCH_TERM_WHILE_FACETS_ACTIVE';
|
|
5703
|
+
}
|
|
5704
|
+
else {
|
|
5705
|
+
actionType = 'NEW_SEARCH_TERM';
|
|
5706
|
+
}
|
|
5707
|
+
}
|
|
5708
|
+
else if (this.lastRangeValues !==
|
|
5709
|
+
JSON.stringify(request.rangeValueForIndexFields)) {
|
|
5710
|
+
actionType = 'RANGE_VALUE_UPDATE';
|
|
5711
|
+
}
|
|
5712
|
+
else if (this.lastFacetValues !==
|
|
5713
|
+
JSON.stringify(request.facetPathsForIndexFields)) {
|
|
5714
|
+
actionType = 'FACET_UPDATE';
|
|
5715
|
+
}
|
|
5716
|
+
else if (this.lastSortType !== request.order_by) {
|
|
5717
|
+
actionType = 'SORT_ORDER_UPDATE';
|
|
5718
|
+
}
|
|
5719
|
+
else if (this.lastSearchMode !== request.mode) {
|
|
5720
|
+
actionType = 'EXACT_MATCH_UPDATE';
|
|
5721
|
+
}
|
|
5722
|
+
this.lastRangeValues = JSON.stringify(request.rangeValueForIndexFields);
|
|
5723
|
+
this.lastFacetValues = JSON.stringify(request.facetPathsForIndexFields);
|
|
5724
|
+
this.lastSortType = request.order_by;
|
|
5725
|
+
this.lastSearchMode = request.mode;
|
|
5726
|
+
this.lastSearchTerm = request.searchTerm;
|
|
5727
|
+
this.lastTimeTaken = state.searchResponseTimeTaken;
|
|
5728
|
+
// Handle the incoming response, using the action we have determined.
|
|
5729
|
+
this.handleIncomingSearchResponse(state, actionType);
|
|
5549
5730
|
}
|
|
5550
|
-
this.lastSearchTerm = state.searchTerm;
|
|
5551
|
-
this.lastSearchMode = state.searchMode;
|
|
5552
|
-
this.lastSortType = state.sortType;
|
|
5553
|
-
this.lastTimeTaken = timeTaken;
|
|
5554
5731
|
}
|
|
5555
5732
|
connectedCallback() {
|
|
5556
|
-
this.handleStateUpdate(
|
|
5733
|
+
this.handleStateUpdate(searchcraftStore.getState());
|
|
5557
5734
|
this.unsubscribe = searchcraftStore.subscribe((state) => {
|
|
5558
5735
|
this.handleStateUpdate(state);
|
|
5559
5736
|
});
|
|
@@ -5590,44 +5767,58 @@ class SearchcraftFacetList {
|
|
|
5590
5767
|
const pathsWithParentPathsRemoved = removeSubstringMatches(paths);
|
|
5591
5768
|
this.facetSelectionUpdated?.emit({ paths: pathsWithParentPathsRemoved });
|
|
5592
5769
|
}
|
|
5593
|
-
|
|
5594
|
-
const label =
|
|
5595
|
-
|
|
5596
|
-
return `${label.replace(/-/g, ' ').replace(/\b\w/g, (char) => char.toUpperCase())} (${count})`;
|
|
5597
|
-
};
|
|
5598
|
-
formatSubLabel = (facetChild, facetChildAncestor) => {
|
|
5599
|
-
const facetChildPath = facetChild.path.substring(facetChildAncestor.path.length);
|
|
5600
|
-
const label = facetChildPath.replace(/^\//, '');
|
|
5601
|
-
const count = facetChild.count;
|
|
5602
|
-
return `${label.replace(/-/g, ' ').replace(/\b\w/g, (char) => char.toUpperCase())} (${count})`;
|
|
5770
|
+
formatFacetName = (name) => {
|
|
5771
|
+
const label = name.replace(/^\//, '');
|
|
5772
|
+
return `${label.replace(/-/g, ' ').replace(/\b\w/g, (char) => char.toUpperCase())}`;
|
|
5603
5773
|
};
|
|
5774
|
+
renderFacet(keyName, facet) {
|
|
5775
|
+
let isChildSelected = false;
|
|
5776
|
+
for (const path of Object.keys(this.selectedPaths)) {
|
|
5777
|
+
if (this.selectedPaths[path] &&
|
|
5778
|
+
path.startsWith(facet.path) &&
|
|
5779
|
+
path.length > facet.path.length) {
|
|
5780
|
+
isChildSelected = true;
|
|
5781
|
+
}
|
|
5782
|
+
}
|
|
5783
|
+
const isSelected = Object.keys(this.selectedPaths).includes(facet.path);
|
|
5784
|
+
const shouldRenderChildren = (Object.keys(facet.children).length > 0 &&
|
|
5785
|
+
(isSelected || isChildSelected)) ||
|
|
5786
|
+
keyName === '@@root';
|
|
5787
|
+
return (hAsync("div", { class: 'searchcraft-facet-list-item' }, keyName !== '@@root' && (hAsync("label", { class: 'searchcraft-facet-list-checkbox-label' }, hAsync("div", { class: 'searchcraft-facet-list-checkbox-input-wrapper' }, hAsync("input", { class: 'searchcraft-facet-list-checkbox-input', checked: this.selectedPaths[facet.path], onChange: (_event) => {
|
|
5788
|
+
this.handleCheckboxChange(facet.path);
|
|
5789
|
+
}, type: 'checkbox' }), isChildSelected ? (hAsync("div", { class: 'searchcraft-facet-list-checkbox-input-dash-icon' }, hAsync("svg", { viewBox: '0 0 14 3', fill: 'none' }, hAsync("title", null, "Checkbox dash"), hAsync("line", { x1: '1.5', y1: '1.5', x2: '12.5', y2: '1.5', stroke: 'white', "stroke-width": '3', "stroke-linecap": 'round' })))) : (hAsync("div", { class: 'searchcraft-facet-list-checkbox-input-check-icon' }, hAsync("svg", { width: '16', height: '16', viewBox: '0 0 16 16', fill: 'none' }, hAsync("title", null, "Checkbox check"), hAsync("path", { d: 'M13.9999 2L5.74988 10L1.99988 6.36364', stroke: 'white', "stroke-width": '3', "stroke-linecap": 'round', "stroke-linejoin": 'round' }))))), hAsync("span", null, this.formatFacetName(keyName), " (", facet.count, ")"))), shouldRenderChildren && (hAsync("div", { class: 'searchcraft-facet-list', style: {
|
|
5790
|
+
paddingLeft: keyName !== '@@root' ? '24px' : '0px',
|
|
5791
|
+
paddingTop: keyName !== '@@root' ? '6px' : '0px',
|
|
5792
|
+
} }, Object.keys(facet.children).map((key) => {
|
|
5793
|
+
if (facet.children[key]) {
|
|
5794
|
+
return this.renderFacet(key, facet.children[key]);
|
|
5795
|
+
}
|
|
5796
|
+
})))));
|
|
5797
|
+
}
|
|
5604
5798
|
render() {
|
|
5605
5799
|
if (!this.fieldName) {
|
|
5606
5800
|
return;
|
|
5607
5801
|
}
|
|
5608
|
-
|
|
5609
|
-
|
|
5610
|
-
|
|
5611
|
-
|
|
5612
|
-
|
|
5613
|
-
|
|
5614
|
-
|
|
5615
|
-
|
|
5616
|
-
|
|
5617
|
-
|
|
5618
|
-
|
|
5619
|
-
}, type: 'checkbox' }), hAsync("div", { class: 'searchcraft-facet-list-checkbox-input-check-icon searchcraft-facet-child-list-checkbox-input-check-icon' }, hAsync("svg", { width: '16', height: '16', viewBox: '0 0 16 16', fill: 'none' }, hAsync("title", null, "Checkbox check"), hAsync("path", { d: 'M13.9999 2L5.74988 10L1.99988 6.36364', stroke: 'white', "stroke-width": '3', "stroke-linecap": 'round', "stroke-linejoin": 'round' })))), this.formatSubLabel(grandchild, facetChild))))))));
|
|
5620
|
-
})));
|
|
5802
|
+
if (Object.keys(this.facetTreeCollectedFromSearchResponse.children).length ===
|
|
5803
|
+
0 &&
|
|
5804
|
+
(this.lastSearchTerm || '').trim().length === 0) {
|
|
5805
|
+
return;
|
|
5806
|
+
}
|
|
5807
|
+
if (Object.keys(this.facetTreeCollectedFromSearchResponse.children).length ===
|
|
5808
|
+
0 &&
|
|
5809
|
+
(this.lastSearchTerm || '').trim().length > 0) {
|
|
5810
|
+
return (hAsync("p", { class: 'searchcraft-facet-list-message' }, "No facets are available for this search query."));
|
|
5811
|
+
}
|
|
5812
|
+
return (hAsync("div", { class: 'searchcraft-facet-list' }, this.renderFacet('@@root', this.renderedFacetTree)));
|
|
5621
5813
|
}
|
|
5622
5814
|
static get cmpMeta() { return {
|
|
5623
5815
|
"$flags$": 0,
|
|
5624
5816
|
"$tagName$": "searchcraft-facet-list",
|
|
5625
5817
|
"$members$": {
|
|
5626
5818
|
"fieldName": [1, "field-name"],
|
|
5627
|
-
"baseFacetRoot": [32],
|
|
5628
|
-
"facetRoot": [32],
|
|
5629
5819
|
"selectedPaths": [32],
|
|
5630
|
-
"
|
|
5820
|
+
"facetTreeCollectedFromSearchResponse": [32],
|
|
5821
|
+
"renderedFacetTree": [32]
|
|
5631
5822
|
},
|
|
5632
5823
|
"$listeners$": undefined,
|
|
5633
5824
|
"$lazyBundleId$": "-",
|
|
@@ -5692,12 +5883,12 @@ class SearchcraftFilterPanel {
|
|
|
5692
5883
|
disconnectedCallback() {
|
|
5693
5884
|
this.unsubscribe?.();
|
|
5694
5885
|
}
|
|
5695
|
-
handleDateRangeChanged(
|
|
5696
|
-
const start = new Date(
|
|
5697
|
-
const end = new Date(
|
|
5886
|
+
handleDateRangeChanged(item, min, max) {
|
|
5887
|
+
const start = new Date(min);
|
|
5888
|
+
const end = new Date(max);
|
|
5698
5889
|
this.searchStore.addRangeValueForIndexField({
|
|
5699
|
-
fieldName,
|
|
5700
|
-
value: `${fieldName}:[${start.toISOString()} TO ${end.toISOString()}]`,
|
|
5890
|
+
fieldName: item.fieldName,
|
|
5891
|
+
value: `${item.fieldName}:[${start.toISOString()} TO ${end.toISOString()}]`,
|
|
5701
5892
|
});
|
|
5702
5893
|
this.searchStore.search();
|
|
5703
5894
|
}
|
|
@@ -5743,22 +5934,19 @@ class SearchcraftFilterPanel {
|
|
|
5743
5934
|
* Iterate through `items` and render them based on `type`
|
|
5744
5935
|
*/
|
|
5745
5936
|
render() {
|
|
5746
|
-
return (hAsync("div", { key: '
|
|
5937
|
+
return (hAsync("div", { key: 'fb5fce357783f39b0a2846a0bd99994faa5e742d', class: 'searchcraft-filter-panel' }, this.items.map((filterItem) => {
|
|
5747
5938
|
switch (filterItem.type) {
|
|
5748
5939
|
case 'dateRange': {
|
|
5749
5940
|
const item = filterItem;
|
|
5750
|
-
const min = new Date(item.options.minDate).getTime();
|
|
5751
|
-
const max = new Date(item.options.maxDate).getTime();
|
|
5752
|
-
const granularityValue = getMillis(item.options.granularity);
|
|
5753
5941
|
// return date range slider
|
|
5754
|
-
return (hAsync("div", { class: 'searchcraft-filter-panel-section' }, hAsync("p", { class: 'searchcraft-filter-panel-label' }, filterItem.label), hAsync("searchcraft-slider", { min:
|
|
5755
|
-
this.handleDateRangeChanged(item
|
|
5942
|
+
return (hAsync("div", { class: 'searchcraft-filter-panel-section' }, hAsync("p", { class: 'searchcraft-filter-panel-label' }, filterItem.label), hAsync("searchcraft-slider", { min: item.options.minDate.getTime(), max: item.options.maxDate.getTime(), dataType: 'date', step: 1, dateGranularity: item.options.granularity, onRangeChanged: (event) => {
|
|
5943
|
+
this.handleDateRangeChanged(item, event.detail.startValue, event.detail.endValue);
|
|
5756
5944
|
} })));
|
|
5757
5945
|
}
|
|
5758
5946
|
case 'numericRange': {
|
|
5759
5947
|
const item = filterItem;
|
|
5760
5948
|
// return date range slider
|
|
5761
|
-
return (hAsync("div", { class: 'searchcraft-filter-panel-section' }, hAsync("p", { class: 'searchcraft-filter-panel-label' }, filterItem.label), hAsync("searchcraft-slider", { min: item.options.min, max: item.options.max,
|
|
5949
|
+
return (hAsync("div", { class: 'searchcraft-filter-panel-section' }, hAsync("p", { class: 'searchcraft-filter-panel-label' }, filterItem.label), hAsync("searchcraft-slider", { min: item.options.min, max: item.options.max, step: item.options.granularity, onRangeChanged: (event) => {
|
|
5762
5950
|
this.handleNumericRangeChanged(item.fieldName, event.detail.startValue, event.detail.endValue);
|
|
5763
5951
|
} })));
|
|
5764
5952
|
}
|
|
@@ -5854,6 +6042,12 @@ class SearchcraftInputForm {
|
|
|
5854
6042
|
* The input element's placeholder value.
|
|
5855
6043
|
*/
|
|
5856
6044
|
placeholderValue = 'Enter Search';
|
|
6045
|
+
/**
|
|
6046
|
+
* The placeholder's render behavior.
|
|
6047
|
+
* 'hide-on-focus' - Hide the placeholder text immediately when the input form gains focus.
|
|
6048
|
+
* 'hide-on-text-entered' - Only hide the placeholder when the input form has text entered into it.
|
|
6049
|
+
*/
|
|
6050
|
+
placeholderBehavior;
|
|
5857
6051
|
/**
|
|
5858
6052
|
* When the input becomes focused.
|
|
5859
6053
|
*/
|
|
@@ -5897,22 +6091,18 @@ class SearchcraftInputForm {
|
|
|
5897
6091
|
handleInput = (event) => {
|
|
5898
6092
|
const input = event.target;
|
|
5899
6093
|
this.inputValue = input.value;
|
|
6094
|
+
this.searchcraftStore.setSearchTerm(input.value);
|
|
5900
6095
|
if (!this.autoSearch) {
|
|
5901
6096
|
return;
|
|
5902
6097
|
}
|
|
5903
|
-
this.performSearch(
|
|
6098
|
+
this.performSearch();
|
|
5904
6099
|
};
|
|
5905
|
-
performSearch = async (
|
|
5906
|
-
if (searchTerm === this.searchTerm) {
|
|
5907
|
-
return;
|
|
5908
|
-
}
|
|
5909
|
-
this.searchcraftStore.setSearchTerm(searchTerm.trim());
|
|
6100
|
+
performSearch = async () => {
|
|
5910
6101
|
this.error = false;
|
|
5911
6102
|
try {
|
|
5912
6103
|
await this.searchcraftStore.search();
|
|
5913
6104
|
}
|
|
5914
6105
|
catch (error) {
|
|
5915
|
-
console.error(`Search for ${searchTerm} failed:`, error);
|
|
5916
6106
|
this.error = true;
|
|
5917
6107
|
}
|
|
5918
6108
|
};
|
|
@@ -5927,7 +6117,7 @@ class SearchcraftInputForm {
|
|
|
5927
6117
|
};
|
|
5928
6118
|
handleFormSubmit = async (event) => {
|
|
5929
6119
|
event.preventDefault();
|
|
5930
|
-
await this.performSearch(
|
|
6120
|
+
await this.performSearch();
|
|
5931
6121
|
};
|
|
5932
6122
|
render() {
|
|
5933
6123
|
const isShowingClearButton = this.inputValue.length > 0;
|
|
@@ -5940,9 +6130,11 @@ class SearchcraftInputForm {
|
|
|
5940
6130
|
const inputGridStyles = {
|
|
5941
6131
|
gap: shouldHaveVerticalGap ? '4px 8px' : '0px 8px',
|
|
5942
6132
|
};
|
|
5943
|
-
return (hAsync("form", { key: '
|
|
6133
|
+
return (hAsync("form", { key: 'd0654def009278279b7edeeccc6044d999c0d5b0', class: 'searchcraft-input-form', onSubmit: this.handleFormSubmit }, hAsync("div", { key: '27978b08e46e0f8ecdf6dc95a74c962d85f5e9ff', class: inputGridClassNames, style: inputGridStyles }, hAsync("div", { key: '1f7cecc80a84bfc46c994971cd751d2b65af6d83', class: 'searchcraft-input-form-button' }, hAsync("searchcraft-button", { key: 'b3f2078604c380eef895be103b2bdf5cef6bca84', onButtonClick: this.handleFormSubmit, label: this.buttonLabel })), this.inputLabel && (hAsync("div", { key: 'b33c0d3cbb3512964c3a47a2c354a610fa6faa09', class: 'searchcraft-input-form-label' }, hAsync("searchcraft-input-label", { key: 'e620088318c82e2e70d885bd3ee2c88ef8118e7c', label: this.inputLabel }))), this.error && (hAsync("div", { key: 'c3a20576917aaa33cc12df5ee5b479f87d628de7', class: 'searchcraft-input-form-error-message' }, hAsync("searchcraft-error-message", { key: 'f48e54a236b7a33fa55bab7f29d3b321be0bbb77' }, "Something went wrong."))), hAsync("div", { key: 'ebda089a3b8698892fd6cebcbaf89582a1bb21a2', class: 'searchcraft-input-form-input-wrapper' }, hAsync("input", { key: 'd7ea7b49f7d65067924168fc281033841a71d419', autoComplete: 'off', class: classNames('searchcraft-input-form-input', {
|
|
6134
|
+
'searchcraft-placeholder-hide-on-focus': this.placeholderBehavior === 'hide-on-focus',
|
|
6135
|
+
}), onFocus: () => this.inputFocus?.emit(), onBlur: () => this.inputBlur?.emit(), onInput: (event) => {
|
|
5944
6136
|
this.handleInput(event);
|
|
5945
|
-
}, placeholder: this.placeholderValue, type: 'text', value: this.inputValue }), hAsync("div", { key: '
|
|
6137
|
+
}, placeholder: this.placeholderValue, type: 'text', value: this.inputValue }), hAsync("div", { key: '6dd4a02322072467a104938a47626592658eaa1e', class: 'searchcraft-input-form-input-icon' }, hAsync("svg", { key: '26a4deabe9149db6db219e49fcccbbe7688e9f0a', class: 'searchcraft-input-form-input-search-icon', viewBox: '0 0 20 20', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-labelledby": 'searchcraft-title' }, hAsync("title", { key: 'eff07788d2edaead45a60d8ac20e5d1d694c5165' }, "Search icon"), hAsync("path", { key: '9083cf32c8f749210232b51b1f5934a3c32b109f', d: 'M17.5 17.5L13.875 13.875M15.8333 9.16667C15.8333 12.8486 12.8486 15.8333 9.16667 15.8333C5.48477 15.8333 2.5 12.8486 2.5 9.16667C2.5 5.48477 5.48477 2.5 9.16667 2.5C12.8486 2.5 15.8333 5.48477 15.8333 9.16667Z', stroke: 'currentColor', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' }))), isShowingClearButton && (hAsync("button", { key: '0b2117ae2510fe743b11d8e638e981ee0f7e4760', type: 'button', class: 'searchcraft-input-form-clear-button', onClick: this.handleClearInput }, hAsync("svg", { key: '3fbb57c1b6486638286e1010639751a83a75f489', class: 'searchcraft-input-form-clear-icon', viewBox: '0 0 22 22', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', "aria-labelledby": 'icon-title' }, hAsync("title", { key: '84ce771c55c072b4339babb136639469b68a1f9b' }, "Clear icon"), hAsync("path", { key: '811f5fc9cc708f80004f1cf50ddcd85de05f3b6b', d: 'M14 8L8 14M8 8L14 14M21 11C21 16.5228 16.5228 21 11 21C5.47715 21 1 16.5228 1 11C1 5.47715 5.47715 1 11 1C16.5228 1 21 5.47715 21 11Z', stroke: 'currentColor', "stroke-width": '1.5', "stroke-linecap": 'round', "stroke-linejoin": 'round' }))))))));
|
|
5946
6138
|
}
|
|
5947
6139
|
static get watchers() { return {
|
|
5948
6140
|
"core": ["onCoreChange"]
|
|
@@ -5956,6 +6148,7 @@ class SearchcraftInputForm {
|
|
|
5956
6148
|
"buttonLabel": [1, "button-label"],
|
|
5957
6149
|
"inputLabel": [1, "input-label"],
|
|
5958
6150
|
"placeholderValue": [1, "placeholder-value"],
|
|
6151
|
+
"placeholderBehavior": [1, "placeholder-behavior"],
|
|
5959
6152
|
"core": [16],
|
|
5960
6153
|
"inputValue": [32],
|
|
5961
6154
|
"searchTerm": [32],
|
|
@@ -7591,6 +7784,43 @@ class SearchcraftSelect {
|
|
|
7591
7784
|
}; }
|
|
7592
7785
|
}
|
|
7593
7786
|
|
|
7787
|
+
/**
|
|
7788
|
+
* Creates a throttled version of the given function that only invokes
|
|
7789
|
+
* the original function at most once every specified number of milliseconds.
|
|
7790
|
+
*
|
|
7791
|
+
* The logic is written in a way that the last invocation is always called, after the
|
|
7792
|
+
* throttle cooldown period has ended.
|
|
7793
|
+
*
|
|
7794
|
+
* @template Arguments - The argument types for the function to throttle
|
|
7795
|
+
* @param callback - The function to throttle
|
|
7796
|
+
* @param delayInMilliseconds - The number of milliseconds to wait before allowing the next invocation
|
|
7797
|
+
* @returns A throttled version of the original function
|
|
7798
|
+
*/
|
|
7799
|
+
function throttle(callback, delayInMilliseconds) {
|
|
7800
|
+
let isThrottleOnCooldown = false;
|
|
7801
|
+
let trailingCallArgs = null;
|
|
7802
|
+
const invokeAction = (args) => {
|
|
7803
|
+
callback(...args);
|
|
7804
|
+
isThrottleOnCooldown = true;
|
|
7805
|
+
setTimeout(() => {
|
|
7806
|
+
isThrottleOnCooldown = false;
|
|
7807
|
+
if (trailingCallArgs) {
|
|
7808
|
+
const nextArgs = trailingCallArgs;
|
|
7809
|
+
trailingCallArgs = null;
|
|
7810
|
+
invokeAction(nextArgs);
|
|
7811
|
+
}
|
|
7812
|
+
}, delayInMilliseconds);
|
|
7813
|
+
};
|
|
7814
|
+
return (...args) => {
|
|
7815
|
+
if (!isThrottleOnCooldown) {
|
|
7816
|
+
invokeAction(args);
|
|
7817
|
+
}
|
|
7818
|
+
else {
|
|
7819
|
+
trailingCallArgs = args;
|
|
7820
|
+
}
|
|
7821
|
+
};
|
|
7822
|
+
}
|
|
7823
|
+
|
|
7594
7824
|
/**
|
|
7595
7825
|
* This web component is designed to allow users to select a value from a range defined by a minimum and maximum value. The component renders a slider interface, which can be used to visually choose a value between two boundaries.
|
|
7596
7826
|
*
|
|
@@ -7610,27 +7840,60 @@ class SearchcraftSlider {
|
|
|
7610
7840
|
*/
|
|
7611
7841
|
min = 0;
|
|
7612
7842
|
/**
|
|
7613
|
-
* The
|
|
7843
|
+
* The step amount for the slider inputs.
|
|
7614
7844
|
*/
|
|
7615
|
-
|
|
7616
|
-
/** The type of data
|
|
7845
|
+
step = 1;
|
|
7846
|
+
/** The type of data the sliders are using. */
|
|
7617
7847
|
dataType = 'number';
|
|
7618
|
-
|
|
7619
|
-
|
|
7848
|
+
/** The date granularity to use. Used to format date labels. */
|
|
7849
|
+
dateGranularity;
|
|
7850
|
+
lowerBound = 0;
|
|
7851
|
+
upperBound = 1;
|
|
7852
|
+
endValue = 0;
|
|
7853
|
+
startValue = 0;
|
|
7620
7854
|
lastFocusedHandle = 'max';
|
|
7855
|
+
throttledEmitUpdate = () => { };
|
|
7621
7856
|
/**
|
|
7622
7857
|
* When the range has changed.
|
|
7623
7858
|
* */
|
|
7624
7859
|
rangeChanged;
|
|
7625
|
-
|
|
7626
|
-
this.
|
|
7627
|
-
|
|
7860
|
+
connectedCallback() {
|
|
7861
|
+
switch (this.dataType) {
|
|
7862
|
+
case 'number':
|
|
7863
|
+
this.startValue = this.min;
|
|
7864
|
+
this.endValue = this.max;
|
|
7865
|
+
this.lowerBound = this.min;
|
|
7866
|
+
this.upperBound = this.max;
|
|
7867
|
+
break;
|
|
7868
|
+
case 'date': {
|
|
7869
|
+
this.startValue = 0;
|
|
7870
|
+
this.endValue = getDifferenceInUnits(this.dateGranularity || 'year', this.min, this.max);
|
|
7871
|
+
this.lowerBound = 0;
|
|
7872
|
+
this.upperBound = this.endValue;
|
|
7873
|
+
break;
|
|
7874
|
+
}
|
|
7875
|
+
}
|
|
7876
|
+
this.throttledEmitUpdate = throttle(this.emitUpdate, 120);
|
|
7628
7877
|
}
|
|
7629
7878
|
emitUpdate = async () => {
|
|
7630
|
-
this.
|
|
7631
|
-
|
|
7632
|
-
|
|
7633
|
-
|
|
7879
|
+
switch (this.dataType) {
|
|
7880
|
+
case 'number':
|
|
7881
|
+
this.rangeChanged?.emit({
|
|
7882
|
+
startValue: this.startValue,
|
|
7883
|
+
endValue: this.endValue,
|
|
7884
|
+
});
|
|
7885
|
+
break;
|
|
7886
|
+
case 'date': {
|
|
7887
|
+
const granularity = this.dateGranularity || 'year';
|
|
7888
|
+
const startTimestamp = getStartOf(this.min, granularity, this.lowerBound + this.startValue);
|
|
7889
|
+
const endTimestamp = getStartOf(this.min, granularity, this.lowerBound + this.endValue + 1);
|
|
7890
|
+
this.rangeChanged?.emit({
|
|
7891
|
+
startValue: startTimestamp,
|
|
7892
|
+
endValue: endTimestamp,
|
|
7893
|
+
});
|
|
7894
|
+
break;
|
|
7895
|
+
}
|
|
7896
|
+
}
|
|
7634
7897
|
};
|
|
7635
7898
|
handleStartValueChange = (event) => {
|
|
7636
7899
|
const inputElement = event.target;
|
|
@@ -7638,7 +7901,7 @@ class SearchcraftSlider {
|
|
|
7638
7901
|
this.lastFocusedHandle = 'min';
|
|
7639
7902
|
if (value <= this.endValue) {
|
|
7640
7903
|
this.startValue = value;
|
|
7641
|
-
this.
|
|
7904
|
+
this.throttledEmitUpdate();
|
|
7642
7905
|
}
|
|
7643
7906
|
else {
|
|
7644
7907
|
this.startValue = this.endValue;
|
|
@@ -7651,28 +7914,38 @@ class SearchcraftSlider {
|
|
|
7651
7914
|
this.lastFocusedHandle = 'max';
|
|
7652
7915
|
if (value >= this.startValue) {
|
|
7653
7916
|
this.endValue = value;
|
|
7654
|
-
this.
|
|
7917
|
+
this.throttledEmitUpdate();
|
|
7655
7918
|
}
|
|
7656
7919
|
else {
|
|
7657
7920
|
this.endValue = this.startValue;
|
|
7658
7921
|
inputElement.value = `${this.startValue}`;
|
|
7659
7922
|
}
|
|
7660
7923
|
};
|
|
7924
|
+
getLabel = (value) => {
|
|
7925
|
+
switch (this.dataType) {
|
|
7926
|
+
case 'number':
|
|
7927
|
+
return `${this.startValue}`;
|
|
7928
|
+
case 'date': {
|
|
7929
|
+
const granularity = this.dateGranularity || 'year';
|
|
7930
|
+
const dateOffset = this.lowerBound + value;
|
|
7931
|
+
const timestamp = getStartOf(this.min, granularity, dateOffset);
|
|
7932
|
+
return getFormattedDateString(this.dateGranularity || 'year', new Date(timestamp));
|
|
7933
|
+
}
|
|
7934
|
+
}
|
|
7935
|
+
};
|
|
7661
7936
|
render() {
|
|
7662
|
-
const
|
|
7663
|
-
|
|
7664
|
-
|
|
7665
|
-
const endPercent = ((this.endValue -
|
|
7666
|
-
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
const endLabel = this.
|
|
7670
|
-
|
|
7671
|
-
: new Date(this.endValue).getFullYear();
|
|
7672
|
-
return (hAsync("div", { key: '9225b18ce2f40246837d183fcefdd0be7cc22383', class: 'searchcraft-slider' }, hAsync("div", { key: '8078c1eda2ceb781282f59216915896fdbe2a8d3', class: 'searchcraft-slider-range' }, hAsync("div", { key: '6a6bafa9f7abf41ab24f020cd291a4a08c618afb', class: 'searchcraft-slider-active-range', style: {
|
|
7937
|
+
const startPercent = ((this.startValue - this.lowerBound) /
|
|
7938
|
+
(this.upperBound - this.lowerBound)) *
|
|
7939
|
+
100;
|
|
7940
|
+
const endPercent = ((this.endValue - this.lowerBound) /
|
|
7941
|
+
(this.upperBound - this.lowerBound)) *
|
|
7942
|
+
100;
|
|
7943
|
+
const startLabel = this.getLabel(this.startValue);
|
|
7944
|
+
const endLabel = this.getLabel(this.endValue);
|
|
7945
|
+
return (hAsync("div", { key: '3b2e8576d64826f123d40deff3b0df9316649a03', class: 'searchcraft-slider' }, hAsync("div", { key: 'ecaa546b96855aad4e839c5e34e995da0925e0b6', class: 'searchcraft-slider-range' }, hAsync("div", { key: 'f37fc0329249857a29f77d9e3739d10f05f6bf62', class: 'searchcraft-slider-active-range', style: {
|
|
7673
7946
|
left: `${startPercent}%`,
|
|
7674
7947
|
width: `${endPercent - startPercent}%`,
|
|
7675
|
-
} }), hAsync("input", { key: '
|
|
7948
|
+
} }), hAsync("input", { key: '7b5e6f3983b7c109ea0a3f2b248c35d0e225400b', class: classNames('searchcraft-slider-input', 'searchcraft-slider-input-min-handle'), max: this.upperBound, min: this.lowerBound, onInput: this.handleStartValueChange.bind(this), step: this.step, style: { zIndex: this.lastFocusedHandle === 'min' ? '2' : '1' }, type: 'range', value: this.startValue }), hAsync("input", { key: 'b5bb628b73c8b582a31453e73cb3ef38579eeea5', class: classNames('searchcraft-slider-input', 'searchcraft-slider-input-max-handle'), max: this.upperBound, min: this.lowerBound, onInput: this.handleEndValueChange.bind(this), step: this.step, style: { zIndex: this.lastFocusedHandle === 'max' ? '2' : '1' }, type: 'range', value: this.endValue })), hAsync("div", { key: 'ecb379babd244e3205f30d45628506566fbeff3c', class: 'searchcraft-slider-label' }, hAsync("span", { key: '2be886d05c323f7da1059be88c0cb8ede2e1e98b', class: 'searchcraft-slider-start-label' }, startLabel), hAsync("span", { key: 'bf66fcab3fae565980a4637cb13b14589ffcb5ba', class: 'searchcraft-slider-end-label' }, endLabel))));
|
|
7676
7949
|
}
|
|
7677
7950
|
static get cmpMeta() { return {
|
|
7678
7951
|
"$flags$": 0,
|
|
@@ -7680,8 +7953,11 @@ class SearchcraftSlider {
|
|
|
7680
7953
|
"$members$": {
|
|
7681
7954
|
"max": [2],
|
|
7682
7955
|
"min": [2],
|
|
7683
|
-
"
|
|
7956
|
+
"step": [2],
|
|
7684
7957
|
"dataType": [1, "data-type"],
|
|
7958
|
+
"dateGranularity": [1, "date-granularity"],
|
|
7959
|
+
"lowerBound": [32],
|
|
7960
|
+
"upperBound": [32],
|
|
7685
7961
|
"endValue": [32],
|
|
7686
7962
|
"startValue": [32],
|
|
7687
7963
|
"lastFocusedHandle": [32]
|
|
@@ -7692,7 +7968,7 @@ class SearchcraftSlider {
|
|
|
7692
7968
|
}; }
|
|
7693
7969
|
}
|
|
7694
7970
|
|
|
7695
|
-
var styles = `[class*=searchcraft-],[class*=searchcraft-] *,[class*=searchcraft-]::before,[class*=searchcraft-]::after,[class*=searchcraft-] *,::before,[class*=searchcraft-] *,::after{box-sizing:border-box;padding:0;margin:0}:root{--sc-text-base-size: 1em;--sc-text-scale-ratio: 1.1;--sc-font-family: sans-serif;--sc-font-bold: 700;--sc-font-normal: 400;--sc-heading-1-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-2-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-3-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-4-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-5-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-6-font-size: calc( var(--sc-text-base-size) / ( var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) ) );--sc-body-font-size: calc(var(--sc-text-base-size));--sc-body-small-font-size: calc( var(--sc-text-base-size) / ( var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) ) )}:root{--sc-border-radius: 8px;--sc-border-radius-sm: calc(var(--sc-border-radius) / 2);--sc-border-radius-lg: calc(var(--sc-border-radius) * 2);--sc-border-radius-xl: calc(var(--sc-border-radius) * 3);--sc-border-radius-2xl: calc(var(--sc-border-radius) * 4);--sc-border-radius-full: 9999px}:root{--sc-breakpoint-sm: 576px;--sc-breakpoint-md: 768px;--sc-breakpoint-lg: 992px}:root{--sc-surface-neutral-primary: var(--sc-color-background, #ffffff);--sc-color-background-hover-computed: hsl( from var(--sc-color-background) h s clamp(10, calc(l + 5), 95) );--sc-surface-neutral-primary-hover: var( --sc-color-background-hover, var(--sc-color-background-hover-computed, #fafafa) );--sc-color-background-active-computed: hsl( from var(--sc-color-background) h s clamp(5, calc(l - 5), 90) );--sc-surface-neutral-primary-active: var( --sc-color-background-active, var(--sc-color-background-active-computed, #f7f7f7) );--sc-surface-neutral-secondary: var( --sc-color-background-secondary, var(--sc-color-background, #f3f3f3) );--sc-color-background-secondary-hover-computed: hsl( from var(--sc-color-background-secondary) h s clamp(10, calc(l + 5), 95) );--sc-surface-neutral-secondary-hover: var( --sc-color-background-hover, var(--sc-color-background-hover-computed, #e6e6e6) );--sc-color-background-secondary-active-computed: hsl( from var(--sc-color-background-secondary) h s clamp(5, calc(l - 5), 90) );--sc-surface-neutral-secondary-active: var( --sc-color-background-secondary-active, var(--sc-color-background-active-computed, #e0e0e0) );--sc-surface-neutral-light: #ffffff;--sc-content-neutral-primary: var(--sc-color-foreground, #292929);--sc-color-foreground-secondary-computed: hsl( from var(--sc-color-foreground) h s clamp(10, calc(l + 5), 90) );--sc-content-neutral-secondary: var( --sc-color-foreground-secondary, var(--sc-color-foreground-secondary-computed, #404040) );--sc-border-neutral: var(--sc-color-border, rgba(0, 0, 0, 0.1));--sc-surface-brand-primary: var(--sc-color-brand, #000000);--sc-color-brand-hover-computed: hsl( from var(--sc-color-brand) h s clamp(20, calc(l + 5), 95) );--sc-surface-brand-primary-hover: var( --sc-color-brand-hover, var(--sc-color-brand-hover-computed, #2e2e2e) );--sc-color-brand-active-computed: hsl( from var(--sc-color-brand) h s clamp(10, calc(l - 5), 85) );--sc-surface-brand-primary-active: var( --sc-color-brand-active, var(--sc-color-brand-active-computed, #292929) );--sc-surface-brand-secondary: var( --sc-color-brand-secondary, var(--sc-color-brand, #e6e6e6) );--sc-color-brand-secondary-hover-computed: hsl( from var(--sc-color-brand-secondary) h s clamp(10, calc(l + 5), 95) );--sc-surface-brand-secondary-hover: var( --sc-color-background-hover, var(--sc-color-background-hover-computed, #ebebeb) );--sc-color-brand-secondary-active-computed: hsl( from var(--sc-color-brand-secondary) h s clamp(5, calc(l - 5), 90) );--sc-surface-brand-secondary-active: var( --sc-color-brand-secondary-active, var(--sc-color-brand-active-computed, #e0e0e0) );--sc-content-brand: var( --sc-color-brand-text, var(--sc-surface-brand-primary) );--sc-content-brand-on-primary: #ffffff;--sc-border-brand: var(--sc-surface-brand-primary);--sc-surface-success-primary: var(--sc-color-success, #008000);--sc-color-success-primary-hover-computed: hsl( from var(--sc-color-success) h s 30 );--sc-surface-success-primary-hover: var( --sc-color-success-primary-hover, var(--sc-color-success-primary-hover-computed, #009900) );--sc-color-success-primary-active-computed: hsl( from var(--sc-color-success) h s 20 );--sc-surface-success-primary-active: var( --sc-color-success-primary-active, var(--sc-color-success-primary-active-computed, #006600) );--sc-color-success-secondary-computed: hsl( from var(--sc-color-success) h s 90 );--sc-surface-success-secondary: var( --sc-color-success-secondary, var(--sc-color-success-secondary-computed, #ccffcc) );--sc-color-success-secondary-hover-computed: hsl( from var(--sc-color-success-secondary) h s 95 );--sc-surface-success-secondary-hover: var( --sc-color-success-secondary-hover, var(--sc-color-success-secondary-hover-computed, #e6ffe6) );--sc-color-success-secondary-active-computed: hsl( from var(--sc-color-success-secondary) h s 85 );--sc-surface-success-secondary-active: var( --sc-color-success-secondary-active, var(--sc-color-success-secondary-active-computed, #b2ffb2) );--sc-content-success: var( --sc-color-brand-text, hsl(from var(--sc-surface-success-primary) h s 30) );--sc-content-success-on-primary: #ffffff;--sc-border-success: var(--sc-surface-success-primary);--sc-surface-caution-primary: var(--sc-color-caution, #cc6600);--sc-color-caution-primary-hover-computed: hsl( from var(--sc-color-caution) h s 30 );--sc-surface-caution-primary-hover: var( --sc-color-caution-primary-hover, var(--sc-color-caution-primary-hover-computed, #e57300) );--sc-color-caution-primary-active-computed: hsl( from var(--sc-color-caution) h s 20 );--sc-surface-caution-primary-active: var( --sc-color-caution-primary-active, var(--sc-color-caution-primary-active-computed, #b25a00) );--sc-color-caution-secondary-computed: hsl( from var(--sc-color-caution) h s 90 );--sc-surface-caution-secondary: var( --sc-color-caution-secondary, var(--sc-color-caution-secondary-computed, #ffd9b3) );--sc-color-caution-secondary-hover-computed: hsl( from var(--sc-color-caution-secondary) h s 95 );--sc-surface-caution-secondary-hover: var( --sc-color-caution-secondary-hover, var(--sc-color-caution-secondary-hover-computed, #ffe5cc) );--sc-color-caution-secondary-active-computed: hsl( from var(--sc-color-caution-secondary) h s 85 );--sc-surface-caution-secondary-active: var( --sc-color-caution-secondary-active, var(--sc-color-caution-secondary-active-computed, #ffcc99) );--sc-content-caution: var( --sc-color-caution-text, hsl(from var(--sc-surface-caution-primary) h s 30) );--sc-content-caution-on-primary: #ffffff;--sc-border-caution: var(--sc-surface-caution-primary);--sc-surface-danger-primary: var(--sc-color-danger, #cc0000);--sc-color-danger-primary-hover-computed: hsl( from var(--sc-color-danger) h s 30 );--sc-surface-danger-primary-hover: var( --sc-color-danger-primary-hover, var(--sc-color-danger-primary-hover-computed, #e50000) );--sc-color-danger-primary-active-computed: hsl( from var(--sc-color-danger) h s 20 );--sc-surface-danger-primary-active: var( --sc-color-danger-primary-active, var(--sc-color-danger-primary-active-computed, #b30000) );--sc-color-danger-secondary-computed: hsl(from var(--sc-color-danger) h s 90);--sc-surface-danger-secondary: var( --sc-color-danger-secondary, var(--sc-color-danger-secondary-computed, #ffcccc) );--sc-color-danger-secondary-hover-computed: hsl( from var(--sc-color-danger-secondary) h s 95 );--sc-surface-danger-secondary-hover: var( --sc-color-danger-secondary-hover, var(--sc-color-danger-secondary-hover-computed, #ffe7e7) );--sc-color-danger-secondary-active-computed: hsl( from var(--sc-color-danger-secondary) h s 85 );--sc-surface-danger-secondary-active: var( --sc-color-danger-secondary-active, var(--sc-color-danger-secondary-active-computed, #ffb3b3) );--sc-content-danger: var( --sc-color-caution-text, hsl(from var(--sc-surface-danger-primary) h s 30) );--sc-content-danger-on-primary: #ffffff;--sc-border-danger: var(--sc-surface-danger-primary);--sc-color-disabled: hsl(from var(--sc-color-page-primary) h s calc(l * 0.5));--sc-surface-disabled: var(--sc-color-disabled, #d9d9d9);--sc-color-disabled-text: hsl( from var(--sc-color-text-primary) h s calc(l * 0.5) );--sc-content-disabled: var(--sc-color-disabled-text, #737373);--sc-content-disabled-on-disabled: var(--sc-color-disabled-text, #737373)}@supports(hanging-punctuation: first) and (font: -apple-system-body) and (-webkit-appearance: none){:root{--sc-color-background-hover-computed: hsl( from var(--sc-color-background) h s clamp(10%, calc(l + 5%), 95%) );--sc-color-background-active-computed: hsl( from var(--sc-color-background) h s clamp(5%, calc(l - 5%), 90%) );--sc-color-foreground-secondary-computed: hsl( from var(--sc-color-foreground) h s clamp(10%, calc(l + 5%), 90%) );--sc-color-brand-hover-computed: hsl( from var(--sc-color-brand) h s clamp(20%, calc(l + 5%), 95%) );--sc-color-brand-active-computed: hsl( from var(--sc-color-brand) h s clamp(10%, calc(l - 5%), 85%) );--sc-color-success-primary-hover-computed: hsl( from var(--sc-color-success) h s 30% );--sc-color-success-primary-active-computed: hsl( from var(--sc-color-success) h s 20% );--sc-color-success-secondary-computed: hsl( from var(--sc-color-success) h s 90% );--sc-color-success-secondary-hover-computed: hsl( from var(--sc-color-success-secondary) h s 95% );--sc-color-success-secondary-active-computed: hsl( from var(--sc-color-success-secondary) h s 85% );--sc-content-success: var( --sc-color-brand-text, hsl(from var(--sc-surface-success-primary) h s 30%) );--sc-color-caution-primary-hover-computed: hsl( from var(--sc-color-caution) h s 30% );--sc-color-caution-primary-active-computed: hsl( from var(--sc-color-caution) h s 20% );--sc-color-caution-secondary-computed: hsl( from var(--sc-color-caution) h s 90% );--sc-color-caution-secondary-hover-computed: hsl( from var(--sc-color-caution-secondary) h s 95% );--sc-color-caution-secondary-active-computed: hsl( from var(--sc-color-caution-secondary) h s 85% );--sc-content-caution: var( --sc-color-caution-text, hsl(from var(--sc-surface-caution-primary) h s 30%) );--sc-color-danger-primary-hover-computed: hsl( from var(--sc-color-danger) h s 30% );--sc-color-danger-primary-active-computed: hsl( from var(--sc-color-danger) h s 20% );--sc-color-danger-secondary-computed: hsl( from var(--sc-color-danger) h s 90% );--sc-color-danger-secondary-hover-computed: hsl( from var(--sc-color-danger-secondary) h s 95% );--sc-color-danger-secondary-active-computed: hsl( from var(--sc-color-danger-secondary) h s 85% );--sc-content-danger: var( --sc-color-caution-text, hsl(from var(--sc-surface-danger-primary) h s 30%) )}}.searchcraft-ad{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased}.searchcraft-ad-no-template{display:flex;flex-direction:column;font-size:.875rem}.searchcraft-ad-no-template>p{margin:0}.searchcraft-adm-ad{display:flex;flex-direction:column;justify-content:center;gap:16px}.searchcraft-search-result{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased}.searchcraft-search-result-no-template{display:flex;flex-direction:column;font-size:.875rem}.searchcraft-search-result-no-template>p{margin:0}.searchcraft-search-results{display:flex;flex-direction:column;justify-content:center;gap:16px}.searchcraft-search-results-empty-state{text-align:center}.searchcraft-search-results-error-message{text-align:center}.searchcraft-button{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);background:none;border:2px solid rgba(0,0,0,0);border-radius:var(--sc-border-radius);cursor:pointer;display:flex;gap:4px;padding:12px;position:relative}.searchcraft-button.searchcraft-button-disabled{cursor:not-allowed}.searchcraft-button-primary{background-color:var(--sc-surface-brand-primary);color:var(--sc-content-brand-on-primary);font-weight:var(--sc-font-bold)}.searchcraft-button-primary:hover{background-color:var(--sc-surface-brand-primary-hover)}.searchcraft-button-primary:focus{border-color:var(--sc-border-primary)}.searchcraft-button-primary:active{background-color:var(--sc-surface-brand-primary-active)}.searchcraft-button-primary.searchcraft-button-disabled,.searchcraft-button-primary.searchcraft-button-disabled:hover,.searchcraft-button-primary.searchcraft-button-disabled:focus,.searchcraft-button-primary.searchcraft-button-disabled:active{background-color:var(--sc-surface-disabled);border-color:rgba(0,0,0,0);color:var(--sc-content-disabled)}.searchcraft-button-tertiary{background-color:var(--sc-surface-neutral-primary);color:var(--sc-content-brand);font-weight:var(--sc-font-normal)}.searchcraft-button-tertiary:hover{background-color:var(--sc-surface-brand-secondary-hover)}.searchcraft-button-tertiary:focus{background-color:var(--sc-surface-neutral-light);border-color:var(--sc-border-primary)}.searchcraft-button-tertiary:active{background-color:var(--sc-surface-brand-secondary-active)}.searchcraft-button-tertiary.searchcraft-button-disabled,.searchcraft-button-tertiary.searchcraft-button-disabled:hover,.searchcraft-button-tertiary.searchcraft-button-disabled:focus,.searchcraft-button-tertiary.searchcraft-button-disabled:active{background-color:var(--sc-surface-neutral-light);border-color:rgba(0,0,0,0);color:var(--sc-content-disabled)}.searchcraft-button-icon{fill:none}.searchcraft-error-message{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-danger);margin:0}.searchcraft-facet-list{display:flex;flex-direction:column;gap:6px;width:100%}.searchcraft-facet-list-checkbox-label{align-items:center;color:var(--sc-content-neutral-primary);display:flex;font-family:var(--sc-font-family);font-size:14px;font-weight:600;gap:14px;position:relative;-webkit-font-smoothing:antialiased}.searchcraft-facet-list-checkbox-input-wrapper{position:relative}.searchcraft-facet-list-checkbox-input{align-items:center;appearance:none;background-color:var(--sc-surface-neutral-secondary);border:1px solid var(--sc-surface-disabled);border-radius:var(--sc-border-radius-sm);cursor:pointer;display:flex;height:24px;justify-content:center;width:24px;margin:0}.searchcraft-facet-list-checkbox-input:focus{outline:2px solid var(--sc-surface-brand-primary)}.searchcraft-facet-list-checkbox-input:checked{background-color:var(--sc-surface-brand-primary);position:relative}.searchcraft-facet-list-checkbox-input:checked+.searchcraft-facet-list-checkbox-input-check-icon{display:block}.searchcraft-facet-list-checkbox-input:checked+.searchcraft-facet-list-checkbox-input-dash-icon{display:block}.searchcraft-facet-child-list{display:flex;flex-direction:column;gap:6px}.searchcraft-facet-child-list-checkbox-label{margin-left:24px}.searchcraft-facet-child-list-checkbox-label:first-child{margin-top:6px}.searchcraft-facet-list-checkbox-input-check-icon{display:none;height:16px;left:50%;position:absolute;margin-top:2px;top:50%;transform:translate(-50%, -50%);width:16px}.searchcraft-facet-list-checkbox-input-dash-icon{display:none;height:3px;left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);width:14px}.searchcraft-facet-list-message{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-disabled);text-align:center}.searchcraft-filter-panel{display:flex;flex-direction:column;gap:16px}.searchcraft-filter-panel-section{display:flex;flex-direction:column;gap:8px}.searchcraft-filter-panel-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);font-weight:var(--sc-font-bold)}:root{--sc-input-form-border-radius: var(--sc-border-radius);--sc-input-form-search-icon-size: 20px;--sc-input-form-clear-icon-size: 20px}.searchcraft-input-form-grid{display:grid;gap:4px 8px}.searchcraft-input-form-grid-button-left{grid-template-rows:repeat(3, auto);grid-template-columns:auto 1fr}.searchcraft-input-form-grid-button-left .searchcraft-input-form-button{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-form-grid-button-left .searchcraft-input-form-label{grid-column:2/span 1;grid-row:1/span 1}.searchcraft-input-form-grid-button-left .searchcraft-input-form-error-message{grid-column:2/span 1;grid-row:3/span 1}.searchcraft-input-form-grid-button-left .searchcraft-input-form-input-wrapper{grid-column:2/span 1;grid-row:2/span 1}.searchcraft-input-form-grid-button-right{grid-template-rows:repeat(3, auto);grid-template-columns:1fr auto}.searchcraft-input-form-grid-button-right .searchcraft-input-form-button{grid-column:2/span 1;grid-row:2/span 1}.searchcraft-input-form-grid-button-right .searchcraft-input-form-label{grid-column:1/span 1;grid-row:1/span 1}.searchcraft-input-form-grid-button-right .searchcraft-input-form-error-message{grid-column:1/span 1;grid-row:3/span 1}.searchcraft-input-form-grid-button-right .searchcraft-input-form-input-wrapper{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-form-grid-button-none{grid-template-rows:repeat(3, auto);grid-template-columns:auto}.searchcraft-input-form-grid-button-none .searchcraft-input-form-button{display:none}.searchcraft-input-form-grid-button-none .searchcraft-input-form-label{grid-column:1/span 1;grid-row:1/span 1}.searchcraft-input-form-grid-button-none .searchcraft-input-form-error-message{grid-column:1/span 1;grid-row:3/span 1}.searchcraft-input-form-grid-button-none .searchcraft-input-form-input-wrapper{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-form-input-wrapper{display:flex;position:relative}.searchcraft-input-form-input{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);background-color:var(--sc-surface-neutral-secondary);border-radius:var(--sc-input-form-border-radius);border:none;color:var(--sc-content-neutral-primary);flex:1;outline:none;padding:12px 44px}.searchcraft-input-form-input::placeholder{color:var(--sc-content-disabled)}.searchcraft-input-form-input:focus{outline:var(--sc-border-brand) solid 2px;outline-offset:-1px}.searchcraft-input-form-input:focus::placeholder{opacity:0}.searchcraft-input-form-error{color:var(--sc-content-danger);outline:var(--sc-border-danger) solid 2px}.searchcraft-input-form-error:focus{outline:var(--sc-border-danger) solid 2px}.searchcraft-input-form-input-icon{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;pointer-events:none;top:0;width:44px}.searchcraft-input-form-input-search-icon{color:var(--sc-content-neutral-secondary);fill:none;height:var(--sc-input-form-search-icon-size);pointer-events:none;width:var(--sc-input-form-search-icon-size)}.searchcraft-input-form-clear-button{all:unset;align-items:center;bottom:0;border:none;cursor:pointer;display:flex;justify-content:center;outline:none;position:absolute;right:0;top:0;width:44px}.searchcraft-input-form-clear-icon{color:var(--sc-content-brand);fill:none;height:var(--sc-input-form-clear-icon-size);width:var(--sc-input-form-clear-icon-size)}.searchcraft-input-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-neutral-primary);font-weight:var(--sc-font-bold);margin-top:4px;margin-bottom:4px}:root{--sc-popover-button-border-radius: var(--sc-border-radius)}@media(min-width: 576px){:root{--sc-popover-button-border-radius: var(--sc-border-radius-lg)}}.searchcraft-popover-button{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);cursor:pointer}.searchcraft-popover-button-skeuomorphic{appearance:none;background:none;border:none;color:var(--sc-content-neutral-primary);display:block;width:100%}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-wrapper{border:1px solid var(--sc-border-neutral);border-radius:var(--sc-popover-button-border-radius);box-shadow:0 1px 1px rgb(from var(--sc-content-neutral-secondary) r g b/10%) inset,0 2px 4px rgb(from var(--sc-content-neutral-secondary) r g b/5%) inset;display:flex;gap:24px;height:40px;justify-content:space-between;line-height:1;padding:4px 5px 4px 10px;background:var(--sc-surface-neutral-primary)}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-wrapper{box-shadow:0 1px 1px rgb(from var(--sc-content-neutral-secondary) r g b/10%) inset,0 2px 2px rgb(from var(--sc-content-neutral-secondary) r g b/5%) inset,0 4px 4px rgb(from var(--sc-content-neutral-secondary) r g b/5%) inset;height:63px;padding:8px 10px 8px 16px}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-input{align-items:center;display:flex;gap:4px}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-input{gap:8px}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps{color:var(--sc-content-neutral-secondary);display:flex;gap:4px;font-size:20px;font-weight:500}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps{gap:8px}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap{border-radius:calc(var(--sc-popover-button-border-radius) - 3px);border-radius:calc(var(var(--sc-popover-button-border-radius)) - 3px);background-color:var(--sc-surface-neutral-primary);box-shadow:0 3px hsl(from var(--sc-surface-neutral-secondary) h s calc(l - 5)),0 1px 2px rgb(from var(--sc-content-neutral-secondary) r g b/10%),0 6px 4px rgb(from var(--sc-content-neutral-secondary) r g b/5%);height:calc(100% - 2px);position:relative}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap{border-radius:calc(var(--sc-popover-button-border-radius) - 8px);border-radius:calc(var(var(--sc-popover-button-border-radius)) - 8px);box-shadow:0 4px hsl(from var(--sc-surface-neutral-secondary) h s calc(l - 5)),0 1px 2px rgb(from var(--sc-content-neutral-secondary) r g b/15%),0 6px 1px rgb(from var(--sc-content-neutral-secondary) r g b/20%),0 7px 2px rgb(from var(--sc-content-neutral-secondary) r g b/15%),0 9px 4px rgb(from var(--sc-content-neutral-secondary) r g b/10%),0 13px 8px rgb(from var(--sc-content-neutral-secondary) r g b/5%);height:calc(100% - 5px)}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::before,.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::after{content:"";display:block}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::before{border-radius:calc(var(--sc-popover-button-border-radius) - 4px);border-radius:calc(var(var(--sc-popover-button-border-radius)) - 4px);background:linear-gradient(340deg, rgb(from var(--sc-surface-neutral-secondary) r g b/2%) 0%, var(--sc-surface-neutral-secondary) 100%);inset:2px;position:absolute}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::before{border-radius:calc(var(--sc-popover-button-border-radius) - 12px);border-radius:calc(var(var(--sc-popover-button-border-radius)) - 12px);inset:4px}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::after{aspect-ratio:1/1;height:100%}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap>span{display:flex;line-height:1;left:50%;margin-top:2%;position:absolute;top:50%;transform:translate(-50%, -50%)}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-input-search-icon{height:60%;width:auto}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-input-search-icon{height:50%}}:root{--sc-popover-list-view-height: 600px;--sc-popover-modal-max-width: 800px}.searchcraft-popover-form{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);display:flex;flex:1;flex-direction:column}.searchcraft-popover-form searchcraft-input-form,.searchcraft-popover-form searchcraft-popover-footer{width:100%}.searchcraft-popover-form.searchcraft-popover-form-active .searchcraft-popover-form-input{padding-bottom:1px}.searchcraft-popover-form searchcraft-popover-list-view{flex-shrink:1;height:100%;min-height:0;overflow:auto;padding:0 24px}.searchcraft-popover-form-input{display:flex;flex-direction:row;gap:12px}.searchcraft-popover-form-input .searchcraft-input-form-input{background-color:var(--sc-surface-neutral-primary);border:1px solid var(--sc-border-neutral);border-radius:var(--sc-border-radius-lg);box-shadow:0 1px 1px rgb(from var(--sc-content-neutral-primary) r g b/10%) inset,0 2px 2px rgb(from var(--sc-content-neutral-primary) r g b/5%) inset,0 4px 4px rgb(from var(--sc-content-neutral-primary) r g b/5%) inset;width:0}.searchcraft-popover-form-cancel-button{background:none;border:none;cursor:pointer;font-size:14px}.searchcraft-popover-form-modal-input,.searchcraft-popover-form-fullscreen-input{padding:24px}.searchcraft-popover-form-modal-popover-list-view,.searchcraft-popover-form-fullscreen-popover-list-view{flex-grow:1;flex-shrink:1;min-height:0;overflow:auto;padding:0 24px}.searchcraft-popover-form-inline{background-color:var(--sc-surface-neutral-primary);border:1px solid rgba(0,0,0,0);border-radius:var(--sc-border-radius-xl);padding:12px;position:relative}.searchcraft-popover-form-inline.searchcraft-popover-form-active{border:1px solid var(--sc-border-neutral);border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;padding-bottom:1px}.searchcraft-popover-form-inline searchcraft-popover-list-view{padding:0 12px}.searchcraft-popover-form-inline .searchcraft-input-form-input,.searchcraft-popover-form-inline .searchcraft-popover-list-item-link,.searchcraft-popover-form-inline .searchcraft-adm-ad-link{border-radius:calc(--sc-border-radius-xl - 12px);border-radius:calc(var(--sc-border-radius-xl) - 12px)}.searchcraft-popover-form-inline-wrapper{background-color:var(--sc-surface-neutral-primary);border:1px solid var(--sc-border-neutral);border-top:none;border-bottom-left-radius:var(--sc-border-radius-xl);border-bottom-right-radius:var(--sc-border-radius-xl);display:flex;flex-direction:column;left:-1px;max-height:var(--sc-popover-list-view-height);overflow:hidden;position:absolute;right:-1px;top:100%}.searchcraft-popover-form-modal{align-items:center;display:flex;inset:0;position:fixed;z-index:1000}.searchcraft-popover-form-modal .searchcraft-input-form-input,.searchcraft-popover-form-modal .searchcraft-popover-list-item-link,.searchcraft-popover-form-modal .searchcraft-adm-ad-link{border-radius:calc(--sc-border-radius-2xl - 20px);border-radius:calc(var(--sc-border-radius-2xl) - 20px)}.searchcraft-popover-form-modal-backdrop{background-color:rgb(from var(--sc-content-neutral-primary) r g b/50%);display:none;inset:0;position:fixed}@media(min-width: 576px){.searchcraft-popover-form-modal-backdrop{display:block}}.searchcraft-popover-form-modal-wrapper{background-color:var(--sc-surface-neutral-primary);box-shadow:1px 2px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 2px 4px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 4px 8px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 8px 16px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 16px 32px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 32px 64px rgb(from var(--sc-content-neutral-primary) r g b/7%);display:flex;flex-direction:column;inset:0;max-width:var(--sc-popover-modal-max-width);overflow:hidden;position:absolute;width:100%;z-index:1001}@media(min-width: 576px){.searchcraft-popover-form-modal-wrapper{border-radius:var(--sc-border-radius-2xl);inset:0;margin-top:100px;max-height:var(--sc-popover-list-view-height);max-width:var(--sc-popover-modal-max-width);position:relative}}.searchcraft-popover-form-modal-cancel-button{border-radius:calc(--sc-border-radius-2xl - 20px);border-radius:calc(var(--sc-border-radius-2xl) - 20px);padding:8px}@media(min-width: 576px){.searchcraft-popover-form-modal-cancel-button{padding:8px 12px}}.searchcraft-popover-form-fullscreen{background-color:var(--sc-surface-neutral-primary);display:flex;flex-direction:column;justify-content:space-between;inset:0;position:fixed;z-index:1000}.searchcraft-popover-form-fullscreen .searchcraft-popover-list-item-link,.searchcraft-popover-form-fullscreen .searchcraft-adm-ad-link{border-radius:var(--sc-border-radius-lg)}.searchcraft-popover-form-fullscreen-cancel-button{border-radius:var(--sc-border-radius-lg);padding:8px}@media(min-width: 576px){.searchcraft-popover-form-fullscreen-cancel-button{padding:8px 12px}}.searchcraft-popover-footer{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;background-color:var(--sc-surface-neutral-secondary);box-shadow:0 1px 1px rgb(from var(--sc-content-neutral-primary) r g b/10%) inset,0 2px 2px rgb(from var(--sc-content-neutral-primary) r g b/5%) inset,0 4px 4px rgb(from var(--sc-content-neutral-primary) r g b/5%) inset;display:flex;gap:8px;justify-content:space-between;line-height:1;padding:20px 24px}@media(min-width: 576px){.searchcraft-popover-footer{padding:20px 32px}}.searchcraft-popover-footer-results-info{margin:0}.searchcraft-popover-footer-link{color:var(--sc-content-neutral-primary);display:flex;max-width:160px;width:100%}:root{--sc-popover-list-item-image-fit: contain}.searchcraft-popover-list-item{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;border-bottom:1px solid var(--sc-border-neutral);padding:12px 0}searchcraft-popover-list-item:last-child .searchcraft-popover-list-item{border-bottom:none}.searchcraft-popover-list-item-link{align-items:flex-start;color:var(--sc-content-neutral-primary);display:flex;gap:24px;padding:12px;text-decoration:none}.searchcraft-popover-list-item-link:focus,.searchcraft-popover-list-item-link:active{background-color:var(--sc-surface-neutral-primary-active)}.searchcraft-popover-list-item-link:hover{background-color:var(--sc-surface-neutral-primary-hover)}.searchcraft-popover-list-item-image-wrapper{align-items:center;aspect-ratio:16/9;display:flex;flex-shrink:0;justify-content:center;width:160px}.searchcraft-popover-list-item-image{height:100%;object-fit:var(--sc-popover-list-item-image-fit);width:100%}.searchcraft-popover-list-item-content{display:flex;flex-direction:column;flex-grow:1;gap:4px;justify-content:center}.searchcraft-popover-list-item-content-title,.searchcraft-popover-list-item-content-subtitle{display:-webkit-box;line-clamp:2;margin:0;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}.searchcraft-popover-list-item-content-title{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-heading-5-font-size);font-weight:var(--sc-font-bold)}.searchcraft-popover-list-item-content-subtitle{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal)}.searchcraft-popover-list-view{display:flex;flex-direction:column}.searchcraft-results-info{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-primary);margin:0}.searchcraft-slider{align-items:center;display:flex;flex-direction:column;gap:10px;width:100%}.searchcraft-slider-range{align-items:center;background-color:var(--sc-surface-disabled);border-radius:999px;display:flex;position:relative;height:4px;width:100%}.searchcraft-slider-range::-webkit-slider-runnable-track{pointer-events:none}.searchcraft-slider-range .searchcraft-slider-active-range{background-color:var(--sc-surface-brand-primary);border-radius:2px;height:4px;position:absolute;top:50%;transform:translateY(-50%);z-index:0}.searchcraft-slider-range .searchcraft-slider-active-range::-webkit-slider-runnable-track{pointer-events:none}.searchcraft-slider-range .searchcraft-slider-active-range::-moz-range-track{pointer-events:none}.searchcraft-slider-range .searchcraft-slider-input{appearance:none;background:rgba(0,0,0,0);border-radius:2px;height:4px;margin:0;outline:none;pointer-events:none;position:absolute;width:100%;-webkit-appearance:none}.searchcraft-slider-range .searchcraft-slider-input::-webkit-slider-thumb{background-color:var(--sc-surface-neutral-light);border-radius:50%;border:2px solid var(--sc-border-neutral);cursor:pointer;height:20px;pointer-events:all;width:20px;-webkit-appearance:none}.searchcraft-slider-range .searchcraft-slider-input::-moz-range-thumb{background-color:var(--sc-surface-neutral-light);border-radius:50%;border:2px solid var(--sc-border-neutral);cursor:pointer;height:20px;pointer-events:all;width:20px}.searchcraft-slider-label{color:var(--sc-content-primary);display:flex;font-family:"Source Sans Pro",sans-serif;font-size:15px;font-weight:600;justify-content:space-between;margin-top:10px;width:100%}.searchcraft-slider-start-label,.searchcraft-slider-end-label{min-width:30px;text-align:center}.searchcraft-toggle-button{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.searchcraft-toggle-button-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-neutral-primary);margin:0}.searchcraft-toggle-button-sub-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-neutral-secondary);margin:0}.searchcraft-toggle-button-background{background:var(--sc-surface-disabled);border-radius:var(--sc-border-radius-full);border:none;cursor:pointer;flex-shrink:0;height:26px;position:relative;transition:background-color .2s;width:44px}.searchcraft-toggle-button-handle{background:var(--sc-surface-neutral-light);border-radius:50%;height:18px;left:4px;position:absolute;top:calc(50% - 9px);transition:transform .3s ease;width:18px}.searchcraft-toggle-button-active .searchcraft-toggle-button-background{background:var(--sc-surface-brand-primary);box-shadow:0px 0px 0px 1px rgba(0,0,0,.05)}.searchcraft-toggle-button-active .searchcraft-toggle-button-handle{transform:translateX(16px)}.searchcraft-pagination{display:inline-grid;gap:16px;grid-template-columns:repeat(3, auto);grid-template-rows:1fr}.searchcraft-pagination-list{border:1px solid var(--sc-border-neutral);border-radius:var(--sc-border-radius);display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0;width:auto}.searchcraft-pagination-list li{border-right:1px solid var(--sc-border-neutral);height:100%;min-height:44px;width:44px}.searchcraft-pagination-list li:last-child{border-right:none}.searchcraft-pagination-item{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);align-items:center;background-color:var(--sc-surface-neutral-primary);border:none;display:flex;height:100%;justify-content:center;width:100%}.searchcraft-pagination-item-active{background-color:var(--sc-surface-brand-secondary);font-weight:var(--sc-font-bold)}.searchcraft-pagination-control{border:1px solid var(--sc-border-neutral);border-radius:var(--sc-border-radius)}.searchcraft-pagination-range{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);align-items:center;display:flex}.searchcraft-select{display:flex;flex-direction:column;gap:4px}.searchcraft-select-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);font-weight:var(--sc-font-bold)}.searchcraft-select-input-wrapper{position:relative}.searchcraft-select-input{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);appearance:none;background-color:var(--sc-surface-neutral-secondary);border:2px solid rgba(0,0,0,0);border-radius:var(--sc-border-radius);cursor:pointer;height:44px;padding:0 44px 0 16px;width:100%}.searchcraft-select-input:hover{background-color:var(--sc-surface-neutral-secondary-hover)}.searchcraft-select-input:active{background-color:var(--sc-surface-neutral-secondary-active)}.searchcraft-select-input:focus{border-color:var(--sc-border-brand);outline:none}.searchcraft-select-input-icon{fill:none;pointer-events:none;position:absolute;right:12px;top:50%;transform:translateY(-50%)}.searchcraft-select-caption{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal)}.searchcraft-search-results-per-page{display:flex}.searchcraft-search-results-per-page-select{align-items:center;display:flex;gap:12px}.searchcraft-search-results-per-page-select-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal)}.searchcraft-search-results-per-page-select-input{min-width:120px}/*# sourceMappingURL=hologram.css.map */
|
|
7971
|
+
var styles = `[class*=searchcraft-],[class*=searchcraft-] *,[class*=searchcraft-]::before,[class*=searchcraft-]::after,[class*=searchcraft-] *,::before,[class*=searchcraft-] *,::after{box-sizing:border-box;padding:0;margin:0}:root{--sc-text-base-size: 1em;--sc-text-scale-ratio: 1.1;--sc-font-family: sans-serif;--sc-font-bold: 700;--sc-font-normal: 400;--sc-heading-1-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-2-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-3-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-4-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-5-font-size: calc( var(--sc-text-base-size) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) );--sc-heading-6-font-size: calc( var(--sc-text-base-size) / ( var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) ) );--sc-body-font-size: calc(var(--sc-text-base-size));--sc-body-small-font-size: calc( var(--sc-text-base-size) / ( var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) * var(--sc-text-scale-ratio) ) )}:root{--sc-border-radius: 8px;--sc-border-radius-sm: calc(var(--sc-border-radius) / 2);--sc-border-radius-lg: calc(var(--sc-border-radius) * 2);--sc-border-radius-xl: calc(var(--sc-border-radius) * 3);--sc-border-radius-2xl: calc(var(--sc-border-radius) * 4);--sc-border-radius-full: 9999px}:root{--sc-breakpoint-sm: 576px;--sc-breakpoint-md: 768px;--sc-breakpoint-lg: 992px}:root{--sc-surface-neutral-primary: var(--sc-color-background, #ffffff);--sc-color-background-hover-computed: hsl( from var(--sc-color-background) h s clamp(10, calc(l + 5), 95) );--sc-surface-neutral-primary-hover: var( --sc-color-background-hover, var(--sc-color-background-hover-computed, #fafafa) );--sc-color-background-active-computed: hsl( from var(--sc-color-background) h s clamp(5, calc(l - 5), 90) );--sc-surface-neutral-primary-active: var( --sc-color-background-active, var(--sc-color-background-active-computed, #f7f7f7) );--sc-surface-neutral-secondary: var( --sc-color-background-secondary, var(--sc-color-background, #f3f3f3) );--sc-color-background-secondary-hover-computed: hsl( from var(--sc-color-background-secondary) h s clamp(10, calc(l + 5), 95) );--sc-surface-neutral-secondary-hover: var( --sc-color-background-hover, var(--sc-color-background-hover-computed, #e6e6e6) );--sc-color-background-secondary-active-computed: hsl( from var(--sc-color-background-secondary) h s clamp(5, calc(l - 5), 90) );--sc-surface-neutral-secondary-active: var( --sc-color-background-secondary-active, var(--sc-color-background-active-computed, #e0e0e0) );--sc-surface-neutral-light: #ffffff;--sc-content-neutral-primary: var(--sc-color-foreground, #292929);--sc-color-foreground-secondary-computed: hsl( from var(--sc-color-foreground) h s clamp(10, calc(l + 5), 90) );--sc-content-neutral-secondary: var( --sc-color-foreground-secondary, var(--sc-color-foreground-secondary-computed, #404040) );--sc-border-neutral: var(--sc-color-border, rgba(0, 0, 0, 0.1));--sc-surface-brand-primary: var(--sc-color-brand, #000000);--sc-color-brand-hover-computed: hsl( from var(--sc-color-brand) h s clamp(20, calc(l + 5), 95) );--sc-surface-brand-primary-hover: var( --sc-color-brand-hover, var(--sc-color-brand-hover-computed, #2e2e2e) );--sc-color-brand-active-computed: hsl( from var(--sc-color-brand) h s clamp(10, calc(l - 5), 85) );--sc-surface-brand-primary-active: var( --sc-color-brand-active, var(--sc-color-brand-active-computed, #292929) );--sc-surface-brand-secondary: var( --sc-color-brand-secondary, var(--sc-color-brand, #e6e6e6) );--sc-color-brand-secondary-hover-computed: hsl( from var(--sc-color-brand-secondary) h s clamp(10, calc(l + 5), 95) );--sc-surface-brand-secondary-hover: var( --sc-color-background-hover, var(--sc-color-background-hover-computed, #ebebeb) );--sc-color-brand-secondary-active-computed: hsl( from var(--sc-color-brand-secondary) h s clamp(5, calc(l - 5), 90) );--sc-surface-brand-secondary-active: var( --sc-color-brand-secondary-active, var(--sc-color-brand-active-computed, #e0e0e0) );--sc-content-brand: var( --sc-color-brand-text, var(--sc-surface-brand-primary) );--sc-content-brand-on-primary: #ffffff;--sc-border-brand: var(--sc-surface-brand-primary);--sc-surface-success-primary: var(--sc-color-success, #008000);--sc-color-success-primary-hover-computed: hsl( from var(--sc-color-success) h s 30 );--sc-surface-success-primary-hover: var( --sc-color-success-primary-hover, var(--sc-color-success-primary-hover-computed, #009900) );--sc-color-success-primary-active-computed: hsl( from var(--sc-color-success) h s 20 );--sc-surface-success-primary-active: var( --sc-color-success-primary-active, var(--sc-color-success-primary-active-computed, #006600) );--sc-color-success-secondary-computed: hsl( from var(--sc-color-success) h s 90 );--sc-surface-success-secondary: var( --sc-color-success-secondary, var(--sc-color-success-secondary-computed, #ccffcc) );--sc-color-success-secondary-hover-computed: hsl( from var(--sc-color-success-secondary) h s 95 );--sc-surface-success-secondary-hover: var( --sc-color-success-secondary-hover, var(--sc-color-success-secondary-hover-computed, #e6ffe6) );--sc-color-success-secondary-active-computed: hsl( from var(--sc-color-success-secondary) h s 85 );--sc-surface-success-secondary-active: var( --sc-color-success-secondary-active, var(--sc-color-success-secondary-active-computed, #b2ffb2) );--sc-content-success: var( --sc-color-brand-text, hsl(from var(--sc-surface-success-primary) h s 30) );--sc-content-success-on-primary: #ffffff;--sc-border-success: var(--sc-surface-success-primary);--sc-surface-caution-primary: var(--sc-color-caution, #cc6600);--sc-color-caution-primary-hover-computed: hsl( from var(--sc-color-caution) h s 30 );--sc-surface-caution-primary-hover: var( --sc-color-caution-primary-hover, var(--sc-color-caution-primary-hover-computed, #e57300) );--sc-color-caution-primary-active-computed: hsl( from var(--sc-color-caution) h s 20 );--sc-surface-caution-primary-active: var( --sc-color-caution-primary-active, var(--sc-color-caution-primary-active-computed, #b25a00) );--sc-color-caution-secondary-computed: hsl( from var(--sc-color-caution) h s 90 );--sc-surface-caution-secondary: var( --sc-color-caution-secondary, var(--sc-color-caution-secondary-computed, #ffd9b3) );--sc-color-caution-secondary-hover-computed: hsl( from var(--sc-color-caution-secondary) h s 95 );--sc-surface-caution-secondary-hover: var( --sc-color-caution-secondary-hover, var(--sc-color-caution-secondary-hover-computed, #ffe5cc) );--sc-color-caution-secondary-active-computed: hsl( from var(--sc-color-caution-secondary) h s 85 );--sc-surface-caution-secondary-active: var( --sc-color-caution-secondary-active, var(--sc-color-caution-secondary-active-computed, #ffcc99) );--sc-content-caution: var( --sc-color-caution-text, hsl(from var(--sc-surface-caution-primary) h s 30) );--sc-content-caution-on-primary: #ffffff;--sc-border-caution: var(--sc-surface-caution-primary);--sc-surface-danger-primary: var(--sc-color-danger, #cc0000);--sc-color-danger-primary-hover-computed: hsl( from var(--sc-color-danger) h s 30 );--sc-surface-danger-primary-hover: var( --sc-color-danger-primary-hover, var(--sc-color-danger-primary-hover-computed, #e50000) );--sc-color-danger-primary-active-computed: hsl( from var(--sc-color-danger) h s 20 );--sc-surface-danger-primary-active: var( --sc-color-danger-primary-active, var(--sc-color-danger-primary-active-computed, #b30000) );--sc-color-danger-secondary-computed: hsl(from var(--sc-color-danger) h s 90);--sc-surface-danger-secondary: var( --sc-color-danger-secondary, var(--sc-color-danger-secondary-computed, #ffcccc) );--sc-color-danger-secondary-hover-computed: hsl( from var(--sc-color-danger-secondary) h s 95 );--sc-surface-danger-secondary-hover: var( --sc-color-danger-secondary-hover, var(--sc-color-danger-secondary-hover-computed, #ffe7e7) );--sc-color-danger-secondary-active-computed: hsl( from var(--sc-color-danger-secondary) h s 85 );--sc-surface-danger-secondary-active: var( --sc-color-danger-secondary-active, var(--sc-color-danger-secondary-active-computed, #ffb3b3) );--sc-content-danger: var( --sc-color-caution-text, hsl(from var(--sc-surface-danger-primary) h s 30) );--sc-content-danger-on-primary: #ffffff;--sc-border-danger: var(--sc-surface-danger-primary);--sc-color-disabled: hsl(from var(--sc-color-page-primary) h s calc(l * 0.5));--sc-surface-disabled: var(--sc-color-disabled, #d9d9d9);--sc-color-disabled-text: hsl( from var(--sc-color-text-primary) h s calc(l * 0.5) );--sc-content-disabled: var(--sc-color-disabled-text, #737373);--sc-content-disabled-on-disabled: var(--sc-color-disabled-text, #737373)}@supports(hanging-punctuation: first) and (font: -apple-system-body) and (-webkit-appearance: none){:root{--sc-color-background-hover-computed: hsl( from var(--sc-color-background) h s clamp(10%, calc(l + 5%), 95%) );--sc-color-background-active-computed: hsl( from var(--sc-color-background) h s clamp(5%, calc(l - 5%), 90%) );--sc-color-foreground-secondary-computed: hsl( from var(--sc-color-foreground) h s clamp(10%, calc(l + 5%), 90%) );--sc-color-brand-hover-computed: hsl( from var(--sc-color-brand) h s clamp(20%, calc(l + 5%), 95%) );--sc-color-brand-active-computed: hsl( from var(--sc-color-brand) h s clamp(10%, calc(l - 5%), 85%) );--sc-color-success-primary-hover-computed: hsl( from var(--sc-color-success) h s 30% );--sc-color-success-primary-active-computed: hsl( from var(--sc-color-success) h s 20% );--sc-color-success-secondary-computed: hsl( from var(--sc-color-success) h s 90% );--sc-color-success-secondary-hover-computed: hsl( from var(--sc-color-success-secondary) h s 95% );--sc-color-success-secondary-active-computed: hsl( from var(--sc-color-success-secondary) h s 85% );--sc-content-success: var( --sc-color-brand-text, hsl(from var(--sc-surface-success-primary) h s 30%) );--sc-color-caution-primary-hover-computed: hsl( from var(--sc-color-caution) h s 30% );--sc-color-caution-primary-active-computed: hsl( from var(--sc-color-caution) h s 20% );--sc-color-caution-secondary-computed: hsl( from var(--sc-color-caution) h s 90% );--sc-color-caution-secondary-hover-computed: hsl( from var(--sc-color-caution-secondary) h s 95% );--sc-color-caution-secondary-active-computed: hsl( from var(--sc-color-caution-secondary) h s 85% );--sc-content-caution: var( --sc-color-caution-text, hsl(from var(--sc-surface-caution-primary) h s 30%) );--sc-color-danger-primary-hover-computed: hsl( from var(--sc-color-danger) h s 30% );--sc-color-danger-primary-active-computed: hsl( from var(--sc-color-danger) h s 20% );--sc-color-danger-secondary-computed: hsl( from var(--sc-color-danger) h s 90% );--sc-color-danger-secondary-hover-computed: hsl( from var(--sc-color-danger-secondary) h s 95% );--sc-color-danger-secondary-active-computed: hsl( from var(--sc-color-danger-secondary) h s 85% );--sc-content-danger: var( --sc-color-caution-text, hsl(from var(--sc-surface-danger-primary) h s 30%) )}}.searchcraft-ad{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased}.searchcraft-ad-no-template{display:flex;flex-direction:column;font-size:.875rem}.searchcraft-ad-no-template>p{margin:0}.searchcraft-adm-ad{display:flex;flex-direction:column;justify-content:center;gap:16px}.searchcraft-search-result{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased}.searchcraft-search-result-no-template{display:flex;flex-direction:column;font-size:.875rem}.searchcraft-search-result-no-template>p{margin:0}.searchcraft-search-results{display:flex;flex-direction:column;justify-content:center;gap:16px}.searchcraft-search-results-empty-state{text-align:center}.searchcraft-search-results-error-message{text-align:center}.searchcraft-button{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);background:none;border:2px solid rgba(0,0,0,0);border-radius:var(--sc-border-radius);cursor:pointer;display:flex;gap:4px;padding:12px;position:relative}.searchcraft-button.searchcraft-button-disabled{cursor:not-allowed}.searchcraft-button-primary{background-color:var(--sc-surface-brand-primary);color:var(--sc-content-brand-on-primary);font-weight:var(--sc-font-bold)}.searchcraft-button-primary:hover{background-color:var(--sc-surface-brand-primary-hover)}.searchcraft-button-primary:focus{border-color:var(--sc-border-primary)}.searchcraft-button-primary:active{background-color:var(--sc-surface-brand-primary-active)}.searchcraft-button-primary.searchcraft-button-disabled,.searchcraft-button-primary.searchcraft-button-disabled:hover,.searchcraft-button-primary.searchcraft-button-disabled:focus,.searchcraft-button-primary.searchcraft-button-disabled:active{background-color:var(--sc-surface-disabled);border-color:rgba(0,0,0,0);color:var(--sc-content-disabled)}.searchcraft-button-tertiary{background-color:var(--sc-surface-neutral-primary);color:var(--sc-content-brand);font-weight:var(--sc-font-normal)}.searchcraft-button-tertiary:hover{background-color:var(--sc-surface-brand-secondary-hover)}.searchcraft-button-tertiary:focus{background-color:var(--sc-surface-neutral-light);border-color:var(--sc-border-primary)}.searchcraft-button-tertiary:active{background-color:var(--sc-surface-brand-secondary-active)}.searchcraft-button-tertiary.searchcraft-button-disabled,.searchcraft-button-tertiary.searchcraft-button-disabled:hover,.searchcraft-button-tertiary.searchcraft-button-disabled:focus,.searchcraft-button-tertiary.searchcraft-button-disabled:active{background-color:var(--sc-surface-neutral-light);border-color:rgba(0,0,0,0);color:var(--sc-content-disabled)}.searchcraft-button-icon{fill:none}.searchcraft-error-message{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-danger);margin:0}.searchcraft-facet-list{display:flex;flex-direction:column;gap:8px;width:100%}.searchcraft-facet-list-checkbox-label{align-items:center;color:var(--sc-content-neutral-primary);display:flex;font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);gap:8px;position:relative;-webkit-font-smoothing:antialiased}.searchcraft-facet-list-checkbox-input-wrapper{position:relative}.searchcraft-facet-list-checkbox-input{align-items:center;appearance:none;background-color:var(--sc-surface-neutral-secondary);border:1px solid var(--sc-surface-disabled);border-radius:var(--sc-border-radius);cursor:pointer;display:flex;height:24px;justify-content:center;width:24px;margin:0}.searchcraft-facet-list-checkbox-input:focus{outline:2px solid var(--sc-surface-brand-primary);outline-offset:2px}.searchcraft-facet-list-checkbox-input:checked{background-color:var(--sc-surface-brand-primary);position:relative}.searchcraft-facet-list-checkbox-input:checked+.searchcraft-facet-list-checkbox-input-check-icon{display:flex}.searchcraft-facet-list-checkbox-input:checked+.searchcraft-facet-list-checkbox-input-dash-icon{display:flex}.searchcraft-facet-child-list{display:flex;flex-direction:column;gap:6px}.searchcraft-facet-child-list-checkbox-label{margin-left:24px}.searchcraft-facet-child-list-checkbox-label:first-child{margin-top:6px}.searchcraft-facet-list-checkbox-input-check-icon{display:none;height:16px;left:50%;position:absolute;margin-top:2px;top:50%;transform:translate(-50%, -50%);width:16px}.searchcraft-facet-list-checkbox-input-dash-icon{display:none;height:3px;left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);width:14px}.searchcraft-facet-list-message{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-disabled);text-align:center}.searchcraft-filter-panel{display:flex;flex-direction:column;gap:16px}.searchcraft-filter-panel-section{display:flex;flex-direction:column;gap:8px}.searchcraft-filter-panel-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);font-weight:var(--sc-font-bold)}:root{--sc-input-form-border-radius: var(--sc-border-radius);--sc-input-form-search-icon-size: 20px;--sc-input-form-clear-icon-size: 20px}.searchcraft-input-form-grid{display:grid;gap:4px 8px}.searchcraft-input-form-grid-button-left{grid-template-rows:repeat(3, auto);grid-template-columns:auto 1fr}.searchcraft-input-form-grid-button-left .searchcraft-input-form-button{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-form-grid-button-left .searchcraft-input-form-label{grid-column:2/span 1;grid-row:1/span 1}.searchcraft-input-form-grid-button-left .searchcraft-input-form-error-message{grid-column:2/span 1;grid-row:3/span 1}.searchcraft-input-form-grid-button-left .searchcraft-input-form-input-wrapper{grid-column:2/span 1;grid-row:2/span 1}.searchcraft-input-form-grid-button-right{grid-template-rows:repeat(3, auto);grid-template-columns:1fr auto}.searchcraft-input-form-grid-button-right .searchcraft-input-form-button{grid-column:2/span 1;grid-row:2/span 1}.searchcraft-input-form-grid-button-right .searchcraft-input-form-label{grid-column:1/span 1;grid-row:1/span 1}.searchcraft-input-form-grid-button-right .searchcraft-input-form-error-message{grid-column:1/span 1;grid-row:3/span 1}.searchcraft-input-form-grid-button-right .searchcraft-input-form-input-wrapper{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-form-grid-button-none{grid-template-rows:repeat(3, auto);grid-template-columns:auto}.searchcraft-input-form-grid-button-none .searchcraft-input-form-button{display:none}.searchcraft-input-form-grid-button-none .searchcraft-input-form-label{grid-column:1/span 1;grid-row:1/span 1}.searchcraft-input-form-grid-button-none .searchcraft-input-form-error-message{grid-column:1/span 1;grid-row:3/span 1}.searchcraft-input-form-grid-button-none .searchcraft-input-form-input-wrapper{grid-column:1/span 1;grid-row:2/span 1}.searchcraft-input-form-input-wrapper{display:flex;position:relative}.searchcraft-input-form-input{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);background-color:var(--sc-surface-neutral-secondary);border-radius:var(--sc-input-form-border-radius);border:none;color:var(--sc-content-neutral-primary);flex:1;outline:none;padding:12px 44px}.searchcraft-input-form-input::placeholder{color:var(--sc-content-disabled)}.searchcraft-input-form-input:focus{outline:var(--sc-border-brand) solid 2px;outline-offset:-1px}.searchcraft-input-form-input.searchcraft-placeholder-hide-on-focus:focus::placeholder{opacity:0}.searchcraft-input-form-error{color:var(--sc-content-danger);outline:var(--sc-border-danger) solid 2px}.searchcraft-input-form-error:focus{outline:var(--sc-border-danger) solid 2px}.searchcraft-input-form-input-icon{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;pointer-events:none;top:0;width:44px}.searchcraft-input-form-input-search-icon{color:var(--sc-content-neutral-secondary);fill:none;height:var(--sc-input-form-search-icon-size);pointer-events:none;width:var(--sc-input-form-search-icon-size)}.searchcraft-input-form-clear-button{all:unset;align-items:center;bottom:0;border:none;cursor:pointer;display:flex;justify-content:center;outline:none;position:absolute;right:0;top:0;width:44px}.searchcraft-input-form-clear-icon{color:var(--sc-content-brand);fill:none;height:var(--sc-input-form-clear-icon-size);width:var(--sc-input-form-clear-icon-size)}.searchcraft-input-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-neutral-primary);font-weight:var(--sc-font-bold);margin-top:4px;margin-bottom:4px}:root{--sc-popover-button-border-radius: var(--sc-border-radius)}@media(min-width: 576px){:root{--sc-popover-button-border-radius: var(--sc-border-radius-lg)}}.searchcraft-popover-button{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);cursor:pointer}.searchcraft-popover-button-skeuomorphic{appearance:none;background:none;border:none;color:var(--sc-content-neutral-primary);display:block;width:100%}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-wrapper{border:1px solid var(--sc-border-neutral);border-radius:var(--sc-popover-button-border-radius);box-shadow:0 1px 1px rgb(from var(--sc-content-neutral-secondary) r g b/10%) inset,0 2px 4px rgb(from var(--sc-content-neutral-secondary) r g b/5%) inset;display:flex;gap:24px;height:40px;justify-content:space-between;line-height:1;padding:4px 5px 4px 10px;background:var(--sc-surface-neutral-primary)}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-wrapper{box-shadow:0 1px 1px rgb(from var(--sc-content-neutral-secondary) r g b/10%) inset,0 2px 2px rgb(from var(--sc-content-neutral-secondary) r g b/5%) inset,0 4px 4px rgb(from var(--sc-content-neutral-secondary) r g b/5%) inset;height:63px;padding:8px 10px 8px 16px}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-input{align-items:center;display:flex;gap:4px}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-input{gap:8px}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps{color:var(--sc-content-neutral-secondary);display:flex;gap:4px;font-size:20px;font-weight:500}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps{gap:8px}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap{border-radius:calc(var(--sc-popover-button-border-radius) - 3px);border-radius:calc(var(var(--sc-popover-button-border-radius)) - 3px);background-color:var(--sc-surface-neutral-primary);box-shadow:0 3px hsl(from var(--sc-surface-neutral-secondary) h s calc(l - 5)),0 1px 2px rgb(from var(--sc-content-neutral-secondary) r g b/10%),0 6px 4px rgb(from var(--sc-content-neutral-secondary) r g b/5%);height:calc(100% - 2px);position:relative}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap{border-radius:calc(var(--sc-popover-button-border-radius) - 8px);border-radius:calc(var(var(--sc-popover-button-border-radius)) - 8px);box-shadow:0 4px hsl(from var(--sc-surface-neutral-secondary) h s calc(l - 5)),0 1px 2px rgb(from var(--sc-content-neutral-secondary) r g b/15%),0 6px 1px rgb(from var(--sc-content-neutral-secondary) r g b/20%),0 7px 2px rgb(from var(--sc-content-neutral-secondary) r g b/15%),0 9px 4px rgb(from var(--sc-content-neutral-secondary) r g b/10%),0 13px 8px rgb(from var(--sc-content-neutral-secondary) r g b/5%);height:calc(100% - 5px)}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::before,.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::after{content:"";display:block}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::before{border-radius:calc(var(--sc-popover-button-border-radius) - 4px);border-radius:calc(var(var(--sc-popover-button-border-radius)) - 4px);background:linear-gradient(340deg, rgb(from var(--sc-surface-neutral-secondary) r g b/2%) 0%, var(--sc-surface-neutral-secondary) 100%);inset:2px;position:absolute}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::before{border-radius:calc(var(--sc-popover-button-border-radius) - 12px);border-radius:calc(var(var(--sc-popover-button-border-radius)) - 12px);inset:4px}}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap::after{aspect-ratio:1/1;height:100%}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-keycaps-keycap>span{display:flex;line-height:1;left:50%;margin-top:2%;position:absolute;top:50%;transform:translate(-50%, -50%)}.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-input-search-icon{height:60%;width:auto}@media(min-width: 576px){.searchcraft-popover-button-skeuomorphic .searchcraft-popover-button-input-search-icon{height:50%}}:root{--sc-popover-list-view-height: 600px;--sc-popover-modal-max-width: 800px}.searchcraft-popover-form{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);display:flex;flex:1;flex-direction:column}.searchcraft-popover-form searchcraft-input-form,.searchcraft-popover-form searchcraft-popover-footer{width:100%}.searchcraft-popover-form.searchcraft-popover-form-active .searchcraft-popover-form-input{padding-bottom:1px}.searchcraft-popover-form searchcraft-popover-list-view{flex-shrink:1;height:100%;min-height:0;overflow:auto;padding:0 24px}.searchcraft-popover-form-input{display:flex;flex-direction:row;gap:12px}.searchcraft-popover-form-input .searchcraft-input-form-input{background-color:var(--sc-surface-neutral-primary);border:1px solid var(--sc-border-neutral);border-radius:var(--sc-border-radius-lg);box-shadow:0 1px 1px rgb(from var(--sc-content-neutral-primary) r g b/10%) inset,0 2px 2px rgb(from var(--sc-content-neutral-primary) r g b/5%) inset,0 4px 4px rgb(from var(--sc-content-neutral-primary) r g b/5%) inset;width:0}.searchcraft-popover-form-cancel-button{background:none;border:none;cursor:pointer;font-size:14px}.searchcraft-popover-form-modal-input,.searchcraft-popover-form-fullscreen-input{padding:24px}.searchcraft-popover-form-modal-popover-list-view,.searchcraft-popover-form-fullscreen-popover-list-view{flex-grow:1;flex-shrink:1;min-height:0;overflow:auto;padding:0 24px}.searchcraft-popover-form-inline{background-color:var(--sc-surface-neutral-primary);border:1px solid rgba(0,0,0,0);border-radius:var(--sc-border-radius-xl);padding:12px;position:relative}.searchcraft-popover-form-inline.searchcraft-popover-form-active{border:1px solid var(--sc-border-neutral);border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;padding-bottom:1px}.searchcraft-popover-form-inline searchcraft-popover-list-view{padding:0 12px}.searchcraft-popover-form-inline .searchcraft-input-form-input,.searchcraft-popover-form-inline .searchcraft-popover-list-item-link,.searchcraft-popover-form-inline .searchcraft-adm-ad-link{border-radius:calc(--sc-border-radius-xl - 12px);border-radius:calc(var(--sc-border-radius-xl) - 12px)}.searchcraft-popover-form-inline-wrapper{background-color:var(--sc-surface-neutral-primary);border:1px solid var(--sc-border-neutral);border-top:none;border-bottom-left-radius:var(--sc-border-radius-xl);border-bottom-right-radius:var(--sc-border-radius-xl);display:flex;flex-direction:column;left:-1px;max-height:var(--sc-popover-list-view-height);overflow:hidden;position:absolute;right:-1px;top:100%}.searchcraft-popover-form-modal{align-items:center;display:flex;inset:0;position:fixed;z-index:1000}.searchcraft-popover-form-modal .searchcraft-input-form-input,.searchcraft-popover-form-modal .searchcraft-popover-list-item-link,.searchcraft-popover-form-modal .searchcraft-adm-ad-link{border-radius:calc(--sc-border-radius-2xl - 20px);border-radius:calc(var(--sc-border-radius-2xl) - 20px)}.searchcraft-popover-form-modal-backdrop{background-color:rgb(from var(--sc-content-neutral-primary) r g b/50%);display:none;inset:0;position:fixed}@media(min-width: 576px){.searchcraft-popover-form-modal-backdrop{display:block}}.searchcraft-popover-form-modal-wrapper{background-color:var(--sc-surface-neutral-primary);box-shadow:1px 2px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 2px 4px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 4px 8px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 8px 16px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 16px 32px rgb(from var(--sc-content-neutral-primary) r g b/7%),0 32px 64px rgb(from var(--sc-content-neutral-primary) r g b/7%);display:flex;flex-direction:column;inset:0;max-width:var(--sc-popover-modal-max-width);overflow:hidden;position:absolute;width:100%;z-index:1001}@media(min-width: 576px){.searchcraft-popover-form-modal-wrapper{border-radius:var(--sc-border-radius-2xl);inset:0;margin-top:100px;max-height:var(--sc-popover-list-view-height);max-width:var(--sc-popover-modal-max-width);position:relative}}.searchcraft-popover-form-modal-cancel-button{border-radius:calc(--sc-border-radius-2xl - 20px);border-radius:calc(var(--sc-border-radius-2xl) - 20px);padding:8px}@media(min-width: 576px){.searchcraft-popover-form-modal-cancel-button{padding:8px 12px}}.searchcraft-popover-form-fullscreen{background-color:var(--sc-surface-neutral-primary);display:flex;flex-direction:column;justify-content:space-between;inset:0;position:fixed;z-index:1000}.searchcraft-popover-form-fullscreen .searchcraft-popover-list-item-link,.searchcraft-popover-form-fullscreen .searchcraft-adm-ad-link{border-radius:var(--sc-border-radius-lg)}.searchcraft-popover-form-fullscreen-cancel-button{border-radius:var(--sc-border-radius-lg);padding:8px}@media(min-width: 576px){.searchcraft-popover-form-fullscreen-cancel-button{padding:8px 12px}}.searchcraft-popover-footer{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;background-color:var(--sc-surface-neutral-secondary);box-shadow:0 1px 1px rgb(from var(--sc-content-neutral-primary) r g b/10%) inset,0 2px 2px rgb(from var(--sc-content-neutral-primary) r g b/5%) inset,0 4px 4px rgb(from var(--sc-content-neutral-primary) r g b/5%) inset;display:flex;gap:8px;justify-content:space-between;line-height:1;padding:20px 24px}@media(min-width: 576px){.searchcraft-popover-footer{padding:20px 32px}}.searchcraft-popover-footer-results-info{margin:0}.searchcraft-popover-footer-link{color:var(--sc-content-neutral-primary);display:flex;max-width:160px;width:100%}:root{--sc-popover-list-item-image-fit: contain}.searchcraft-popover-list-item{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;border-bottom:1px solid var(--sc-border-neutral);padding:12px 0}searchcraft-popover-list-item:last-child .searchcraft-popover-list-item{border-bottom:none}.searchcraft-popover-list-item-link{align-items:flex-start;color:var(--sc-content-neutral-primary);display:flex;gap:24px;padding:12px;text-decoration:none}.searchcraft-popover-list-item-link:focus,.searchcraft-popover-list-item-link:active{background-color:var(--sc-surface-neutral-primary-active)}.searchcraft-popover-list-item-link:hover{background-color:var(--sc-surface-neutral-primary-hover)}.searchcraft-popover-list-item-image-wrapper{align-items:center;aspect-ratio:16/9;display:flex;flex-shrink:0;justify-content:center;width:160px}.searchcraft-popover-list-item-image{height:100%;object-fit:var(--sc-popover-list-item-image-fit);width:100%}.searchcraft-popover-list-item-content{display:flex;flex-direction:column;flex-grow:1;gap:4px;justify-content:center}.searchcraft-popover-list-item-content-title,.searchcraft-popover-list-item-content-subtitle{display:-webkit-box;line-clamp:2;margin:0;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}.searchcraft-popover-list-item-content-title{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-heading-5-font-size);font-weight:var(--sc-font-bold)}.searchcraft-popover-list-item-content-subtitle{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal)}.searchcraft-popover-list-view{display:flex;flex-direction:column}.searchcraft-results-info{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-primary);margin:0}.searchcraft-slider{align-items:center;display:flex;flex-direction:column;gap:10px;width:100%;margin-top:4px}.searchcraft-slider-range{align-items:center;background-color:var(--sc-surface-disabled);border-radius:999px;display:flex;position:relative;height:4px;width:100%}.searchcraft-slider-range::-webkit-slider-runnable-track{pointer-events:none}.searchcraft-slider-range .searchcraft-slider-active-range{background-color:var(--sc-surface-brand-primary);border-radius:2px;height:4px;position:absolute;top:50%;transform:translateY(-50%);z-index:0}.searchcraft-slider-range .searchcraft-slider-active-range::-webkit-slider-runnable-track{pointer-events:none}.searchcraft-slider-range .searchcraft-slider-active-range::-moz-range-track{pointer-events:none}.searchcraft-slider-range .searchcraft-slider-input{appearance:none;background:rgba(0,0,0,0);border-radius:2px;height:4px;margin:0;outline:none;pointer-events:none;position:absolute;width:100%;-webkit-appearance:none}.searchcraft-slider-range .searchcraft-slider-input::-webkit-slider-thumb{background-color:var(--sc-surface-neutral-light);border-radius:50%;border:1px solid var(--sc-border-neutral);cursor:pointer;height:18px;pointer-events:all;width:18px;-webkit-appearance:none}.searchcraft-slider-range .searchcraft-slider-input::-moz-range-thumb{background-color:var(--sc-surface-neutral-light);border-radius:50%;border:1px solid var(--sc-border-neutral);cursor:pointer;height:18px;pointer-events:all;width:18px}.searchcraft-slider-range .searchcraft-slider-input:focus::-webkit-slider-thumb{outline:2px solid var(--sc-surface-brand-primary)}.searchcraft-slider-range .searchcraft-slider-input:focus::-moz-range-thumb{outline:2px solid var(--sc-surface-brand-primary)}.searchcraft-slider-label{color:var(--sc-content-primary);display:flex;font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);justify-content:space-between;margin-top:4px;width:100%}.searchcraft-slider-start-label,.searchcraft-slider-end-label{min-width:30px;text-align:center}.searchcraft-toggle-button{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.searchcraft-toggle-button-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-neutral-primary);margin:0}.searchcraft-toggle-button-sub-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);color:var(--sc-content-neutral-secondary);margin:0}.searchcraft-toggle-button-background{background:var(--sc-surface-disabled);border-radius:var(--sc-border-radius-full);border:none;cursor:pointer;flex-shrink:0;height:26px;position:relative;transition:background-color .2s;width:44px}.searchcraft-toggle-button-handle{background:var(--sc-surface-neutral-light);border-radius:50%;height:18px;left:4px;position:absolute;top:calc(50% - 9px);transition:transform .3s ease;width:18px}.searchcraft-toggle-button-active .searchcraft-toggle-button-background{background:var(--sc-surface-brand-primary);box-shadow:0px 0px 0px 1px rgba(0,0,0,.05)}.searchcraft-toggle-button-active .searchcraft-toggle-button-handle{transform:translateX(16px)}.searchcraft-pagination{display:inline-grid;gap:16px;grid-template-columns:repeat(3, auto);grid-template-rows:1fr}.searchcraft-pagination-list{border:1px solid var(--sc-border-neutral);border-radius:var(--sc-border-radius);display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0;width:auto}.searchcraft-pagination-list li{border-right:1px solid var(--sc-border-neutral);height:100%;min-height:44px;width:44px}.searchcraft-pagination-list li:last-child{border-right:none}.searchcraft-pagination-item{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);align-items:center;background-color:var(--sc-surface-neutral-primary);border:none;display:flex;height:100%;justify-content:center;width:100%}.searchcraft-pagination-item-active{background-color:var(--sc-surface-brand-secondary);font-weight:var(--sc-font-bold)}.searchcraft-pagination-control{border:1px solid var(--sc-border-neutral);border-radius:var(--sc-border-radius)}.searchcraft-pagination-range{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);align-items:center;display:flex}.searchcraft-select{display:flex;flex-direction:column;gap:4px}.searchcraft-select-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal);font-weight:var(--sc-font-bold)}.searchcraft-select-input-wrapper{position:relative}.searchcraft-select-input{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal);appearance:none;background-color:var(--sc-surface-neutral-secondary);border:2px solid rgba(0,0,0,0);border-radius:var(--sc-border-radius);cursor:pointer;height:44px;padding:0 44px 0 16px;width:100%}.searchcraft-select-input:hover{background-color:var(--sc-surface-neutral-secondary-hover)}.searchcraft-select-input:active{background-color:var(--sc-surface-neutral-secondary-active)}.searchcraft-select-input:focus{border-color:var(--sc-border-brand);outline:none}.searchcraft-select-input-icon{fill:none;pointer-events:none;position:absolute;right:12px;top:50%;transform:translateY(-50%)}.searchcraft-select-caption{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-small-font-size);font-weight:var(--sc-font-normal)}.searchcraft-search-results-per-page{display:flex}.searchcraft-search-results-per-page-select{align-items:center;display:flex;gap:12px}.searchcraft-search-results-per-page-select-label{font-family:var(--sc-font-family);line-height:1.25;-webkit-font-smoothing:antialiased;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-normal)}.searchcraft-search-results-per-page-select-input{min-width:120px}/*# sourceMappingURL=hologram.css.map */
|
|
7696
7972
|
`;
|
|
7697
7973
|
|
|
7698
7974
|
/**
|