@searchcraft/javascript-sdk 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/defineCustomElements.js +24 -24
- package/dist/components/index.d.ts +130 -47
- package/dist/components/index.js +29 -29
- package/dist/components/safeUrl.js +378 -0
- package/dist/components/safeUrl.js.map +1 -0
- package/dist/components/searchcraft-ad.js +1 -1
- package/dist/components/searchcraft-ad2.js +6 -5
- package/dist/components/searchcraft-ad2.js.map +1 -1
- package/dist/components/searchcraft-button.js +1 -1
- package/dist/components/searchcraft-button2.js +2 -2
- package/dist/components/searchcraft-error-message.js +1 -1
- package/dist/components/searchcraft-error-message2.js +1 -1
- package/dist/components/searchcraft-facet-list.js +1 -1
- package/dist/components/searchcraft-facet-list2.js +2 -2
- package/dist/components/searchcraft-filter-panel.js +5 -5
- package/dist/components/searchcraft-input-form.js +1 -1
- package/dist/components/searchcraft-input-form2.js +23 -9
- package/dist/components/searchcraft-input-form2.js.map +1 -1
- package/dist/components/searchcraft-input-label.js +1 -1
- package/dist/components/searchcraft-input-label2.js +2 -2
- package/dist/components/searchcraft-loading.js +1 -1
- package/dist/components/searchcraft-loading2.js +1 -1
- package/dist/components/searchcraft-pagination.js +4 -4
- package/dist/components/searchcraft-popover-button.js +17 -6
- package/dist/components/searchcraft-popover-button.js.map +1 -1
- package/dist/components/searchcraft-popover-footer.js +1 -1
- package/dist/components/searchcraft-popover-footer2.js +5 -5
- package/dist/components/searchcraft-popover-footer2.js.map +1 -1
- package/dist/components/searchcraft-popover-form.js +106 -21
- package/dist/components/searchcraft-popover-form.js.map +1 -1
- package/dist/components/searchcraft-popover-list-item.js +1 -1
- package/dist/components/searchcraft-popover-list-item2.js +71 -10
- package/dist/components/searchcraft-popover-list-item2.js.map +1 -1
- package/dist/components/searchcraft-popover-list-view.js +1 -1
- package/dist/components/searchcraft-popover-list-view2.js +13 -8
- package/dist/components/searchcraft-popover-list-view2.js.map +1 -1
- package/dist/components/searchcraft-results-info.js +5 -5
- package/dist/components/searchcraft-results-info.js.map +1 -1
- package/dist/components/searchcraft-results-summary.js +1 -1
- package/dist/components/searchcraft-results-summary2.js +10 -9
- package/dist/components/searchcraft-results-summary2.js.map +1 -1
- package/dist/components/searchcraft-search-result.js +1 -1
- package/dist/components/searchcraft-search-result2.js +4 -3
- package/dist/components/searchcraft-search-result2.js.map +1 -1
- package/dist/components/searchcraft-search-results-per-page.js +3 -3
- package/dist/components/searchcraft-search-results.js +35 -18
- package/dist/components/searchcraft-search-results.js.map +1 -1
- package/dist/components/searchcraft-select.js +1 -1
- package/dist/components/searchcraft-select2.js +1 -1
- package/dist/components/searchcraft-slider.js +1 -1
- package/dist/components/searchcraft-slider2.js +5 -5
- package/dist/components/searchcraft-summary-box.js +6 -6
- package/dist/components/searchcraft-theme.js +3 -3
- package/dist/components/searchcraft-theme.js.map +1 -1
- package/dist/components/searchcraft-toggle-button.js +1 -1
- package/dist/components/searchcraft-toggle-button2.js +5 -5
- package/dist/hydrate/index.js +611 -57
- package/dist/hydrate/index.mjs +611 -57
- package/dist/themes/hologram.css +1 -1
- package/dist/themes/hologram.css.map +1 -1
- package/dist/types/components/searchcraft-input-form/searchcraft-input-form.d.ts +7 -0
- package/dist/types/components/searchcraft-popover-button/searchcraft-popover-button.d.ts +8 -0
- package/dist/types/components/searchcraft-popover-form/searchcraft-popover-form.d.ts +39 -1
- package/dist/types/components/searchcraft-popover-list-item/searchcraft-popover-list-item.d.ts +22 -1
- package/dist/types/components/searchcraft-popover-list-view/searchcraft-popover-list-view.d.ts +5 -1
- package/dist/types/components/searchcraft-results-summary/searchcraft-results-summary.d.ts +2 -2
- package/dist/types/components/searchcraft-search-results/searchcraft-search-results.d.ts +14 -8
- package/dist/types/components.d.ts +92 -36
- package/dist/types/types/sdk-types/templates.types.d.ts +40 -13
- package/dist/types/utils/html.d.ts +22 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/safeUrl.d.ts +17 -0
- package/package.json +7 -5
- package/dist/components/html.js +0 -18
- package/dist/components/html.js.map +0 -1
package/dist/hydrate/index.mjs
CHANGED
|
@@ -4788,16 +4788,376 @@ function createDOMPurify() {
|
|
|
4788
4788
|
}
|
|
4789
4789
|
var purify = createDOMPurify();
|
|
4790
4790
|
|
|
4791
|
+
/**
|
|
4792
|
+
* States of a small HTML tokenizer, used to find where each value lands in the markup. The
|
|
4793
|
+
* states from `TAG_OPEN` to `AFTER_ATTRIBUTE_NAME` are inside a tag but not in a value.
|
|
4794
|
+
*/
|
|
4795
|
+
const TEXT = 0;
|
|
4796
|
+
const TAG_OPEN = 1;
|
|
4797
|
+
const END_TAG_OPEN = 2;
|
|
4798
|
+
const TAG_NAME = 3;
|
|
4799
|
+
const BEFORE_ATTRIBUTE_NAME = 4;
|
|
4800
|
+
const ATTRIBUTE_NAME = 5;
|
|
4801
|
+
const AFTER_ATTRIBUTE_NAME = 6;
|
|
4802
|
+
const BEFORE_VALUE = 7;
|
|
4803
|
+
const DOUBLE_QUOTED_VALUE = 8;
|
|
4804
|
+
const SINGLE_QUOTED_VALUE = 9;
|
|
4805
|
+
const UNQUOTED_VALUE = 10;
|
|
4806
|
+
const MARKUP_DECLARATION = 11;
|
|
4807
|
+
const COMMENT = 12;
|
|
4808
|
+
const BOGUS_COMMENT = 13;
|
|
4809
|
+
const RAW_TEXT = 14;
|
|
4810
|
+
/**
|
|
4811
|
+
* Elements whose content is read as text up to their end tag.
|
|
4812
|
+
*/
|
|
4813
|
+
const RAW_TEXT_ELEMENTS = [
|
|
4814
|
+
'iframe',
|
|
4815
|
+
'noembed',
|
|
4816
|
+
'noframes',
|
|
4817
|
+
'noscript',
|
|
4818
|
+
'script',
|
|
4819
|
+
'style',
|
|
4820
|
+
'textarea',
|
|
4821
|
+
'title',
|
|
4822
|
+
'xmp',
|
|
4823
|
+
];
|
|
4824
|
+
const SPACE_PATTERN = /[\t\n\f\r ]/;
|
|
4825
|
+
const LETTER_PATTERN = /[a-z]/i;
|
|
4826
|
+
/**
|
|
4827
|
+
* Characters that cannot appear as is in an unquoted attribute value.
|
|
4828
|
+
*/
|
|
4829
|
+
const UNQUOTED_VALUE_SPECIAL_PATTERN = /[\s"'=<>`]/g;
|
|
4830
|
+
const createTokenizer = (state) => ({
|
|
4831
|
+
state,
|
|
4832
|
+
position: 0,
|
|
4833
|
+
tagName: '',
|
|
4834
|
+
isEndTag: false,
|
|
4835
|
+
commentStart: 0,
|
|
4836
|
+
});
|
|
4837
|
+
/**
|
|
4838
|
+
* Reads the markup from where the last call stopped, so `tokenizer.state` tells where the next
|
|
4839
|
+
* character lands. It follows the HTML tokenizer closely enough to tell text, tags and
|
|
4840
|
+
* attribute values apart, including after comments and inside elements such as `<style>`.
|
|
4841
|
+
* It does not follow the tree the browser builds, so inside `<svg>` or `<math>`, elements such
|
|
4842
|
+
* as `<style>` and `<title>` are still read as text.
|
|
4843
|
+
*/
|
|
4844
|
+
const tokenize = (tokenizer, markup) => {
|
|
4845
|
+
while (tokenizer.position < markup.length) {
|
|
4846
|
+
const index = tokenizer.position++;
|
|
4847
|
+
const character = markup.charAt(index);
|
|
4848
|
+
const isSpace = SPACE_PATTERN.test(character);
|
|
4849
|
+
switch (tokenizer.state) {
|
|
4850
|
+
case TEXT:
|
|
4851
|
+
if (character === '<') {
|
|
4852
|
+
tokenizer.state = TAG_OPEN;
|
|
4853
|
+
}
|
|
4854
|
+
break;
|
|
4855
|
+
case TAG_OPEN:
|
|
4856
|
+
case END_TAG_OPEN:
|
|
4857
|
+
if (LETTER_PATTERN.test(character)) {
|
|
4858
|
+
tokenizer.isEndTag = tokenizer.state === END_TAG_OPEN;
|
|
4859
|
+
tokenizer.tagName = character;
|
|
4860
|
+
tokenizer.state = TAG_NAME;
|
|
4861
|
+
}
|
|
4862
|
+
else if (tokenizer.state === END_TAG_OPEN) {
|
|
4863
|
+
tokenizer.state = character === '>' ? TEXT : BOGUS_COMMENT;
|
|
4864
|
+
}
|
|
4865
|
+
else if (character === '/') {
|
|
4866
|
+
tokenizer.state = END_TAG_OPEN;
|
|
4867
|
+
}
|
|
4868
|
+
else if (character === '!') {
|
|
4869
|
+
tokenizer.state = MARKUP_DECLARATION;
|
|
4870
|
+
}
|
|
4871
|
+
else if (character === '?') {
|
|
4872
|
+
tokenizer.state = BOGUS_COMMENT;
|
|
4873
|
+
}
|
|
4874
|
+
else {
|
|
4875
|
+
// The `<` is text, so read this character again as text.
|
|
4876
|
+
tokenizer.state = TEXT;
|
|
4877
|
+
tokenizer.position = index;
|
|
4878
|
+
}
|
|
4879
|
+
break;
|
|
4880
|
+
case TAG_NAME:
|
|
4881
|
+
if (isSpace || character === '/') {
|
|
4882
|
+
tokenizer.state = BEFORE_ATTRIBUTE_NAME;
|
|
4883
|
+
}
|
|
4884
|
+
else if (character === '>') {
|
|
4885
|
+
endTag(tokenizer);
|
|
4886
|
+
}
|
|
4887
|
+
else {
|
|
4888
|
+
tokenizer.tagName += character;
|
|
4889
|
+
}
|
|
4890
|
+
break;
|
|
4891
|
+
case BEFORE_ATTRIBUTE_NAME:
|
|
4892
|
+
if (character === '>') {
|
|
4893
|
+
endTag(tokenizer);
|
|
4894
|
+
}
|
|
4895
|
+
else if (!isSpace && character !== '/') {
|
|
4896
|
+
tokenizer.state = ATTRIBUTE_NAME;
|
|
4897
|
+
}
|
|
4898
|
+
break;
|
|
4899
|
+
case ATTRIBUTE_NAME:
|
|
4900
|
+
case AFTER_ATTRIBUTE_NAME:
|
|
4901
|
+
if (character === '>') {
|
|
4902
|
+
endTag(tokenizer);
|
|
4903
|
+
}
|
|
4904
|
+
else if (character === '=') {
|
|
4905
|
+
tokenizer.state = BEFORE_VALUE;
|
|
4906
|
+
}
|
|
4907
|
+
else if (character === '/') {
|
|
4908
|
+
tokenizer.state = BEFORE_ATTRIBUTE_NAME;
|
|
4909
|
+
}
|
|
4910
|
+
else if (isSpace) {
|
|
4911
|
+
tokenizer.state = AFTER_ATTRIBUTE_NAME;
|
|
4912
|
+
}
|
|
4913
|
+
else {
|
|
4914
|
+
tokenizer.state = ATTRIBUTE_NAME;
|
|
4915
|
+
}
|
|
4916
|
+
break;
|
|
4917
|
+
case BEFORE_VALUE:
|
|
4918
|
+
if (character === '>') {
|
|
4919
|
+
endTag(tokenizer);
|
|
4920
|
+
}
|
|
4921
|
+
else if (character === '"') {
|
|
4922
|
+
tokenizer.state = DOUBLE_QUOTED_VALUE;
|
|
4923
|
+
}
|
|
4924
|
+
else if (character === "'") {
|
|
4925
|
+
tokenizer.state = SINGLE_QUOTED_VALUE;
|
|
4926
|
+
}
|
|
4927
|
+
else if (!isSpace) {
|
|
4928
|
+
tokenizer.state = UNQUOTED_VALUE;
|
|
4929
|
+
}
|
|
4930
|
+
break;
|
|
4931
|
+
case DOUBLE_QUOTED_VALUE:
|
|
4932
|
+
case SINGLE_QUOTED_VALUE:
|
|
4933
|
+
if (character === (tokenizer.state === DOUBLE_QUOTED_VALUE ? '"' : "'")) {
|
|
4934
|
+
tokenizer.state = BEFORE_ATTRIBUTE_NAME;
|
|
4935
|
+
}
|
|
4936
|
+
break;
|
|
4937
|
+
case UNQUOTED_VALUE:
|
|
4938
|
+
if (character === '>') {
|
|
4939
|
+
endTag(tokenizer);
|
|
4940
|
+
}
|
|
4941
|
+
else if (isSpace) {
|
|
4942
|
+
tokenizer.state = BEFORE_ATTRIBUTE_NAME;
|
|
4943
|
+
}
|
|
4944
|
+
break;
|
|
4945
|
+
case MARKUP_DECLARATION:
|
|
4946
|
+
if (markup.startsWith('--', index)) {
|
|
4947
|
+
tokenizer.state = COMMENT;
|
|
4948
|
+
tokenizer.position = index + 2;
|
|
4949
|
+
tokenizer.commentStart = index + 2;
|
|
4950
|
+
}
|
|
4951
|
+
else {
|
|
4952
|
+
tokenizer.state = BOGUS_COMMENT;
|
|
4953
|
+
tokenizer.position = index;
|
|
4954
|
+
}
|
|
4955
|
+
break;
|
|
4956
|
+
case COMMENT: {
|
|
4957
|
+
// A comment ends at `-->` or `--!>`, and `<!-->` and `<!--->` end at once.
|
|
4958
|
+
const comment = markup.slice(Math.max(tokenizer.commentStart, index - 3), index);
|
|
4959
|
+
if (character === '>' &&
|
|
4960
|
+
(index - tokenizer.commentStart < 2
|
|
4961
|
+
? /^-?$/.test(comment)
|
|
4962
|
+
: /--!?$/.test(comment))) {
|
|
4963
|
+
tokenizer.state = TEXT;
|
|
4964
|
+
}
|
|
4965
|
+
break;
|
|
4966
|
+
}
|
|
4967
|
+
case BOGUS_COMMENT:
|
|
4968
|
+
if (character === '>') {
|
|
4969
|
+
tokenizer.state = TEXT;
|
|
4970
|
+
}
|
|
4971
|
+
break;
|
|
4972
|
+
case RAW_TEXT: {
|
|
4973
|
+
const endTagPattern = new RegExp(`</${tokenizer.tagName}[\\t\\n\\f\\r />]`, 'gi');
|
|
4974
|
+
endTagPattern.lastIndex = index;
|
|
4975
|
+
const match = endTagPattern.exec(markup);
|
|
4976
|
+
if (!match) {
|
|
4977
|
+
// Read the end again next time, in case the end tag is only partly written yet.
|
|
4978
|
+
tokenizer.position = Math.max(index, markup.length - tokenizer.tagName.length - 2);
|
|
4979
|
+
return;
|
|
4980
|
+
}
|
|
4981
|
+
tokenizer.state = TAG_NAME;
|
|
4982
|
+
tokenizer.isEndTag = true;
|
|
4983
|
+
tokenizer.position = match.index + tokenizer.tagName.length + 2;
|
|
4984
|
+
break;
|
|
4985
|
+
}
|
|
4986
|
+
}
|
|
4987
|
+
}
|
|
4988
|
+
};
|
|
4989
|
+
const endTag = (tokenizer) => {
|
|
4990
|
+
const tagName = tokenizer.tagName.toLowerCase();
|
|
4991
|
+
if (!tokenizer.isEndTag && RAW_TEXT_ELEMENTS.includes(tagName)) {
|
|
4992
|
+
tokenizer.state = RAW_TEXT;
|
|
4993
|
+
tokenizer.tagName = tagName;
|
|
4994
|
+
}
|
|
4995
|
+
else {
|
|
4996
|
+
tokenizer.state = TEXT;
|
|
4997
|
+
}
|
|
4998
|
+
};
|
|
4999
|
+
const encodeCharacter = (character) => `&#${character.charCodeAt(0)};`;
|
|
5000
|
+
const isTagState = (state) => state >= TAG_OPEN && state <= AFTER_ATTRIBUTE_NAME;
|
|
5001
|
+
const isValueState = (state) => state >= BEFORE_VALUE && state <= UNQUOTED_VALUE;
|
|
5002
|
+
/**
|
|
5003
|
+
* Makes a value safe for where it lands in the markup. With more than one state, the markup
|
|
5004
|
+
* may be read in more than one way, so the value is made safe for each of them.
|
|
5005
|
+
*/
|
|
5006
|
+
const placeValue = (value, states) => {
|
|
5007
|
+
if (states.every(isTagState)) {
|
|
5008
|
+
return value;
|
|
5009
|
+
}
|
|
5010
|
+
if (!states.some(isValueState)) {
|
|
5011
|
+
return value && purify.sanitize(value);
|
|
5012
|
+
}
|
|
5013
|
+
let escaped = value;
|
|
5014
|
+
for (const state of states) {
|
|
5015
|
+
if (state === DOUBLE_QUOTED_VALUE) {
|
|
5016
|
+
escaped = escaped.replace(/"/g, '"');
|
|
5017
|
+
}
|
|
5018
|
+
else if (state === SINGLE_QUOTED_VALUE) {
|
|
5019
|
+
escaped = escaped.replace(/'/g, ''');
|
|
5020
|
+
}
|
|
5021
|
+
else if (isValueState(state)) {
|
|
5022
|
+
escaped = escaped.replace(UNQUOTED_VALUE_SPECIAL_PATTERN, encodeCharacter);
|
|
5023
|
+
}
|
|
5024
|
+
}
|
|
5025
|
+
if (!states.every(isValueState)) {
|
|
5026
|
+
// The value may be read as text too, so it must not start a tag.
|
|
5027
|
+
return escaped.replace(/</g, '<');
|
|
5028
|
+
}
|
|
5029
|
+
// With no value, the next attribute would be read as this attribute's value.
|
|
5030
|
+
return escaped || (states.includes(BEFORE_VALUE) ? '""' : '');
|
|
5031
|
+
};
|
|
4791
5032
|
/**
|
|
4792
5033
|
* This allows you to parse a template string with a function.
|
|
5034
|
+
*
|
|
5035
|
+
* Each value is made safe for where it lands in the markup:
|
|
5036
|
+
* - In text, the value is sanitized with DOMPurify, so it can contain markup but no scripts.
|
|
5037
|
+
* DOMPurify also removes URLs it does not allow, so a link with a custom scheme that `safeUrl`
|
|
5038
|
+
* allowed loses its `href` when its markup is placed as a value in text, as in a list built
|
|
5039
|
+
* from nested `html` calls. Write such links in the template's own markup instead.
|
|
5040
|
+
* - In a quoted attribute value, the quote that would end the value is escaped. The browser
|
|
5041
|
+
* decodes it again, so quotes display as given. Character references in the value, such as
|
|
5042
|
+
* `&`, are decoded by the browser as before.
|
|
5043
|
+
* - In an unquoted attribute value, spaces, quotes and `=<>` are escaped.
|
|
5044
|
+
* - Inside a tag but not in an attribute value, such as `<a ${attributes}>`, the value is placed
|
|
5045
|
+
* as is. Use this only for attributes the template writes itself, such as the output of a
|
|
5046
|
+
* nested `html` call, never for indexed data.
|
|
5047
|
+
*
|
|
5048
|
+
* A template can also be a list of attributes, such as `aria-label="${label}"`, that another
|
|
5049
|
+
* template places inside a tag. Until its first tag ends, a value that could be in an attribute
|
|
5050
|
+
* value is escaped for that attribute, and `<` is escaped so it cannot start a tag either.
|
|
5051
|
+
*
|
|
5052
|
+
* Escaping keeps a value inside its attribute but does not make every attribute safe. A value in
|
|
5053
|
+
* an event handler such as `onclick` still runs as script, and a value in `style` still applies
|
|
5054
|
+
* as CSS. URLs from indexed data should go through `safeUrl` before they are placed in an
|
|
5055
|
+
* `href` or `src`.
|
|
4793
5056
|
*/
|
|
4794
5057
|
const html$1 = (strings, ...values) => {
|
|
4795
|
-
|
|
5058
|
+
const tokenizer = createTokenizer(TEXT);
|
|
5059
|
+
// A template can also be a list of attributes that a parent template places inside a tag,
|
|
5060
|
+
// so until the two readings meet, its values are made safe for both.
|
|
5061
|
+
let attributeTokenizer = createTokenizer(BEFORE_ATTRIBUTE_NAME);
|
|
5062
|
+
let result = strings[0] ?? '';
|
|
4796
5063
|
for (let i = 0; i < values.length; i++) {
|
|
5064
|
+
const value = values[i];
|
|
5065
|
+
tokenize(tokenizer, result);
|
|
5066
|
+
if (attributeTokenizer) {
|
|
5067
|
+
tokenize(attributeTokenizer, result);
|
|
5068
|
+
if (tokenizer.state === TEXT && attributeTokenizer.state === TEXT) {
|
|
5069
|
+
attributeTokenizer = undefined;
|
|
5070
|
+
}
|
|
5071
|
+
}
|
|
4797
5072
|
result +=
|
|
4798
|
-
|
|
5073
|
+
placeValue(value || value === 0 ? String(value) : '', attributeTokenizer
|
|
5074
|
+
? [tokenizer.state, attributeTokenizer.state]
|
|
5075
|
+
: [tokenizer.state]) + (strings[i + 1] ?? '');
|
|
4799
5076
|
}
|
|
4800
|
-
return result
|
|
5077
|
+
return result;
|
|
5078
|
+
};
|
|
5079
|
+
|
|
5080
|
+
/**
|
|
5081
|
+
* Schemes that are always allowed. `data:` URLs are allowed separately, for images only.
|
|
5082
|
+
*/
|
|
5083
|
+
const ALLOWED_SCHEMES = ['http', 'https', 'mailto', 'tel', 'sms'];
|
|
5084
|
+
/**
|
|
5085
|
+
* Returned in place of a URL that is not allowed.
|
|
5086
|
+
*/
|
|
5087
|
+
const BLOCKED_URL = '#';
|
|
5088
|
+
/**
|
|
5089
|
+
* A scheme is only recognized when its `:` comes before any `/`, `?` or `#`.
|
|
5090
|
+
*/
|
|
5091
|
+
const SCHEME_PATTERN = /^([a-z][a-z\d+.-]*):/i;
|
|
5092
|
+
const DATA_IMAGE_PATTERN = /^data:image\//i;
|
|
5093
|
+
/**
|
|
5094
|
+
* Character references the browser decodes in an attribute before it reads the URL.
|
|
5095
|
+
* Named references are limited to the ones that can help spell out a scheme.
|
|
5096
|
+
*/
|
|
5097
|
+
const CHARACTER_REFERENCE_PATTERN = /&#[xX]([\da-fA-F]+);?|&#(\d+);?|&(colon|Tab|NewLine);/g;
|
|
5098
|
+
const NAMED_CHARACTER_REFERENCES = {
|
|
5099
|
+
colon: ':',
|
|
5100
|
+
Tab: '\t',
|
|
5101
|
+
NewLine: '\n',
|
|
5102
|
+
};
|
|
5103
|
+
const fromCodePoint = (codePoint) => codePoint > 0 && codePoint <= 0x10ffff
|
|
5104
|
+
? String.fromCodePoint(codePoint)
|
|
5105
|
+
: '�';
|
|
5106
|
+
const decodeCharacterReferences = (value) => value.replace(CHARACTER_REFERENCE_PATTERN, (_match, hex, decimal, name) => {
|
|
5107
|
+
if (hex) {
|
|
5108
|
+
return fromCodePoint(Number.parseInt(hex, 16));
|
|
5109
|
+
}
|
|
5110
|
+
if (decimal) {
|
|
5111
|
+
return fromCodePoint(Number.parseInt(decimal, 10));
|
|
5112
|
+
}
|
|
5113
|
+
return NAMED_CHARACTER_REFERENCES[name ?? ''] ?? '';
|
|
5114
|
+
});
|
|
5115
|
+
/**
|
|
5116
|
+
* Reads a URL the way the browser does before it looks for a scheme: character references
|
|
5117
|
+
* are decoded, tabs and newlines are removed, and leading spaces and control characters
|
|
5118
|
+
* are ignored.
|
|
5119
|
+
*/
|
|
5120
|
+
const normalizeUrl = (value) => {
|
|
5121
|
+
const decoded = decodeCharacterReferences(value).replace(/[\t\n\r]/g, '');
|
|
5122
|
+
let start = 0;
|
|
5123
|
+
while (start < decoded.length && decoded.charCodeAt(start) <= 0x20) {
|
|
5124
|
+
start++;
|
|
5125
|
+
}
|
|
5126
|
+
return decoded.slice(start);
|
|
5127
|
+
};
|
|
5128
|
+
const normalizeScheme = (scheme) => scheme.trim().toLowerCase().replace(/:$/, '');
|
|
5129
|
+
/**
|
|
5130
|
+
* Returns `url` unchanged when it is safe to place in an `href` or `src` attribute, and `#`
|
|
5131
|
+
* when it is not.
|
|
5132
|
+
*
|
|
5133
|
+
* Relative URLs, `http:`, `https:`, `mailto:`, `tel:`, `sms:` and `data:image/` URLs are safe,
|
|
5134
|
+
* along with any scheme passed in `options.schemes`. Every other scheme, such as `javascript:`,
|
|
5135
|
+
* is blocked, including when it is written in mixed case, has leading spaces or contains tabs,
|
|
5136
|
+
* newlines or character references.
|
|
5137
|
+
*
|
|
5138
|
+
* ```js
|
|
5139
|
+
* html`<a href="${safeUrl(item.url)}">${item.title}</a>`;
|
|
5140
|
+
* html`<a href="${safeUrl(item.appUrl, { schemes: ['myapp'] })}">Open in app</a>`;
|
|
5141
|
+
* ```
|
|
5142
|
+
*/
|
|
5143
|
+
const safeUrl = (url, options) => {
|
|
5144
|
+
if (url === undefined || url === null) {
|
|
5145
|
+
return '';
|
|
5146
|
+
}
|
|
5147
|
+
const value = String(url);
|
|
5148
|
+
const normalizedUrl = normalizeUrl(value);
|
|
5149
|
+
const scheme = normalizedUrl.match(SCHEME_PATTERN)?.[1]?.toLowerCase();
|
|
5150
|
+
if (!scheme) {
|
|
5151
|
+
return value;
|
|
5152
|
+
}
|
|
5153
|
+
if (ALLOWED_SCHEMES.includes(scheme) ||
|
|
5154
|
+
options?.schemes?.some((allowed) => normalizeScheme(allowed) === scheme)) {
|
|
5155
|
+
return value;
|
|
5156
|
+
}
|
|
5157
|
+
if (scheme === 'data' && DATA_IMAGE_PATTERN.test(normalizedUrl)) {
|
|
5158
|
+
return value;
|
|
5159
|
+
}
|
|
5160
|
+
return BLOCKED_URL;
|
|
4801
5161
|
};
|
|
4802
5162
|
|
|
4803
5163
|
/**
|
|
@@ -5697,6 +6057,7 @@ class SearchcraftInputForm {
|
|
|
5697
6057
|
core;
|
|
5698
6058
|
unsubscribe;
|
|
5699
6059
|
cleanupCore;
|
|
6060
|
+
inputElement;
|
|
5700
6061
|
init() {
|
|
5701
6062
|
if (this.core) {
|
|
5702
6063
|
// Initialize inputValue from prop if provided
|
|
@@ -5769,8 +6130,19 @@ class SearchcraftInputForm {
|
|
|
5769
6130
|
};
|
|
5770
6131
|
handleFormSubmit = async (event) => {
|
|
5771
6132
|
event.preventDefault();
|
|
6133
|
+
this.dismissOnScreenKeyboard();
|
|
5772
6134
|
await this.performSearch();
|
|
5773
6135
|
};
|
|
6136
|
+
/**
|
|
6137
|
+
* Closes the on-screen keyboard after a search is submitted on touch devices,
|
|
6138
|
+
* so it no longer covers the results. Devices with a mouse keep focus in the
|
|
6139
|
+
* input, so the user can keep typing and use the arrow keys.
|
|
6140
|
+
*/
|
|
6141
|
+
dismissOnScreenKeyboard() {
|
|
6142
|
+
if (window.matchMedia?.('(hover: none) and (pointer: coarse)').matches) {
|
|
6143
|
+
this.inputElement?.blur();
|
|
6144
|
+
}
|
|
6145
|
+
}
|
|
5774
6146
|
render() {
|
|
5775
6147
|
const isShowingClearButton = this.inputValue.length > 0;
|
|
5776
6148
|
const inputGridClassNames = classNames('searchcraft-input-form-grid', {
|
|
@@ -5782,11 +6154,13 @@ class SearchcraftInputForm {
|
|
|
5782
6154
|
const inputGridStyles = {
|
|
5783
6155
|
gap: shouldHaveVerticalGap ? '4px 8px' : '0px 8px',
|
|
5784
6156
|
};
|
|
5785
|
-
return (hAsync("form", { key: '
|
|
6157
|
+
return (hAsync("form", { key: 'e375f04aa3062b93d07a24d6d79a63029d463c6d', class: 'searchcraft-input-form', onSubmit: this.handleFormSubmit }, hAsync("div", { key: '9a9020828ba87f1edd7ec01b67575e824ecd03b9', class: inputGridClassNames, style: inputGridStyles }, hAsync("div", { key: 'b79f9c030c8ca57cbd02034430ca518b1f83b868', class: 'searchcraft-input-form-button' }, hAsync("searchcraft-button", { key: '90f23e6543171cb8aaf4c8e3fcb93979eba85dd4', onButtonClick: this.handleFormSubmit, label: this.buttonLabel })), this.inputLabel && (hAsync("div", { key: '9114a59d7fad2b4b982a9f5e46466ac23c84e56f', class: 'searchcraft-input-form-label' }, hAsync("searchcraft-input-label", { key: '9c3adad40480f97178b9054d28f17648c512ad8d', label: this.inputLabel }))), this.error && (hAsync("div", { key: '95f070e32fe45166798913b73ceef26aaf7e68f0', class: 'searchcraft-input-form-error-message' }, hAsync("searchcraft-error-message", { key: 'd507e9c01b9a7447b49b667d2510bf2b4d1237d1' }, "Something went wrong."))), hAsync("div", { key: '3a5057e699b2ebd2af20ed41504e833023834570', class: 'searchcraft-input-form-input-wrapper' }, hAsync("input", { key: '3bc445b52df4aa0392106b6245d8bddce6a7894f', autoComplete: 'off', class: classNames('searchcraft-input-form-input', {
|
|
5786
6158
|
'searchcraft-placeholder-hide-on-focus': this.placeholderBehavior === 'hide-on-focus',
|
|
5787
|
-
}),
|
|
6159
|
+
}), enterkeyhint: 'search', ref: (el) => {
|
|
6160
|
+
this.inputElement = el;
|
|
6161
|
+
}, onFocus: () => this.inputFocus?.emit(), onBlur: () => this.inputBlur?.emit(), onInput: (event) => {
|
|
5788
6162
|
this.handleInput(event);
|
|
5789
|
-
}, placeholder: this.placeholderValue, type: 'text', value: this.inputValue }), hAsync("div", { key: '
|
|
6163
|
+
}, placeholder: this.placeholderValue, type: 'text', value: this.inputValue }), hAsync("div", { key: '1f15e09d4a1d1c69105c6d3776fa579e2485d074', class: 'searchcraft-input-form-input-icon' }, hAsync("svg", { key: 'c2290c43f4795235a9092ca65843534b476966d3', 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: 'd039ba9a93b779aedba28fe8df299698d8d19b8c' }, "Search icon"), hAsync("path", { key: '4206937d1f038dca6effee55ca03e9046377c14c', 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: '3dfa0dfc5d1b6708f79db2c085bd8b5f18e0b67b', type: 'button', class: 'searchcraft-input-form-clear-button', onClick: this.handleClearInput }, hAsync("svg", { key: '3af9c1768c0e0eed6935cc5267d1169b11f08bb4', 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: '7eb8530a8b89e387231cb509b3f68b4a3bafde20' }, "Clear icon"), hAsync("path", { key: '83d43b2cf2f2e90e9b340e6fdf7c91cffee23c20', 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' }))))))));
|
|
5790
6164
|
}
|
|
5791
6165
|
static get watchers() { return {
|
|
5792
6166
|
"core": ["onCoreChange"],
|
|
@@ -6226,6 +6600,14 @@ class SearchcraftPopoverButton {
|
|
|
6226
6600
|
* The type of popover button to render.
|
|
6227
6601
|
*/
|
|
6228
6602
|
type;
|
|
6603
|
+
/**
|
|
6604
|
+
* The placeholder text shown in the `skeuomorphic` button, and the
|
|
6605
|
+
* accessible label of the `magnifying-glass` button. Set it to the same
|
|
6606
|
+
* value as the `placeholderValue` of `searchcraft-popover-form` so the
|
|
6607
|
+
* button matches the form it opens. When it is blank, the
|
|
6608
|
+
* `magnifying-glass` button is labeled "Search".
|
|
6609
|
+
*/
|
|
6610
|
+
placeholderValue = 'Search';
|
|
6229
6611
|
/**
|
|
6230
6612
|
* The id of the Searchcraft instance that this component should use.
|
|
6231
6613
|
*/
|
|
@@ -6301,7 +6683,7 @@ class SearchcraftPopoverButton {
|
|
|
6301
6683
|
}
|
|
6302
6684
|
}
|
|
6303
6685
|
renderSkeuomorphicSlot() {
|
|
6304
|
-
return (hAsync("div", { class: 'searchcraft-popover-button-wrapper' }, hAsync("div", { class: 'searchcraft-popover-button-input' }, hAsync("svg", { class: 'searchcraft-popover-button-input-search-icon', viewBox: '0 0 20 20', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', version: '1.1' }, hAsync("title", null, "Search icon"), hAsync("path", { 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' })), hAsync("span", null,
|
|
6686
|
+
return (hAsync("div", { class: 'searchcraft-popover-button-wrapper' }, hAsync("div", { class: 'searchcraft-popover-button-input' }, hAsync("svg", { class: 'searchcraft-popover-button-input-search-icon', viewBox: '0 0 20 20', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', version: '1.1' }, hAsync("title", null, "Search icon"), hAsync("path", { 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' })), hAsync("span", null, this.placeholderValue)), hAsync("div", { class: 'searchcraft-popover-button-keycaps' }, hAsync("div", { class: 'searchcraft-popover-button-keycaps-keycap searchcraft-popover-button-keycaps-keycap-modifier' }, hAsync("span", null, this.hotkeyModifierSymbol)), hAsync("div", { class: 'searchcraft-popover-button-keycaps-keycap searchcraft-popover-button-keycaps-keycap-key' }, hAsync("span", null, this.hotkey)))));
|
|
6305
6687
|
}
|
|
6306
6688
|
renderSlot() {
|
|
6307
6689
|
switch (this.type) {
|
|
@@ -6314,8 +6696,10 @@ class SearchcraftPopoverButton {
|
|
|
6314
6696
|
}
|
|
6315
6697
|
}
|
|
6316
6698
|
render() {
|
|
6317
|
-
return (hAsync("button", { key: '
|
|
6318
|
-
? this.
|
|
6699
|
+
return (hAsync("button", { key: '3ff00f71e3057f907a447f87b3a82b6ae57796e7', "aria-label": this.type === 'magnifying-glass'
|
|
6700
|
+
? this.placeholderValue?.trim() || 'Search'
|
|
6701
|
+
: undefined, class: `searchcraft-popover-button ${this.type ? ` searchcraft-popover-button-${this.type}` : ''}`, innerHTML: typeof this.template !== 'undefined'
|
|
6702
|
+
? this.template({ isPopoverVisible: this.isPopoverVisible }, { html: html$1, safeUrl })
|
|
6319
6703
|
: undefined, onClick: this.handleOnClick.bind(this), type: 'button' }, typeof this.template !== 'undefined'
|
|
6320
6704
|
? undefined
|
|
6321
6705
|
: this.type
|
|
@@ -6328,6 +6712,7 @@ class SearchcraftPopoverButton {
|
|
|
6328
6712
|
"$members$": {
|
|
6329
6713
|
"template": [16],
|
|
6330
6714
|
"type": [1],
|
|
6715
|
+
"placeholderValue": [1, "placeholder-value"],
|
|
6331
6716
|
"searchcraftId": [1, "searchcraft-id"],
|
|
6332
6717
|
"hotkey": [32],
|
|
6333
6718
|
"hotkeyModifier": [32],
|
|
@@ -6341,7 +6726,7 @@ class SearchcraftPopoverButton {
|
|
|
6341
6726
|
}; }
|
|
6342
6727
|
}
|
|
6343
6728
|
|
|
6344
|
-
const version = "0.
|
|
6729
|
+
const version = "0.16.0";
|
|
6345
6730
|
|
|
6346
6731
|
/**
|
|
6347
6732
|
* Renders the footer for the searchcraft-popover-form.
|
|
@@ -6413,7 +6798,7 @@ class SearchcraftPopoverFooter {
|
|
|
6413
6798
|
const hasResults = typeof this.searchResultsCount === 'number' &&
|
|
6414
6799
|
this.searchResultsCount > 0;
|
|
6415
6800
|
const showViewAll = !!this.safeViewAllHref && hasResults;
|
|
6416
|
-
return (hAsync("footer", { key: '548704335f80a2b4bc7ebd4ea2d0a2eb73376fde', class: 'searchcraft-popover-footer' }, hAsync("a", { key: 'a10cbfd833ef0c6016932fede6ca3195eecdfaea', class: 'searchcraft-popover-footer-link', href: href, target: '_blank', rel: 'noreferrer' }, hAsync("span", { key: '6c6333a61ae282419e32721fc9760d3d237870df', class: 'searchcraft-popover-footer-link-prefix' }, "Powered by\u00A0"), "
|
|
6801
|
+
return (hAsync("footer", { key: '548704335f80a2b4bc7ebd4ea2d0a2eb73376fde', class: 'searchcraft-popover-footer' }, hAsync("a", { key: 'a10cbfd833ef0c6016932fede6ca3195eecdfaea', class: 'searchcraft-popover-footer-link', href: href, target: '_blank', rel: 'noreferrer' }, hAsync("span", { key: '6c6333a61ae282419e32721fc9760d3d237870df', class: 'searchcraft-popover-footer-link-prefix' }, "Powered by\u00A0"), ' ', "Searchcraft"), hAsync("div", { key: 'ac3af12966e7de74be888511493cc8b5411be6f5', class: 'searchcraft-popover-footer-results' }, hAsync("p", { key: '4a8bbc33d91852efb12b11ed7a82d34a91718456', class: 'searchcraft-popover-footer-results-info' }, hasResults ? (hAsync("span", null, formatNumberWithCommas(this.searchResultsCount), " Results", hAsync("span", { class: 'searchcraft-popover-footer-results-found' }, ' Found'))) : (' ')), showViewAll && (hAsync("a", { key: '480adfb8b751ce450c6547a78750d29cbe542359', class: 'searchcraft-popover-footer-view-all', href: this.safeViewAllHref }, hAsync("span", { key: '5cb8eb24a192fc3c22784e72414a5b8bf8070c8b', class: 'searchcraft-popover-footer-view-all-label' }, this.viewAllResultsLabel), hAsync("span", { key: 'cc6e55e19527e99eded57edb5b35eebc574fbec0', class: 'searchcraft-popover-footer-view-all-shortcut', "aria-hidden": 'true' }, hAsync("kbd", { key: '8e55153e517ca311239d9029073d127b9638ba05' }, "\u2318"), hAsync("kbd", { key: '71e773899f5abe1bcf8d94c3617732f2c213571a' }, "\u21B5")))))));
|
|
6417
6802
|
}
|
|
6418
6803
|
static get cmpMeta() { return {
|
|
6419
6804
|
"$flags$": 768,
|
|
@@ -6455,6 +6840,16 @@ class SearchcraftPopoverFooter {
|
|
|
6455
6840
|
* const popoverForm = document.querySelector('searchcraft-popover-form');
|
|
6456
6841
|
*
|
|
6457
6842
|
* popoverForm.popoverResultMappings = {};
|
|
6843
|
+
*
|
|
6844
|
+
* // Or render each result with a template instead of `popoverResultMappings`.
|
|
6845
|
+
* popoverForm.template = (item, index, { html, safeUrl }) => html`
|
|
6846
|
+
* <a href="${safeUrl(item.url)}">${item.title}</a>
|
|
6847
|
+
* `;
|
|
6848
|
+
*
|
|
6849
|
+
* // Change the message shown when a search returns no results.
|
|
6850
|
+
* popoverForm.noResultsTemplate = ({ searchTerm }, { html }) => html`
|
|
6851
|
+
* <p>Nothing matched "${searchTerm}".</p>
|
|
6852
|
+
* `;
|
|
6458
6853
|
* ```
|
|
6459
6854
|
*
|
|
6460
6855
|
* @react-example
|
|
@@ -6483,6 +6878,19 @@ class SearchcraftPopoverForm {
|
|
|
6483
6878
|
* Formats the content rendered for each result.
|
|
6484
6879
|
*/
|
|
6485
6880
|
popoverResultMappings;
|
|
6881
|
+
/**
|
|
6882
|
+
* A callback function responsible for rendering a result. When provided, it is used instead of `popoverResultMappings`.
|
|
6883
|
+
* Pass URLs from the result through the `safeUrl` helper before placing them in an `href` or `src`.
|
|
6884
|
+
* Never place result values in event handler attributes such as `onclick`, or in `style`.
|
|
6885
|
+
*/
|
|
6886
|
+
template;
|
|
6887
|
+
/**
|
|
6888
|
+
* A callback function responsible for rendering the message shown when a search returns no results.
|
|
6889
|
+
* When it is not provided, the popover shows `No results found for "<search term>".`
|
|
6890
|
+
* The returned markup is sanitized with DOMPurify, which removes scripts, event handler
|
|
6891
|
+
* attributes such as `onclick`, and links with schemes it does not allow, such as an app's own scheme.
|
|
6892
|
+
*/
|
|
6893
|
+
noResultsTemplate;
|
|
6486
6894
|
/**
|
|
6487
6895
|
* The hotkey that activates the popover.
|
|
6488
6896
|
*/
|
|
@@ -6530,6 +6938,11 @@ class SearchcraftPopoverForm {
|
|
|
6530
6938
|
searchClientResponseItems = [];
|
|
6531
6939
|
adClientResponseItems = [];
|
|
6532
6940
|
searchTerm;
|
|
6941
|
+
isSearchInProgress = false;
|
|
6942
|
+
/**
|
|
6943
|
+
* The search term of the most recent search response.
|
|
6944
|
+
*/
|
|
6945
|
+
completedSearchTerm;
|
|
6533
6946
|
isFocused = false;
|
|
6534
6947
|
breakpointSm = 576;
|
|
6535
6948
|
breakpointMd = 768;
|
|
@@ -6561,6 +6974,12 @@ class SearchcraftPopoverForm {
|
|
|
6561
6974
|
this.searchClientResponseItems = [...state.searchClientResponseItems];
|
|
6562
6975
|
this.adClientResponseItems = [...state.adClientResponseItems];
|
|
6563
6976
|
this.searchTerm = state.searchTerm;
|
|
6977
|
+
this.isSearchInProgress = state.isSearchInProgress;
|
|
6978
|
+
const requestProperties = state.searchClientRequestProperties;
|
|
6979
|
+
this.completedSearchTerm =
|
|
6980
|
+
requestProperties && typeof requestProperties === 'object'
|
|
6981
|
+
? requestProperties.searchTerm
|
|
6982
|
+
: undefined;
|
|
6564
6983
|
this.searchResultsPage = state.searchResultsPage;
|
|
6565
6984
|
this.searchResultsPerPage = state.searchResultsPerPage;
|
|
6566
6985
|
});
|
|
@@ -6642,6 +7061,8 @@ class SearchcraftPopoverForm {
|
|
|
6642
7061
|
if (!this.modalElement) {
|
|
6643
7062
|
this.modalElement = document.createElement('searchcraft-popover-form');
|
|
6644
7063
|
this.modalElement.popoverResultMappings = this.popoverResultMappings;
|
|
7064
|
+
this.modalElement.template = this.template;
|
|
7065
|
+
this.modalElement.noResultsTemplate = this.noResultsTemplate;
|
|
6645
7066
|
this.modalElement.setAttribute('type', 'fullscreen');
|
|
6646
7067
|
this.modalElement.setAttribute('searchcraft-id', this.searchcraftId);
|
|
6647
7068
|
if (this.placeholderValue) {
|
|
@@ -6660,6 +7081,17 @@ class SearchcraftPopoverForm {
|
|
|
6660
7081
|
}
|
|
6661
7082
|
}
|
|
6662
7083
|
}
|
|
7084
|
+
/**
|
|
7085
|
+
* Passes result rendering changes on to the fullscreen form created for small viewports,
|
|
7086
|
+
* which only receives these props when it is first created.
|
|
7087
|
+
*/
|
|
7088
|
+
syncModalElementResultRendering() {
|
|
7089
|
+
if (this.modalElement) {
|
|
7090
|
+
this.modalElement.popoverResultMappings = this.popoverResultMappings;
|
|
7091
|
+
this.modalElement.template = this.template;
|
|
7092
|
+
this.modalElement.noResultsTemplate = this.noResultsTemplate;
|
|
7093
|
+
}
|
|
7094
|
+
}
|
|
6663
7095
|
handleModalBackdropClick(_event) {
|
|
6664
7096
|
this.core?.store.getState().setPopoverVisibility(false);
|
|
6665
7097
|
}
|
|
@@ -6693,8 +7125,17 @@ class SearchcraftPopoverForm {
|
|
|
6693
7125
|
* @param direction
|
|
6694
7126
|
*/
|
|
6695
7127
|
focusOnNextListItem(direction) {
|
|
6696
|
-
|
|
6697
|
-
const
|
|
7128
|
+
// Results rendered by a `template` are reached through the first link in the template.
|
|
7129
|
+
const links = Array.from(document.querySelectorAll('.searchcraft-popover-list-item-link, .searchcraft-popover-list-item-template')).map((el) => el.classList.contains('searchcraft-popover-list-item-template')
|
|
7130
|
+
? el.querySelector('a')
|
|
7131
|
+
: el);
|
|
7132
|
+
const listItems = Array.from(new Set(links)).filter((el) => !!el && !el.hasAttribute('disabled') && el.offsetParent !== null);
|
|
7133
|
+
// Focus may be on another link inside a templated result, so match on the result too.
|
|
7134
|
+
const activeElement = document.activeElement;
|
|
7135
|
+
const currentIndex = listItems.findIndex((el) => el === activeElement ||
|
|
7136
|
+
!!el
|
|
7137
|
+
.closest('.searchcraft-popover-list-item-template')
|
|
7138
|
+
?.contains(activeElement));
|
|
6698
7139
|
if (direction === 'ArrowDown') {
|
|
6699
7140
|
listItems[(currentIndex + 1) % listItems.length]?.focus();
|
|
6700
7141
|
}
|
|
@@ -6719,6 +7160,28 @@ class SearchcraftPopoverForm {
|
|
|
6719
7160
|
this.searchTerm?.trim()?.length > 0 &&
|
|
6720
7161
|
this.searchClientResponseItems.length > 0);
|
|
6721
7162
|
}
|
|
7163
|
+
/**
|
|
7164
|
+
* Whether the search for the current search term finished without results.
|
|
7165
|
+
*/
|
|
7166
|
+
get hasNoResultsToShow() {
|
|
7167
|
+
const searchTerm = this.searchTerm?.trim();
|
|
7168
|
+
return (!!searchTerm &&
|
|
7169
|
+
!this.isSearchInProgress &&
|
|
7170
|
+
this.searchClientResponseItems.length === 0 &&
|
|
7171
|
+
this.completedSearchTerm?.trim() === searchTerm);
|
|
7172
|
+
}
|
|
7173
|
+
renderNoResults() {
|
|
7174
|
+
const searchTerm = this.searchTerm?.trim() || '';
|
|
7175
|
+
if (this.noResultsTemplate) {
|
|
7176
|
+
try {
|
|
7177
|
+
return (hAsync("div", { class: 'searchcraft-popover-form-no-results', innerHTML: purify.sanitize(this.noResultsTemplate({ searchTerm }, { html: html$1, safeUrl })) }));
|
|
7178
|
+
}
|
|
7179
|
+
catch (error) {
|
|
7180
|
+
console.error('Invalid popover no results template:', error);
|
|
7181
|
+
}
|
|
7182
|
+
}
|
|
7183
|
+
return (hAsync("div", { class: 'searchcraft-popover-form-no-results' }, hAsync("p", { class: 'searchcraft-popover-form-no-results-message' }, "No results found for \"", searchTerm, "\".")));
|
|
7184
|
+
}
|
|
6722
7185
|
get viewAllResultsHref() {
|
|
6723
7186
|
const baseUrl = this.viewAllResultsBaseUrl;
|
|
6724
7187
|
if (!baseUrl) {
|
|
@@ -6744,22 +7207,24 @@ class SearchcraftPopoverForm {
|
|
|
6744
7207
|
}
|
|
6745
7208
|
renderInlinePopover() {
|
|
6746
7209
|
const isListViewVisible = this.hasResultsToShow && this.isFocused;
|
|
7210
|
+
const isNoResultsVisible = this.hasNoResultsToShow && this.isFocused;
|
|
7211
|
+
const isDropdownVisible = isListViewVisible || isNoResultsVisible;
|
|
6747
7212
|
return (hAsync("div", { class: classNames('searchcraft-popover-form searchcraft-popover-form-inline', {
|
|
6748
|
-
'searchcraft-popover-form-active':
|
|
6749
|
-
}) }, hAsync("div", { class: 'searchcraft-popover-form-input searchcraft-popover-form-inline-input' }, hAsync("searchcraft-input-form", { onInputFocus: this.handleInputFocus.bind(this), searchcraftId: this.searchcraftId, placeholderValue: this.placeholderValue, placeholderBehavior: this.placeholderBehavior })),
|
|
7213
|
+
'searchcraft-popover-form-active': isDropdownVisible,
|
|
7214
|
+
}) }, hAsync("div", { class: 'searchcraft-popover-form-input searchcraft-popover-form-inline-input' }, hAsync("searchcraft-input-form", { onInputFocus: this.handleInputFocus.bind(this), searchcraftId: this.searchcraftId, placeholderValue: this.placeholderValue, placeholderBehavior: this.placeholderBehavior })), isDropdownVisible && (hAsync("div", { class: 'searchcraft-popover-form-inline-wrapper' }, hAsync("div", { class: 'searchcraft-popover-form-inline-scroll-area' }, isListViewVisible && this.showSummaryBox && (hAsync("searchcraft-results-summary", { searchcraftId: this.searchcraftId })), isListViewVisible ? (hAsync("searchcraft-popover-list-view", { popoverResultMappings: this.popoverResultMappings, template: this.template, searchClientResponseItems: this.searchClientResponseItems, adClientResponseItems: this.adClientResponseItems, searchResultsPage: this.searchResultsPage, searchResultsPerPage: this.searchResultsPerPage, searchcraftId: this.searchcraftId })) : (this.renderNoResults())), hAsync("searchcraft-popover-footer", { searchcraftId: this.searchcraftId, sdkVariant: this.sdkVariant, viewAllResultsHref: this.viewAllResultsHref, viewAllResultsLabel: this.resolvedViewAllResultsLabel })))));
|
|
6750
7215
|
}
|
|
6751
7216
|
renderModalPopover() {
|
|
6752
7217
|
if (this.isPopoverVisibleInState) {
|
|
6753
7218
|
return (hAsync("div", { class: classNames('searchcraft-popover-form searchcraft-popover-form-modal', {
|
|
6754
|
-
'searchcraft-popover-form-active': this.hasResultsToShow,
|
|
6755
|
-
}) }, hAsync("div", { class: 'searchcraft-popover-form-modal-backdrop', onClick: this.handleModalBackdropClick }), hAsync("div", { class: 'searchcraft-popover-form-modal-wrapper' }, hAsync("div", { class: 'searchcraft-popover-form-input searchcraft-popover-form-modal-input' }, hAsync("searchcraft-input-form", { onInputFocus: this.handleInputFocus.bind(this), onInputInit: this.handleInputInit.bind(this), searchcraftId: this.searchcraftId, placeholderValue: this.placeholderValue, placeholderBehavior: this.placeholderBehavior }), hAsync("button", { type: 'button', class: 'searchcraft-popover-form-cancel-button searchcraft-popover-form-modal-cancel-button', onClick: this.handleCancelButtonClick.bind(this) }, "Cancel")), hAsync("div", { class: 'searchcraft-popover-form-modal-popover-list-view' }, this.showSummaryBox && this.hasResultsToShow && (hAsync("searchcraft-results-summary", { searchcraftId: this.searchcraftId })), this.hasResultsToShow && (hAsync("searchcraft-popover-list-view", { popoverResultMappings: this.popoverResultMappings, searchClientResponseItems: this.searchClientResponseItems, adClientResponseItems: this.adClientResponseItems, searchResultsPage: this.searchResultsPage, searchResultsPerPage: this.searchResultsPerPage, searchcraftId: this.searchcraftId }))), hAsync("searchcraft-popover-footer", { searchcraftId: this.searchcraftId, sdkVariant: this.sdkVariant, viewAllResultsHref: this.viewAllResultsHref, viewAllResultsLabel: this.resolvedViewAllResultsLabel }))));
|
|
7219
|
+
'searchcraft-popover-form-active': this.hasResultsToShow || this.hasNoResultsToShow,
|
|
7220
|
+
}) }, hAsync("div", { class: 'searchcraft-popover-form-modal-backdrop', onClick: this.handleModalBackdropClick }), hAsync("div", { class: 'searchcraft-popover-form-modal-wrapper' }, hAsync("div", { class: 'searchcraft-popover-form-input searchcraft-popover-form-modal-input' }, hAsync("searchcraft-input-form", { onInputFocus: this.handleInputFocus.bind(this), onInputInit: this.handleInputInit.bind(this), searchcraftId: this.searchcraftId, placeholderValue: this.placeholderValue, placeholderBehavior: this.placeholderBehavior }), hAsync("button", { type: 'button', class: 'searchcraft-popover-form-cancel-button searchcraft-popover-form-modal-cancel-button', onClick: this.handleCancelButtonClick.bind(this) }, "Cancel")), hAsync("div", { class: 'searchcraft-popover-form-modal-popover-list-view' }, this.showSummaryBox && this.hasResultsToShow && (hAsync("searchcraft-results-summary", { searchcraftId: this.searchcraftId })), this.hasResultsToShow && (hAsync("searchcraft-popover-list-view", { popoverResultMappings: this.popoverResultMappings, template: this.template, searchClientResponseItems: this.searchClientResponseItems, adClientResponseItems: this.adClientResponseItems, searchResultsPage: this.searchResultsPage, searchResultsPerPage: this.searchResultsPerPage, searchcraftId: this.searchcraftId })), this.hasNoResultsToShow && this.renderNoResults()), hAsync("searchcraft-popover-footer", { searchcraftId: this.searchcraftId, sdkVariant: this.sdkVariant, viewAllResultsHref: this.viewAllResultsHref, viewAllResultsLabel: this.resolvedViewAllResultsLabel }))));
|
|
6756
7221
|
}
|
|
6757
7222
|
}
|
|
6758
7223
|
renderFullscreenPopover() {
|
|
6759
7224
|
if (this.isPopoverVisibleInState) {
|
|
6760
7225
|
return (hAsync("div", { class: classNames('searchcraft-popover-form searchcraft-popover-form-fullscreen', {
|
|
6761
|
-
'searchcraft-popover-form-active': this.hasResultsToShow,
|
|
6762
|
-
}) }, hAsync("div", { class: 'searchcraft-popover-form-input searchcraft-popover-form-fullscreen-input' }, hAsync("searchcraft-input-form", { onInputFocus: this.handleInputFocus.bind(this), onInputInit: this.handleInputInit.bind(this), searchcraftId: this.searchcraftId, placeholderValue: this.placeholderValue, placeholderBehavior: this.placeholderBehavior }), hAsync("button", { type: 'button', class: 'searchcraft-popover-form-cancel-button searchcraft-popover-form-fullscreen-cancel-button', onClick: this.handleCancelButtonClick.bind(this) }, "Cancel")), hAsync("div", { class: 'searchcraft-popover-form-fullscreen-popover-list-view' }, this.showSummaryBox && this.hasResultsToShow && (hAsync("searchcraft-results-summary", { searchcraftId: this.searchcraftId })), this.hasResultsToShow && (hAsync("searchcraft-popover-list-view", { popoverResultMappings: this.popoverResultMappings, searchClientResponseItems: this.searchClientResponseItems, adClientResponseItems: this.adClientResponseItems, searchResultsPage: this.searchResultsPage, searchResultsPerPage: this.searchResultsPerPage, searchcraftId: this.searchcraftId }))), hAsync("searchcraft-popover-footer", { searchcraftId: this.searchcraftId, sdkVariant: this.sdkVariant, viewAllResultsHref: this.viewAllResultsHref, viewAllResultsLabel: this.resolvedViewAllResultsLabel })));
|
|
7226
|
+
'searchcraft-popover-form-active': this.hasResultsToShow || this.hasNoResultsToShow,
|
|
7227
|
+
}) }, hAsync("div", { class: 'searchcraft-popover-form-input searchcraft-popover-form-fullscreen-input' }, hAsync("searchcraft-input-form", { onInputFocus: this.handleInputFocus.bind(this), onInputInit: this.handleInputInit.bind(this), searchcraftId: this.searchcraftId, placeholderValue: this.placeholderValue, placeholderBehavior: this.placeholderBehavior }), hAsync("button", { type: 'button', class: 'searchcraft-popover-form-cancel-button searchcraft-popover-form-fullscreen-cancel-button', onClick: this.handleCancelButtonClick.bind(this) }, "Cancel")), hAsync("div", { class: 'searchcraft-popover-form-fullscreen-popover-list-view' }, this.showSummaryBox && this.hasResultsToShow && (hAsync("searchcraft-results-summary", { searchcraftId: this.searchcraftId })), this.hasResultsToShow && (hAsync("searchcraft-popover-list-view", { popoverResultMappings: this.popoverResultMappings, template: this.template, searchClientResponseItems: this.searchClientResponseItems, adClientResponseItems: this.adClientResponseItems, searchResultsPage: this.searchResultsPage, searchResultsPerPage: this.searchResultsPerPage, searchcraftId: this.searchcraftId })), this.hasNoResultsToShow && this.renderNoResults()), hAsync("searchcraft-popover-footer", { searchcraftId: this.searchcraftId, sdkVariant: this.sdkVariant, viewAllResultsHref: this.viewAllResultsHref, viewAllResultsLabel: this.resolvedViewAllResultsLabel })));
|
|
6763
7228
|
}
|
|
6764
7229
|
}
|
|
6765
7230
|
render() {
|
|
@@ -6772,12 +7237,19 @@ class SearchcraftPopoverForm {
|
|
|
6772
7237
|
return this.renderFullscreenPopover();
|
|
6773
7238
|
}
|
|
6774
7239
|
}
|
|
7240
|
+
static get watchers() { return {
|
|
7241
|
+
"popoverResultMappings": ["syncModalElementResultRendering"],
|
|
7242
|
+
"template": ["syncModalElementResultRendering"],
|
|
7243
|
+
"noResultsTemplate": ["syncModalElementResultRendering"]
|
|
7244
|
+
}; }
|
|
6775
7245
|
static get cmpMeta() { return {
|
|
6776
7246
|
"$flags$": 768,
|
|
6777
7247
|
"$tagName$": "searchcraft-popover-form",
|
|
6778
7248
|
"$members$": {
|
|
6779
7249
|
"type": [1],
|
|
6780
7250
|
"popoverResultMappings": [16],
|
|
7251
|
+
"template": [16],
|
|
7252
|
+
"noResultsTemplate": [16],
|
|
6781
7253
|
"hotkey": [1],
|
|
6782
7254
|
"hotkeyModifier": [1, "hotkey-modifier"],
|
|
6783
7255
|
"searchcraftId": [1, "searchcraft-id"],
|
|
@@ -6791,6 +7263,8 @@ class SearchcraftPopoverForm {
|
|
|
6791
7263
|
"searchClientResponseItems": [32],
|
|
6792
7264
|
"adClientResponseItems": [32],
|
|
6793
7265
|
"searchTerm": [32],
|
|
7266
|
+
"isSearchInProgress": [32],
|
|
7267
|
+
"completedSearchTerm": [32],
|
|
6794
7268
|
"isFocused": [32],
|
|
6795
7269
|
"breakpointSm": [32],
|
|
6796
7270
|
"breakpointMd": [32],
|
|
@@ -6816,6 +7290,14 @@ class SearchcraftPopoverListItem {
|
|
|
6816
7290
|
}
|
|
6817
7291
|
item;
|
|
6818
7292
|
popoverResultMappings;
|
|
7293
|
+
/**
|
|
7294
|
+
* A callback function responsible for rendering the result. When provided, it is used instead of `popoverResultMappings`, which are still used if the template throws.
|
|
7295
|
+
*/
|
|
7296
|
+
template;
|
|
7297
|
+
/**
|
|
7298
|
+
* The index of the result in the list view. Passed to the `template` callback.
|
|
7299
|
+
*/
|
|
7300
|
+
index = 0;
|
|
6819
7301
|
/** The document position relative to the search results (For Measure) */
|
|
6820
7302
|
documentPosition = 0;
|
|
6821
7303
|
/**
|
|
@@ -6827,6 +7309,8 @@ class SearchcraftPopoverListItem {
|
|
|
6827
7309
|
href;
|
|
6828
7310
|
imageSource;
|
|
6829
7311
|
imageAlt;
|
|
7312
|
+
templateHtml;
|
|
7313
|
+
get hostElement() { return getElement(this); }
|
|
6830
7314
|
core;
|
|
6831
7315
|
cleanupCore;
|
|
6832
7316
|
mapValuesFromDocument(document) {
|
|
@@ -6836,19 +7320,40 @@ class SearchcraftPopoverListItem {
|
|
|
6836
7320
|
this.imageSource = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.imageSource);
|
|
6837
7321
|
this.imageAlt = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.imageAlt);
|
|
6838
7322
|
}
|
|
7323
|
+
/**
|
|
7324
|
+
* Maps the document values and renders the template, if there is one. The mapped values are
|
|
7325
|
+
* always kept so the result can fall back to them if the template throws or is removed.
|
|
7326
|
+
*/
|
|
7327
|
+
updateRenderedValues() {
|
|
7328
|
+
this.templateHtml = undefined;
|
|
7329
|
+
if (!this.item) {
|
|
7330
|
+
return;
|
|
7331
|
+
}
|
|
7332
|
+
this.mapValuesFromDocument(this.item.document);
|
|
7333
|
+
if (this.template) {
|
|
7334
|
+
try {
|
|
7335
|
+
this.templateHtml = this.template(this.item.document, this.index, {
|
|
7336
|
+
html: html$1,
|
|
7337
|
+
safeUrl,
|
|
7338
|
+
source_index: this.item.source_index,
|
|
7339
|
+
});
|
|
7340
|
+
}
|
|
7341
|
+
catch (error) {
|
|
7342
|
+
console.error('Invalid popover result template:', error);
|
|
7343
|
+
}
|
|
7344
|
+
}
|
|
7345
|
+
}
|
|
6839
7346
|
onCoreAvailable(core) {
|
|
6840
7347
|
this.core = core;
|
|
6841
7348
|
}
|
|
6842
7349
|
connectedCallback() {
|
|
6843
|
-
|
|
6844
|
-
this.mapValuesFromDocument(this.item.document);
|
|
6845
|
-
}
|
|
7350
|
+
this.updateRenderedValues();
|
|
6846
7351
|
this.cleanupCore = registry.useCoreInstance(this.searchcraftId, this.onCoreAvailable.bind(this));
|
|
6847
7352
|
}
|
|
6848
7353
|
disconnectedCallback() {
|
|
6849
7354
|
this.cleanupCore?.();
|
|
6850
7355
|
}
|
|
6851
|
-
|
|
7356
|
+
sendDocumentClickedEvent() {
|
|
6852
7357
|
if (this.core) {
|
|
6853
7358
|
const document_position = this.documentPosition;
|
|
6854
7359
|
const search_term = this.core.store.getState().searchTerm;
|
|
@@ -6859,23 +7364,48 @@ class SearchcraftPopoverListItem {
|
|
|
6859
7364
|
search_term,
|
|
6860
7365
|
});
|
|
6861
7366
|
}
|
|
7367
|
+
}
|
|
7368
|
+
handleLinkClick = () => {
|
|
7369
|
+
this.sendDocumentClickedEvent();
|
|
7370
|
+
};
|
|
7371
|
+
/**
|
|
7372
|
+
* Sends the click event when a link inside the rendered template is clicked.
|
|
7373
|
+
*/
|
|
7374
|
+
handleTemplateClick = (event) => {
|
|
7375
|
+
const link = event.target?.closest('a');
|
|
7376
|
+
if (link && this.hostElement?.contains(link)) {
|
|
7377
|
+
this.sendDocumentClickedEvent();
|
|
7378
|
+
}
|
|
6862
7379
|
};
|
|
7380
|
+
handleKeyDown = () => { };
|
|
6863
7381
|
render() {
|
|
6864
|
-
|
|
7382
|
+
if (this.template && typeof this.templateHtml === 'string') {
|
|
7383
|
+
return (hAsync("div", { class: 'searchcraft-popover-list-item searchcraft-popover-list-item-template', innerHTML: this.templateHtml, onClick: this.handleTemplateClick, onKeyDown: this.handleKeyDown }));
|
|
7384
|
+
}
|
|
7385
|
+
return (hAsync("div", { class: 'searchcraft-popover-list-item' }, hAsync("a", { class: 'searchcraft-popover-list-item-link', href: this.href ? safeUrl(this.href) : undefined, onClick: this.handleLinkClick.bind(this) }, this.imageSource && (hAsync("div", { class: 'searchcraft-popover-list-item-image-wrapper' }, hAsync("img", { alt: this.imageAlt, src: this.imageSource, class: 'searchcraft-popover-list-item-image' }))), hAsync("div", { class: 'searchcraft-popover-list-item-content' }, this.title && (hAsync("p", { class: 'searchcraft-popover-list-item-content-title' }, this.title)), this.subtitle && (hAsync("p", { class: 'searchcraft-popover-list-item-content-subtitle' }, this.subtitle))))));
|
|
6865
7386
|
}
|
|
7387
|
+
static get watchers() { return {
|
|
7388
|
+
"item": ["updateRenderedValues"],
|
|
7389
|
+
"popoverResultMappings": ["updateRenderedValues"],
|
|
7390
|
+
"template": ["updateRenderedValues"],
|
|
7391
|
+
"index": ["updateRenderedValues"]
|
|
7392
|
+
}; }
|
|
6866
7393
|
static get cmpMeta() { return {
|
|
6867
7394
|
"$flags$": 768,
|
|
6868
7395
|
"$tagName$": "searchcraft-popover-list-item",
|
|
6869
7396
|
"$members$": {
|
|
6870
7397
|
"item": [16],
|
|
6871
7398
|
"popoverResultMappings": [16],
|
|
7399
|
+
"template": [16],
|
|
7400
|
+
"index": [2],
|
|
6872
7401
|
"documentPosition": [2, "document-position"],
|
|
6873
7402
|
"searchcraftId": [1, "searchcraft-id"],
|
|
6874
7403
|
"title": [32],
|
|
6875
7404
|
"subtitle": [32],
|
|
6876
7405
|
"href": [32],
|
|
6877
7406
|
"imageSource": [32],
|
|
6878
|
-
"imageAlt": [32]
|
|
7407
|
+
"imageAlt": [32],
|
|
7408
|
+
"templateHtml": [32]
|
|
6879
7409
|
},
|
|
6880
7410
|
"$listeners$": undefined,
|
|
6881
7411
|
"$lazyBundleId$": "-",
|
|
@@ -7040,6 +7570,7 @@ class SearchcraftPopoverListItemAd {
|
|
|
7040
7570
|
if (this.core?.config?.admAdConfig?.template) {
|
|
7041
7571
|
templateHtml = this.core?.config?.admAdConfig.template(item.admAd, {
|
|
7042
7572
|
html: html$1,
|
|
7573
|
+
safeUrl,
|
|
7043
7574
|
});
|
|
7044
7575
|
}
|
|
7045
7576
|
return (hAsync("div", { class: 'searchcraft-ad searchcraft-adm-ad', "data-searchcraft-ad-container-id": this.adContainerId, id: `searchcraft-adm-ad-${this.adContainerId}`, innerHTML: templateHtml }));
|
|
@@ -7052,7 +7583,7 @@ class SearchcraftPopoverListItemAd {
|
|
|
7052
7583
|
templateHtml = templateRenderFunction({
|
|
7053
7584
|
searchTerm: this.searchTerm || '',
|
|
7054
7585
|
adContainerId: this.adContainerId,
|
|
7055
|
-
}, { html: html$1 });
|
|
7586
|
+
}, { html: html$1, safeUrl });
|
|
7056
7587
|
}
|
|
7057
7588
|
return (hAsync("div", { class: 'searchcraft-ad searchcraft-custom-ad', id: containerId, "data-searchcraft-ad-container-id": this.adContainerId, innerHTML: templateHtml }));
|
|
7058
7589
|
}
|
|
@@ -7119,6 +7650,10 @@ class SearchcraftPopoverListView {
|
|
|
7119
7650
|
* list-view-item elements.
|
|
7120
7651
|
*/
|
|
7121
7652
|
popoverResultMappings;
|
|
7653
|
+
/**
|
|
7654
|
+
* A callback function responsible for rendering a result. Passed to `searchcraft-popover-list-item`.
|
|
7655
|
+
*/
|
|
7656
|
+
template;
|
|
7122
7657
|
/**
|
|
7123
7658
|
* The items to render in the list view.
|
|
7124
7659
|
*/
|
|
@@ -7138,7 +7673,7 @@ class SearchcraftPopoverListView {
|
|
|
7138
7673
|
this.cleanupCore?.();
|
|
7139
7674
|
}
|
|
7140
7675
|
renderWithADMAds() {
|
|
7141
|
-
return (hAsync("div", { class: 'searchcraft-popover-list-view' }, this.adClientResponseItems?.map((item) => (hAsync("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adClientResponseItem: item, adSource: 'adMarketplace', key: item.id, renderPosition: 'top' }))), this.searchClientResponseItems?.map((item, index) => (hAsync("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index })))));
|
|
7676
|
+
return (hAsync("div", { class: 'searchcraft-popover-list-view' }, this.adClientResponseItems?.map((item) => (hAsync("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adClientResponseItem: item, adSource: 'adMarketplace', key: item.id, renderPosition: 'top' }))), this.searchClientResponseItems?.map((item, index) => (hAsync("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, template: this.template, index: index, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index })))));
|
|
7142
7677
|
}
|
|
7143
7678
|
renderWithCustomAds() {
|
|
7144
7679
|
const itemsToRender = [];
|
|
@@ -7161,7 +7696,7 @@ class SearchcraftPopoverListView {
|
|
|
7161
7696
|
itemsToRender.push(hAsync("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adSource: 'Custom', key: `${item.id}-ad-${n}`, renderPosition: 'interstitial' }));
|
|
7162
7697
|
}
|
|
7163
7698
|
}
|
|
7164
|
-
itemsToRender.push(hAsync("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index }));
|
|
7699
|
+
itemsToRender.push(hAsync("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, template: this.template, index: index, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index }));
|
|
7165
7700
|
});
|
|
7166
7701
|
// Renders ads at end
|
|
7167
7702
|
for (let n = 0; n < adEndQuantity; n++) {
|
|
@@ -7191,7 +7726,7 @@ class SearchcraftPopoverListView {
|
|
|
7191
7726
|
itemsToRender.push(hAsync("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adSource: 'Nativo', key: `${item.id}-ad-${n}`, renderPosition: 'interstitial' }));
|
|
7192
7727
|
}
|
|
7193
7728
|
}
|
|
7194
|
-
itemsToRender.push(hAsync("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index }));
|
|
7729
|
+
itemsToRender.push(hAsync("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, template: this.template, index: index, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index }));
|
|
7195
7730
|
});
|
|
7196
7731
|
// Renders ads at end
|
|
7197
7732
|
for (let n = 0; n < adEndQuantity; n++) {
|
|
@@ -7200,7 +7735,7 @@ class SearchcraftPopoverListView {
|
|
|
7200
7735
|
return hAsync("div", { class: 'searchcraft-popover-list-view' }, itemsToRender);
|
|
7201
7736
|
}
|
|
7202
7737
|
renderWithNoAds() {
|
|
7203
|
-
return (hAsync("div", { class: 'searchcraft-popover-list-view' }, this.searchClientResponseItems?.map((item, index) => (hAsync("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index })))));
|
|
7738
|
+
return (hAsync("div", { class: 'searchcraft-popover-list-view' }, this.searchClientResponseItems?.map((item, index) => (hAsync("searchcraft-popover-list-item", { "searchcraft-id": this.searchcraftId, item: item, key: item.id, popoverResultMappings: this.popoverResultMappings, template: this.template, index: index, documentPosition: this.searchResultsPerPage * (this.searchResultsPage - 1) + index })))));
|
|
7204
7739
|
}
|
|
7205
7740
|
render() {
|
|
7206
7741
|
if (this.config?.customAdConfig) {
|
|
@@ -7220,6 +7755,7 @@ class SearchcraftPopoverListView {
|
|
|
7220
7755
|
"$members$": {
|
|
7221
7756
|
"searchcraftId": [1, "searchcraft-id"],
|
|
7222
7757
|
"popoverResultMappings": [16],
|
|
7758
|
+
"template": [16],
|
|
7223
7759
|
"searchClientResponseItems": [16],
|
|
7224
7760
|
"adClientResponseItems": [16],
|
|
7225
7761
|
"searchResultsPage": [2, "search-results-page"],
|
|
@@ -7344,7 +7880,7 @@ class SearchcraftResultsInfo {
|
|
|
7344
7880
|
range: [Number(this.range[0]), Number(this.range[1])],
|
|
7345
7881
|
count: this.count,
|
|
7346
7882
|
responseTime: this.responseTime,
|
|
7347
|
-
}, { html: html$1 })
|
|
7883
|
+
}, { html: html$1, safeUrl })
|
|
7348
7884
|
: `${formatNumberWithCommas(this.count)} results found in ${this.responseTime}ms`));
|
|
7349
7885
|
}
|
|
7350
7886
|
static get cmpMeta() { return {
|
|
@@ -9574,10 +10110,11 @@ class SearchcraftResultsSummary {
|
|
|
9574
10110
|
unsubscribe;
|
|
9575
10111
|
cleanupCore;
|
|
9576
10112
|
/**
|
|
9577
|
-
|
|
9578
|
-
|
|
10113
|
+
* Callback invoked when the Searchcraft core instance is available.
|
|
10114
|
+
*/
|
|
9579
10115
|
onCoreAvailable(core) {
|
|
9580
10116
|
core.store.setState({ hasSummaryBox: true });
|
|
10117
|
+
this.handleStateChange(core.store.getState());
|
|
9581
10118
|
this.unsubscribe = core.store.subscribe(this.handleStateChange.bind(this));
|
|
9582
10119
|
}
|
|
9583
10120
|
connectedCallback() {
|
|
@@ -9612,10 +10149,10 @@ class SearchcraftResultsSummary {
|
|
|
9612
10149
|
if (this.isSummaryNotEnabled) {
|
|
9613
10150
|
return (hAsync("div", { class: 'searchcraft-results-summary-content' }, this.summaryErrorMessage || 'AI summaries are not enabled'));
|
|
9614
10151
|
}
|
|
9615
|
-
return (hAsync("div", { class: 'searchcraft-results-summary-content', innerHTML: this.summary, "aria-live":
|
|
10152
|
+
return (hAsync("div", { class: 'searchcraft-results-summary-content', innerHTML: this.summary, "aria-live": 'polite' }));
|
|
9616
10153
|
}
|
|
9617
10154
|
render() {
|
|
9618
|
-
return (hAsync("div", { key: '
|
|
10155
|
+
return (hAsync("div", { key: '556f53290003e7e6d8bc57c150ff1bf3581ce365', class: 'searchcraft-results-summary' }, this.renderContent()));
|
|
9619
10156
|
}
|
|
9620
10157
|
static get cmpMeta() { return {
|
|
9621
10158
|
"$flags$": 768,
|
|
@@ -9672,6 +10209,7 @@ class SearchcraftSearchResult {
|
|
|
9672
10209
|
try {
|
|
9673
10210
|
this.templateHtml = this.template?.(this.item.document, this.index, {
|
|
9674
10211
|
html: html$1,
|
|
10212
|
+
safeUrl,
|
|
9675
10213
|
source_index: this.item.source_index,
|
|
9676
10214
|
});
|
|
9677
10215
|
}
|
|
@@ -9748,10 +10286,7 @@ class SearchcraftSearchResult {
|
|
|
9748
10286
|
* @js-example
|
|
9749
10287
|
* ```html
|
|
9750
10288
|
* <!-- index.html -->
|
|
9751
|
-
* <searchcraft-search-results
|
|
9752
|
-
* ad-interval="4"
|
|
9753
|
-
* place-ad-at-start="true"
|
|
9754
|
-
* />
|
|
10289
|
+
* <searchcraft-search-results></searchcraft-search-results>
|
|
9755
10290
|
* ```
|
|
9756
10291
|
*
|
|
9757
10292
|
* ```js
|
|
@@ -9766,8 +10301,6 @@ class SearchcraftSearchResult {
|
|
|
9766
10301
|
* @react-example
|
|
9767
10302
|
* ```jsx
|
|
9768
10303
|
* <SearchcraftSearchResults
|
|
9769
|
-
* adInterval={4}
|
|
9770
|
-
* placeAdAtState={true}
|
|
9771
10304
|
* template={(item, index, { html }) => html`
|
|
9772
10305
|
* <h2>${item.title}</h2>
|
|
9773
10306
|
* `}
|
|
@@ -9777,8 +10310,6 @@ class SearchcraftSearchResult {
|
|
|
9777
10310
|
* @vue-example
|
|
9778
10311
|
* ```jsx
|
|
9779
10312
|
* <SearchcraftSearchResults
|
|
9780
|
-
* adInterval={4}
|
|
9781
|
-
* placeAdAtState={true}
|
|
9782
10313
|
* :template={(item, index, { html }) => html`
|
|
9783
10314
|
* <h2>${item.title}</h2>
|
|
9784
10315
|
* `}
|
|
@@ -9799,6 +10330,8 @@ class SearchcraftSearchResults {
|
|
|
9799
10330
|
initialQuery;
|
|
9800
10331
|
/**
|
|
9801
10332
|
* A callback function responsible for rendering a result. Passed to `searchcraft-search-result`.
|
|
10333
|
+
* Pass URLs from the result through the `safeUrl` helper before placing them in an `href` or `src`.
|
|
10334
|
+
* Never place result values in event handler attributes such as `onclick`, or in `style`.
|
|
9802
10335
|
*/
|
|
9803
10336
|
template;
|
|
9804
10337
|
adClientResponseItems = [];
|
|
@@ -9808,6 +10341,11 @@ class SearchcraftSearchResults {
|
|
|
9808
10341
|
searchResultsPage;
|
|
9809
10342
|
searchResultsPerPage;
|
|
9810
10343
|
searchTerm = '';
|
|
10344
|
+
/**
|
|
10345
|
+
* The search term of the most recent search request, used to tell a
|
|
10346
|
+
* completed search apart from a term that has not been searched yet.
|
|
10347
|
+
*/
|
|
10348
|
+
completedSearchTerm;
|
|
9811
10349
|
unsubscribe;
|
|
9812
10350
|
cleanupCore;
|
|
9813
10351
|
onCoreAvailable(core) {
|
|
@@ -9833,12 +10371,29 @@ class SearchcraftSearchResults {
|
|
|
9833
10371
|
this.searchResultsPage = state.searchResultsPage;
|
|
9834
10372
|
this.searchResultsPerPage = state.searchResultsPerPage;
|
|
9835
10373
|
this.searchTerm = state.searchTerm;
|
|
10374
|
+
const requestProperties = state.searchClientRequestProperties;
|
|
10375
|
+
this.completedSearchTerm =
|
|
10376
|
+
requestProperties && typeof requestProperties === 'object'
|
|
10377
|
+
? requestProperties.searchTerm
|
|
10378
|
+
: undefined;
|
|
10379
|
+
}
|
|
10380
|
+
/**
|
|
10381
|
+
* Whether the search for the current search term has completed with no
|
|
10382
|
+
* results. False while the term is empty, while a search is in progress, and
|
|
10383
|
+
* after the term changes until its search completes.
|
|
10384
|
+
*/
|
|
10385
|
+
get hasNoResultsToShow() {
|
|
10386
|
+
const searchTerm = this.searchTerm.trim();
|
|
10387
|
+
return (!!searchTerm &&
|
|
10388
|
+
!this.isSearchInProgress &&
|
|
10389
|
+
(this.searchClientResponseItems || []).length === 0 &&
|
|
10390
|
+
this.completedSearchTerm?.trim() === searchTerm);
|
|
9836
10391
|
}
|
|
9837
10392
|
renderEmptyState() {
|
|
9838
10393
|
return (hAsync("div", { class: 'searchcraft-search-results-empty-state' }, hAsync("slot", { name: 'empty-search' })));
|
|
9839
10394
|
}
|
|
9840
10395
|
renderNoResultsFoundState() {
|
|
9841
|
-
return (hAsync("div", { class: 'searchcraft-search-results' }, hAsync("
|
|
10396
|
+
return (hAsync("div", { class: 'searchcraft-search-results-no-results' }, hAsync("p", { class: 'searchcraft-search-results-no-results-message' }, "No results found for \"", this.searchTerm.trim(), "\".")));
|
|
9842
10397
|
}
|
|
9843
10398
|
renderWithADMAds() {
|
|
9844
10399
|
const items = this.searchClientResponseItems || [];
|
|
@@ -9909,14 +10464,12 @@ class SearchcraftSearchResults {
|
|
|
9909
10464
|
}
|
|
9910
10465
|
render() {
|
|
9911
10466
|
const searchClientResponseItems = this.searchClientResponseItems || [];
|
|
10467
|
+
if (this.hasNoResultsToShow) {
|
|
10468
|
+
return this.renderNoResultsFoundState();
|
|
10469
|
+
}
|
|
9912
10470
|
if (searchClientResponseItems.length === 0 && !this.isSearchInProgress) {
|
|
9913
10471
|
return this.renderEmptyState();
|
|
9914
10472
|
}
|
|
9915
|
-
if (this.searchTerm.length > 0 &&
|
|
9916
|
-
searchClientResponseItems.length === 0 &&
|
|
9917
|
-
!this.isSearchInProgress) {
|
|
9918
|
-
return this.renderNoResultsFoundState();
|
|
9919
|
-
}
|
|
9920
10473
|
if (this.config?.customAdConfig) {
|
|
9921
10474
|
return this.renderWithCustomAds();
|
|
9922
10475
|
}
|
|
@@ -9941,7 +10494,8 @@ class SearchcraftSearchResults {
|
|
|
9941
10494
|
"searchClientResponseItems": [32],
|
|
9942
10495
|
"searchResultsPage": [32],
|
|
9943
10496
|
"searchResultsPerPage": [32],
|
|
9944
|
-
"searchTerm": [32]
|
|
10497
|
+
"searchTerm": [32],
|
|
10498
|
+
"completedSearchTerm": [32]
|
|
9945
10499
|
},
|
|
9946
10500
|
"$listeners$": undefined,
|
|
9947
10501
|
"$lazyBundleId$": "-",
|
|
@@ -10319,10 +10873,10 @@ class SearchcraftSlider {
|
|
|
10319
10873
|
100;
|
|
10320
10874
|
const startLabel = this.getLabel(this.startValue);
|
|
10321
10875
|
const endLabel = this.getLabel(this.endValue);
|
|
10322
|
-
return (hAsync("div", { key: '
|
|
10876
|
+
return (hAsync("div", { key: 'eac09a33aca88d3cf9aeed9dd7a669c961f90ca5', class: 'searchcraft-slider' }, hAsync("div", { key: '2ad819cc623be0c08bf4cbe6d505db976eccf0c8', class: 'searchcraft-slider-range' }, hAsync("div", { key: '5e846a9986b61c2cd65450109a051457a1756153', class: 'searchcraft-slider-active-range', style: {
|
|
10323
10877
|
left: `${startPercent}%`,
|
|
10324
10878
|
width: `${endPercent - startPercent}%`,
|
|
10325
|
-
} }), hAsync("input", { key: '
|
|
10879
|
+
} }), hAsync("input", { key: 'b182af7d545693efd71bf6fd85a2ca943f3dd3ff', 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: '7009ababaef448ef30c7e6180642947a2cbe9e0e', 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: '0403cc17695e91ac0e9aa64f8cb04d28915c77c2', class: 'searchcraft-slider-label' }, hAsync("span", { key: '15078ec0da0b588a64114b2e12c34901dd96d50c', class: 'searchcraft-slider-start-label' }, startLabel), hAsync("span", { key: '22911d611b6a3c07ef1b63206a41c512c843d3d1', class: 'searchcraft-slider-end-label' }, endLabel))));
|
|
10326
10880
|
}
|
|
10327
10881
|
static get cmpMeta() { return {
|
|
10328
10882
|
"$flags$": 768,
|
|
@@ -10434,7 +10988,7 @@ class SearchcraftSummaryBox {
|
|
|
10434
10988
|
return (hAsync("div", { class: 'searchcraft-summary-box-content', innerHTML: this.summary }));
|
|
10435
10989
|
}
|
|
10436
10990
|
render() {
|
|
10437
|
-
return hAsync("div", { key: '
|
|
10991
|
+
return hAsync("div", { key: 'b9d137d3eca2e5449474227f2cf3be81eec3ad77', class: 'searchcraft-summary-box' }, this.renderContent());
|
|
10438
10992
|
}
|
|
10439
10993
|
static get cmpMeta() { return {
|
|
10440
10994
|
"$flags$": 768,
|
|
@@ -10452,7 +11006,7 @@ class SearchcraftSummaryBox {
|
|
|
10452
11006
|
}; }
|
|
10453
11007
|
}
|
|
10454
11008
|
|
|
10455
|
-
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-facet-list-wrapper{display:flex;flex-direction:column;width:100%;min-height:0}.searchcraft-facet-list-content{display:flex;flex-direction:column;gap:8px;min-height:0;flex-shrink:0}.searchcraft-facet-list-view-more{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:none;color:var(--sc-content-brand);cursor:pointer;padding:8px 0;text-align:left;text-decoration:underline}.searchcraft-facet-list-view-more:hover{color:var(--sc-surface-brand-primary-hover)}.searchcraft-facet-list-view-more:focus{outline:2px solid var(--sc-surface-brand-primary);outline-offset:2px}.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)}[data-toggle-facet-section]{cursor:pointer;display:flex;align-items:center;justify-content:space-between;width:100%;position:relative}[data-toggle-facet-section]::after{content:"›";display:inline-block;font-size:1.5em;line-height:1;margin-left:auto;flex-shrink:0;transition:transform .2s ease;transform-origin:center}[data-toggle-facet-section][data-facet-section-collapsed]::after{transform:rotate(90deg)}[data-toggle-facet-section][data-facet-section-expanded]::after{transform:rotate(-90deg)}@media(max-width: 767px){[data-toggle-filter-panel]{cursor:pointer;display:flex !important;align-items:center;justify-content:space-between;width:100%}[data-toggle-filter-panel]::after{content:"›";display:inline-block;font-size:1.5em;line-height:1;margin-left:auto;flex-shrink:0;transition:transform .2s ease;transform-origin:center}[data-toggle-filter-panel][data-filter-panel-collapsed]::after{transform:rotate(90deg)}[data-toggle-filter-panel][data-filter-panel-expanded]::after{transform:rotate(-90deg)}}@media(min-width: 768px){[data-toggle-filter-panel]{cursor:default}[data-toggle-filter-panel]::after{display:none}}: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-button-magnifying-glass-icon-size: 20px;--sc-popover-button-magnifying-glass-icon-color: var(--sc-content-neutral-secondary);--sc-popover-button-magnifying-glass-icon-color-hover: var(--sc-content-brand);--sc-popover-button-magnifying-glass-padding: 12px}@media(min-width: 576px){:root{--sc-popover-button-magnifying-glass-padding: 16px}}.searchcraft-popover-button-magnifying-glass{appearance:none;background:none;border:none;color:var(--sc-content-neutral-primary);cursor:pointer;display:flex;align-items:center;justify-content:center}.searchcraft-popover-button-magnifying-glass .searchcraft-popover-button-input{display:flex;align-items:center;justify-content:center;padding:var(--sc-popover-button-magnifying-glass-padding)}.searchcraft-popover-button-magnifying-glass .searchcraft-popover-button-input-search-icon{color:var(--sc-popover-button-magnifying-glass-icon-color);display:block;fill:none;stroke:currentcolor;stroke-width:1.5;width:var(--sc-popover-button-magnifying-glass-icon-size);height:var(--sc-popover-button-magnifying-glass-icon-size);transition:color .2s ease}.searchcraft-popover-button-magnifying-glass:hover .searchcraft-popover-button-input-search-icon{color:var(--sc-popover-button-magnifying-glass-icon-color-hover)}: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 searchcraft-results-summary,.searchcraft-popover-form searchcraft-summary-box{margin-bottom:16px}.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);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-modal-popover-list-view searchcraft-results-summary,.searchcraft-popover-form-modal-popover-list-view searchcraft-summary-box,.searchcraft-popover-form-fullscreen-popover-list-view searchcraft-results-summary,.searchcraft-popover-form-fullscreen-popover-list-view searchcraft-summary-box{padding:20px 0;margin-bottom:0;border-bottom:1px solid var(--sc-border-neutral-subtle)}.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-inline-wrapper searchcraft-results-summary,.searchcraft-popover-form-inline-wrapper searchcraft-summary-box{padding:16px 12px;margin-bottom:0;border-bottom:1px solid var(--sc-border-neutral-subtle)}.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;align-items:center;background-color:var(--sc-surface-neutral-secondary);display:flex;gap:.5rem;justify-content:space-between;line-height:1;padding:1.25rem 1.5rem}@media(min-width: 576px){.searchcraft-popover-footer{padding:1.25rem 2rem}}.searchcraft-popover-footer-results-info{margin:0}.searchcraft-popover-footer-results-found{display:none}@media(min-width: 576px){.searchcraft-popover-footer-results-found{display:inline}}.searchcraft-popover-footer-link{align-items:center;color:var(--sc-content-neutral-primary);display:flex;font-weight:var(--sc-font-bold);text-decoration:none;white-space:nowrap}.searchcraft-popover-footer-link-prefix{display:none;font-weight:var(--sc-font-normal)}@media(min-width: 576px){.searchcraft-popover-footer-link-prefix{display:inline}}.searchcraft-popover-footer-results{align-items:center;display:flex;gap:.5rem}.searchcraft-popover-footer-view-all{align-items:center;border-radius:999px;border:.0625rem solid var(--sc-border-neutral-strong);color:var(--sc-content-neutral-primary);display:inline-flex;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-bold);gap:.375rem;line-height:1;padding:.375rem .625rem;text-decoration:none}.searchcraft-popover-footer-view-all-shortcut{display:none}@media(min-width: 576px){.searchcraft-popover-footer-view-all-shortcut{display:inline-flex;gap:.125rem}.searchcraft-popover-footer-view-all-shortcut kbd{align-items:center;border-radius:.25rem;border:1px solid var(--sc-content-neutral-primary);display:flex;font-family:Helvetica,Arial,sans-serif;font-size:.75rem;font-style:normal;font-weight:400;height:1.5rem;justify-content:center;line-height:1rem;width:1.5rem}}: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}.searchcraft-results-summary{padding:20px;border-radius:var(--sc-border-radius);background-color:var(--sc-surface-neutral-secondary);position:relative;min-height:200px;color:var(--sc-content-neutral-primary);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-results-summary h1,.searchcraft-results-summary h2,.searchcraft-results-summary h3,.searchcraft-results-summary h4,.searchcraft-results-summary h5{padding-top:10px;padding-bottom:10px}.searchcraft-results-summary p{padding-bottom:10px}.searchcraft-results-summary img{max-width:200px}.searchcraft-results-summary ol,.searchcraft-results-summary ul{padding-left:1em;padding-bottom:10px}.searchcraft-results-summary a{color:var(--sc-content-brand)}.searchcraft-summary-box{padding:20px;border-radius:var(--sc-border-radius);background-color:var(--sc-surface-neutral-secondary);position:relative;min-height:200px;color:var(--sc-content-neutral-primary);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-summary-box h1,.searchcraft-summary-box h2,.searchcraft-summary-box h3,.searchcraft-summary-box h4,.searchcraft-summary-box h5{padding-top:10px;padding-bottom:10px}.searchcraft-summary-box p{padding-bottom:10px}.searchcraft-summary-box img{max-width:200px}.searchcraft-summary-box ol,.searchcraft-summary-box ul{padding-left:1em;padding-bottom:10px}.searchcraft-summary-box a{color:var(--sc-content-brand)}.searchcraft-loading{display:flex;flex-direction:column;align-items:center;gap:12px;position:absolute;top:50%;left:50%;transform:translateY(-50%) translateX(-50%)}.searchcraft-loading-dots{display:flex;gap:8px;align-items:center;height:40px}.searchcraft-loading-dots>div{width:10px;height:10px;border-radius:50%;background-color:var(--sc-surface-brand-primary);animation:searchcraft-jump .6s ease-in-out infinite}.searchcraft-loading-dots .searchcraft-loading-dot-2{animation-delay:.15s}.searchcraft-loading-dots .searchcraft-loading-dot-3{animation-delay:.3s}.searchcraft-loading-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);letter-spacing:2px;color:#828282;margin:0}@keyframes searchcraft-jump{0%{transform:translateY(0);animation-timing-function:cubic-bezier(0.33, 1, 0.68, 1)}50%{transform:translateY(-20px);animation-timing-function:cubic-bezier(0.32, 0, 0.67, 0)}100%{transform:translateY(0)}}/*# sourceMappingURL=hologram.css.map */
|
|
11009
|
+
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-no-results{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-secondary);padding:24px 0;text-align:center}.searchcraft-search-results-no-results-message{margin:0}.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-facet-list-wrapper{display:flex;flex-direction:column;width:100%;min-height:0}.searchcraft-facet-list-content{display:flex;flex-direction:column;gap:8px;min-height:0;flex-shrink:0}.searchcraft-facet-list-view-more{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:none;color:var(--sc-content-brand);cursor:pointer;padding:8px 0;text-align:left;text-decoration:underline}.searchcraft-facet-list-view-more:hover{color:var(--sc-surface-brand-primary-hover)}.searchcraft-facet-list-view-more:focus{outline:2px solid var(--sc-surface-brand-primary);outline-offset:2px}.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)}[data-toggle-facet-section]{cursor:pointer;display:flex;align-items:center;justify-content:space-between;width:100%;position:relative}[data-toggle-facet-section]::after{content:"›";display:inline-block;font-size:1.5em;line-height:1;margin-left:auto;flex-shrink:0;transition:transform .2s ease;transform-origin:center}[data-toggle-facet-section][data-facet-section-collapsed]::after{transform:rotate(90deg)}[data-toggle-facet-section][data-facet-section-expanded]::after{transform:rotate(-90deg)}@media(max-width: 767px){[data-toggle-filter-panel]{cursor:pointer;display:flex !important;align-items:center;justify-content:space-between;width:100%}[data-toggle-filter-panel]::after{content:"›";display:inline-block;font-size:1.5em;line-height:1;margin-left:auto;flex-shrink:0;transition:transform .2s ease;transform-origin:center}[data-toggle-filter-panel][data-filter-panel-collapsed]::after{transform:rotate(90deg)}[data-toggle-filter-panel][data-filter-panel-expanded]::after{transform:rotate(-90deg)}}@media(min-width: 768px){[data-toggle-filter-panel]{cursor:default}[data-toggle-filter-panel]::after{display:none}}: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-button-magnifying-glass-icon-size: 20px;--sc-popover-button-magnifying-glass-icon-color: var(--sc-content-neutral-secondary);--sc-popover-button-magnifying-glass-icon-color-hover: var(--sc-content-brand);--sc-popover-button-magnifying-glass-padding: 12px}@media(min-width: 576px){:root{--sc-popover-button-magnifying-glass-padding: 16px}}.searchcraft-popover-button-magnifying-glass{appearance:none;background:none;border:none;color:var(--sc-content-neutral-primary);cursor:pointer;display:flex;align-items:center;justify-content:center}.searchcraft-popover-button-magnifying-glass .searchcraft-popover-button-input{display:flex;align-items:center;justify-content:center;padding:var(--sc-popover-button-magnifying-glass-padding)}.searchcraft-popover-button-magnifying-glass .searchcraft-popover-button-input-search-icon{color:var(--sc-popover-button-magnifying-glass-icon-color);display:block;fill:none;stroke:currentcolor;stroke-width:1.5;width:var(--sc-popover-button-magnifying-glass-icon-size);height:var(--sc-popover-button-magnifying-glass-icon-size);transition:color .2s ease}.searchcraft-popover-button-magnifying-glass:hover .searchcraft-popover-button-input-search-icon{color:var(--sc-popover-button-magnifying-glass-icon-color-hover)}: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 searchcraft-results-summary,.searchcraft-popover-form searchcraft-summary-box{margin-bottom:16px}.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);width:0}.searchcraft-popover-form-cancel-button{background:none;border:none;cursor:pointer;font-size:14px}.searchcraft-popover-form-no-results{color:var(--sc-content-neutral-secondary);padding:24px 0;text-align:center}.searchcraft-popover-form-no-results-message{margin:0}.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-modal-popover-list-view searchcraft-results-summary,.searchcraft-popover-form-modal-popover-list-view searchcraft-summary-box,.searchcraft-popover-form-fullscreen-popover-list-view searchcraft-results-summary,.searchcraft-popover-form-fullscreen-popover-list-view searchcraft-summary-box{padding:20px 0;margin-bottom:0;border-bottom:1px solid var(--sc-border-neutral-subtle)}.searchcraft-popover-form-modal-popover-list-view searchcraft-popover-list-view,.searchcraft-popover-form-fullscreen-popover-list-view searchcraft-popover-list-view{overflow:visible;height:auto}.searchcraft-popover-form-inline{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{background-color:var(--sc-surface-neutral-primary);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-inline-wrapper searchcraft-results-summary,.searchcraft-popover-form-inline-wrapper searchcraft-summary-box{padding:16px 12px;margin-bottom:0;border-bottom:1px solid var(--sc-border-neutral-subtle)}.searchcraft-popover-form-inline-scroll-area{flex:1;min-height:0;overflow:auto;padding:0 12px}.searchcraft-popover-form-inline-scroll-area searchcraft-popover-list-view{overflow:visible;height:auto;padding:0}.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;font-size:1rem;align-items:center;background-color:var(--sc-surface-neutral-secondary);display:flex;gap:.5rem;justify-content:space-between;line-height:1;padding:1.25rem 1.5rem}@media(min-width: 576px){.searchcraft-popover-footer{padding:1.25rem 2rem}}.searchcraft-popover-footer-results-info{margin:0}.searchcraft-popover-footer-results-found{display:none}@media(min-width: 576px){.searchcraft-popover-footer-results-found{display:inline}}.searchcraft-popover-footer-link{align-items:center;color:var(--sc-content-neutral-primary);display:flex;font-weight:var(--sc-font-bold);text-decoration:none;white-space:nowrap}.searchcraft-popover-footer-link-prefix{display:none;font-weight:var(--sc-font-normal)}@media(min-width: 576px){.searchcraft-popover-footer-link-prefix{display:inline}}.searchcraft-popover-footer-results{align-items:center;display:flex;gap:.5rem}.searchcraft-popover-footer-view-all{align-items:center;border-radius:999px;border:.0625rem solid var(--sc-border-neutral-strong);color:var(--sc-content-neutral-primary);display:inline-flex;font-size:var(--sc-body-font-size);font-weight:var(--sc-font-bold);gap:.375rem;line-height:1;padding:.375rem .625rem;text-decoration:none}.searchcraft-popover-footer-view-all-shortcut{display:none}@media(min-width: 576px){.searchcraft-popover-footer-view-all-shortcut{display:inline-flex;gap:.125rem}.searchcraft-popover-footer-view-all-shortcut kbd{align-items:center;border-radius:.25rem;border:1px solid var(--sc-content-neutral-primary);display:flex;font-family:Helvetica,Arial,sans-serif;font-size:.75rem;font-style:normal;font-weight:400;height:1.5rem;justify-content:center;line-height:1rem;width:1.5rem}}: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 0;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}.searchcraft-results-summary{padding:20px;border-radius:var(--sc-border-radius);background-color:var(--sc-surface-neutral-secondary);position:relative;min-height:200px;color:var(--sc-content-neutral-primary);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-results-summary h1,.searchcraft-results-summary h2,.searchcraft-results-summary h3,.searchcraft-results-summary h4,.searchcraft-results-summary h5{padding-top:10px;padding-bottom:10px}.searchcraft-results-summary p{padding-bottom:10px}.searchcraft-results-summary img{max-width:200px}.searchcraft-results-summary ol,.searchcraft-results-summary ul{padding-left:1em;padding-bottom:10px}.searchcraft-results-summary a{color:var(--sc-content-brand)}.searchcraft-summary-box{padding:20px;border-radius:var(--sc-border-radius);background-color:var(--sc-surface-neutral-secondary);position:relative;min-height:200px;color:var(--sc-content-neutral-primary);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-summary-box h1,.searchcraft-summary-box h2,.searchcraft-summary-box h3,.searchcraft-summary-box h4,.searchcraft-summary-box h5{padding-top:10px;padding-bottom:10px}.searchcraft-summary-box p{padding-bottom:10px}.searchcraft-summary-box img{max-width:200px}.searchcraft-summary-box ol,.searchcraft-summary-box ul{padding-left:1em;padding-bottom:10px}.searchcraft-summary-box a{color:var(--sc-content-brand)}.searchcraft-loading{display:flex;flex-direction:column;align-items:center;gap:12px;position:absolute;top:50%;left:50%;transform:translateY(-50%) translateX(-50%)}.searchcraft-loading-dots{display:flex;gap:8px;align-items:center;height:40px}.searchcraft-loading-dots>div{width:10px;height:10px;border-radius:50%;background-color:var(--sc-surface-brand-primary);animation:searchcraft-jump .6s ease-in-out infinite}.searchcraft-loading-dots .searchcraft-loading-dot-2{animation-delay:.15s}.searchcraft-loading-dots .searchcraft-loading-dot-3{animation-delay:.3s}.searchcraft-loading-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);letter-spacing:2px;color:#828282;margin:0}@keyframes searchcraft-jump{0%{transform:translateY(0);animation-timing-function:cubic-bezier(0.33, 1, 0.68, 1)}50%{transform:translateY(-20px);animation-timing-function:cubic-bezier(0.32, 0, 0.67, 0)}100%{transform:translateY(0)}}/*# sourceMappingURL=hologram.css.map */
|
|
10456
11010
|
`;
|
|
10457
11011
|
|
|
10458
11012
|
/**
|
|
@@ -10488,7 +11042,7 @@ class SearchcraftTheme {
|
|
|
10488
11042
|
registerInstance(this, hostRef);
|
|
10489
11043
|
}
|
|
10490
11044
|
render() {
|
|
10491
|
-
return hAsync("style", { key: '
|
|
11045
|
+
return hAsync("style", { key: '42e5fdf41c2c6a9146fb44b2d1aea2e5dfbb92dc' }, styles);
|
|
10492
11046
|
}
|
|
10493
11047
|
static get cmpMeta() { return {
|
|
10494
11048
|
"$flags$": 256,
|
|
@@ -10552,9 +11106,9 @@ class SearchcraftToggleButton {
|
|
|
10552
11106
|
this.cleanupCore?.();
|
|
10553
11107
|
}
|
|
10554
11108
|
render() {
|
|
10555
|
-
return (hAsync("div", { key: '
|
|
11109
|
+
return (hAsync("div", { key: 'db31c8615adbfaaf4084339c3f8068dd8801a6fd', class: classNames('searchcraft-toggle-button', {
|
|
10556
11110
|
'searchcraft-toggle-button-active': this.isActive,
|
|
10557
|
-
}) }, hAsync("div", { key: '
|
|
11111
|
+
}) }, hAsync("div", { key: '173fdc97a748c3da728dc1945f1013f71fc7317c' }, hAsync("p", { key: 'a447d01caca671c032722c9fbb96fe9d266cb969', class: 'searchcraft-toggle-button-label' }, this.label), this.subLabel && (hAsync("p", { key: '2148570d4c43ac0d0849ab4f2b76b555d3f36582', class: 'searchcraft-toggle-button-sub-label' }, this.subLabel))), hAsync("button", { key: '66dc829d0f1997aeda7eceb9133b058715d46f0b', class: 'searchcraft-toggle-button-background', onClick: this.handleToggle, type: 'button' }, hAsync("div", { key: '37d02f7340b57b11ab9f160df033eb39fb44bb13', class: 'searchcraft-toggle-button-handle' }))));
|
|
10558
11112
|
}
|
|
10559
11113
|
static get cmpMeta() { return {
|
|
10560
11114
|
"$flags$": 768,
|