@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.js
CHANGED
|
@@ -4790,16 +4790,376 @@ function createDOMPurify() {
|
|
|
4790
4790
|
}
|
|
4791
4791
|
var purify = createDOMPurify();
|
|
4792
4792
|
|
|
4793
|
+
/**
|
|
4794
|
+
* States of a small HTML tokenizer, used to find where each value lands in the markup. The
|
|
4795
|
+
* states from `TAG_OPEN` to `AFTER_ATTRIBUTE_NAME` are inside a tag but not in a value.
|
|
4796
|
+
*/
|
|
4797
|
+
const TEXT = 0;
|
|
4798
|
+
const TAG_OPEN = 1;
|
|
4799
|
+
const END_TAG_OPEN = 2;
|
|
4800
|
+
const TAG_NAME = 3;
|
|
4801
|
+
const BEFORE_ATTRIBUTE_NAME = 4;
|
|
4802
|
+
const ATTRIBUTE_NAME = 5;
|
|
4803
|
+
const AFTER_ATTRIBUTE_NAME = 6;
|
|
4804
|
+
const BEFORE_VALUE = 7;
|
|
4805
|
+
const DOUBLE_QUOTED_VALUE = 8;
|
|
4806
|
+
const SINGLE_QUOTED_VALUE = 9;
|
|
4807
|
+
const UNQUOTED_VALUE = 10;
|
|
4808
|
+
const MARKUP_DECLARATION = 11;
|
|
4809
|
+
const COMMENT = 12;
|
|
4810
|
+
const BOGUS_COMMENT = 13;
|
|
4811
|
+
const RAW_TEXT = 14;
|
|
4812
|
+
/**
|
|
4813
|
+
* Elements whose content is read as text up to their end tag.
|
|
4814
|
+
*/
|
|
4815
|
+
const RAW_TEXT_ELEMENTS = [
|
|
4816
|
+
'iframe',
|
|
4817
|
+
'noembed',
|
|
4818
|
+
'noframes',
|
|
4819
|
+
'noscript',
|
|
4820
|
+
'script',
|
|
4821
|
+
'style',
|
|
4822
|
+
'textarea',
|
|
4823
|
+
'title',
|
|
4824
|
+
'xmp',
|
|
4825
|
+
];
|
|
4826
|
+
const SPACE_PATTERN = /[\t\n\f\r ]/;
|
|
4827
|
+
const LETTER_PATTERN = /[a-z]/i;
|
|
4828
|
+
/**
|
|
4829
|
+
* Characters that cannot appear as is in an unquoted attribute value.
|
|
4830
|
+
*/
|
|
4831
|
+
const UNQUOTED_VALUE_SPECIAL_PATTERN = /[\s"'=<>`]/g;
|
|
4832
|
+
const createTokenizer = (state) => ({
|
|
4833
|
+
state,
|
|
4834
|
+
position: 0,
|
|
4835
|
+
tagName: '',
|
|
4836
|
+
isEndTag: false,
|
|
4837
|
+
commentStart: 0,
|
|
4838
|
+
});
|
|
4839
|
+
/**
|
|
4840
|
+
* Reads the markup from where the last call stopped, so `tokenizer.state` tells where the next
|
|
4841
|
+
* character lands. It follows the HTML tokenizer closely enough to tell text, tags and
|
|
4842
|
+
* attribute values apart, including after comments and inside elements such as `<style>`.
|
|
4843
|
+
* It does not follow the tree the browser builds, so inside `<svg>` or `<math>`, elements such
|
|
4844
|
+
* as `<style>` and `<title>` are still read as text.
|
|
4845
|
+
*/
|
|
4846
|
+
const tokenize = (tokenizer, markup) => {
|
|
4847
|
+
while (tokenizer.position < markup.length) {
|
|
4848
|
+
const index = tokenizer.position++;
|
|
4849
|
+
const character = markup.charAt(index);
|
|
4850
|
+
const isSpace = SPACE_PATTERN.test(character);
|
|
4851
|
+
switch (tokenizer.state) {
|
|
4852
|
+
case TEXT:
|
|
4853
|
+
if (character === '<') {
|
|
4854
|
+
tokenizer.state = TAG_OPEN;
|
|
4855
|
+
}
|
|
4856
|
+
break;
|
|
4857
|
+
case TAG_OPEN:
|
|
4858
|
+
case END_TAG_OPEN:
|
|
4859
|
+
if (LETTER_PATTERN.test(character)) {
|
|
4860
|
+
tokenizer.isEndTag = tokenizer.state === END_TAG_OPEN;
|
|
4861
|
+
tokenizer.tagName = character;
|
|
4862
|
+
tokenizer.state = TAG_NAME;
|
|
4863
|
+
}
|
|
4864
|
+
else if (tokenizer.state === END_TAG_OPEN) {
|
|
4865
|
+
tokenizer.state = character === '>' ? TEXT : BOGUS_COMMENT;
|
|
4866
|
+
}
|
|
4867
|
+
else if (character === '/') {
|
|
4868
|
+
tokenizer.state = END_TAG_OPEN;
|
|
4869
|
+
}
|
|
4870
|
+
else if (character === '!') {
|
|
4871
|
+
tokenizer.state = MARKUP_DECLARATION;
|
|
4872
|
+
}
|
|
4873
|
+
else if (character === '?') {
|
|
4874
|
+
tokenizer.state = BOGUS_COMMENT;
|
|
4875
|
+
}
|
|
4876
|
+
else {
|
|
4877
|
+
// The `<` is text, so read this character again as text.
|
|
4878
|
+
tokenizer.state = TEXT;
|
|
4879
|
+
tokenizer.position = index;
|
|
4880
|
+
}
|
|
4881
|
+
break;
|
|
4882
|
+
case TAG_NAME:
|
|
4883
|
+
if (isSpace || character === '/') {
|
|
4884
|
+
tokenizer.state = BEFORE_ATTRIBUTE_NAME;
|
|
4885
|
+
}
|
|
4886
|
+
else if (character === '>') {
|
|
4887
|
+
endTag(tokenizer);
|
|
4888
|
+
}
|
|
4889
|
+
else {
|
|
4890
|
+
tokenizer.tagName += character;
|
|
4891
|
+
}
|
|
4892
|
+
break;
|
|
4893
|
+
case BEFORE_ATTRIBUTE_NAME:
|
|
4894
|
+
if (character === '>') {
|
|
4895
|
+
endTag(tokenizer);
|
|
4896
|
+
}
|
|
4897
|
+
else if (!isSpace && character !== '/') {
|
|
4898
|
+
tokenizer.state = ATTRIBUTE_NAME;
|
|
4899
|
+
}
|
|
4900
|
+
break;
|
|
4901
|
+
case ATTRIBUTE_NAME:
|
|
4902
|
+
case AFTER_ATTRIBUTE_NAME:
|
|
4903
|
+
if (character === '>') {
|
|
4904
|
+
endTag(tokenizer);
|
|
4905
|
+
}
|
|
4906
|
+
else if (character === '=') {
|
|
4907
|
+
tokenizer.state = BEFORE_VALUE;
|
|
4908
|
+
}
|
|
4909
|
+
else if (character === '/') {
|
|
4910
|
+
tokenizer.state = BEFORE_ATTRIBUTE_NAME;
|
|
4911
|
+
}
|
|
4912
|
+
else if (isSpace) {
|
|
4913
|
+
tokenizer.state = AFTER_ATTRIBUTE_NAME;
|
|
4914
|
+
}
|
|
4915
|
+
else {
|
|
4916
|
+
tokenizer.state = ATTRIBUTE_NAME;
|
|
4917
|
+
}
|
|
4918
|
+
break;
|
|
4919
|
+
case BEFORE_VALUE:
|
|
4920
|
+
if (character === '>') {
|
|
4921
|
+
endTag(tokenizer);
|
|
4922
|
+
}
|
|
4923
|
+
else if (character === '"') {
|
|
4924
|
+
tokenizer.state = DOUBLE_QUOTED_VALUE;
|
|
4925
|
+
}
|
|
4926
|
+
else if (character === "'") {
|
|
4927
|
+
tokenizer.state = SINGLE_QUOTED_VALUE;
|
|
4928
|
+
}
|
|
4929
|
+
else if (!isSpace) {
|
|
4930
|
+
tokenizer.state = UNQUOTED_VALUE;
|
|
4931
|
+
}
|
|
4932
|
+
break;
|
|
4933
|
+
case DOUBLE_QUOTED_VALUE:
|
|
4934
|
+
case SINGLE_QUOTED_VALUE:
|
|
4935
|
+
if (character === (tokenizer.state === DOUBLE_QUOTED_VALUE ? '"' : "'")) {
|
|
4936
|
+
tokenizer.state = BEFORE_ATTRIBUTE_NAME;
|
|
4937
|
+
}
|
|
4938
|
+
break;
|
|
4939
|
+
case UNQUOTED_VALUE:
|
|
4940
|
+
if (character === '>') {
|
|
4941
|
+
endTag(tokenizer);
|
|
4942
|
+
}
|
|
4943
|
+
else if (isSpace) {
|
|
4944
|
+
tokenizer.state = BEFORE_ATTRIBUTE_NAME;
|
|
4945
|
+
}
|
|
4946
|
+
break;
|
|
4947
|
+
case MARKUP_DECLARATION:
|
|
4948
|
+
if (markup.startsWith('--', index)) {
|
|
4949
|
+
tokenizer.state = COMMENT;
|
|
4950
|
+
tokenizer.position = index + 2;
|
|
4951
|
+
tokenizer.commentStart = index + 2;
|
|
4952
|
+
}
|
|
4953
|
+
else {
|
|
4954
|
+
tokenizer.state = BOGUS_COMMENT;
|
|
4955
|
+
tokenizer.position = index;
|
|
4956
|
+
}
|
|
4957
|
+
break;
|
|
4958
|
+
case COMMENT: {
|
|
4959
|
+
// A comment ends at `-->` or `--!>`, and `<!-->` and `<!--->` end at once.
|
|
4960
|
+
const comment = markup.slice(Math.max(tokenizer.commentStart, index - 3), index);
|
|
4961
|
+
if (character === '>' &&
|
|
4962
|
+
(index - tokenizer.commentStart < 2
|
|
4963
|
+
? /^-?$/.test(comment)
|
|
4964
|
+
: /--!?$/.test(comment))) {
|
|
4965
|
+
tokenizer.state = TEXT;
|
|
4966
|
+
}
|
|
4967
|
+
break;
|
|
4968
|
+
}
|
|
4969
|
+
case BOGUS_COMMENT:
|
|
4970
|
+
if (character === '>') {
|
|
4971
|
+
tokenizer.state = TEXT;
|
|
4972
|
+
}
|
|
4973
|
+
break;
|
|
4974
|
+
case RAW_TEXT: {
|
|
4975
|
+
const endTagPattern = new RegExp(`</${tokenizer.tagName}[\\t\\n\\f\\r />]`, 'gi');
|
|
4976
|
+
endTagPattern.lastIndex = index;
|
|
4977
|
+
const match = endTagPattern.exec(markup);
|
|
4978
|
+
if (!match) {
|
|
4979
|
+
// Read the end again next time, in case the end tag is only partly written yet.
|
|
4980
|
+
tokenizer.position = Math.max(index, markup.length - tokenizer.tagName.length - 2);
|
|
4981
|
+
return;
|
|
4982
|
+
}
|
|
4983
|
+
tokenizer.state = TAG_NAME;
|
|
4984
|
+
tokenizer.isEndTag = true;
|
|
4985
|
+
tokenizer.position = match.index + tokenizer.tagName.length + 2;
|
|
4986
|
+
break;
|
|
4987
|
+
}
|
|
4988
|
+
}
|
|
4989
|
+
}
|
|
4990
|
+
};
|
|
4991
|
+
const endTag = (tokenizer) => {
|
|
4992
|
+
const tagName = tokenizer.tagName.toLowerCase();
|
|
4993
|
+
if (!tokenizer.isEndTag && RAW_TEXT_ELEMENTS.includes(tagName)) {
|
|
4994
|
+
tokenizer.state = RAW_TEXT;
|
|
4995
|
+
tokenizer.tagName = tagName;
|
|
4996
|
+
}
|
|
4997
|
+
else {
|
|
4998
|
+
tokenizer.state = TEXT;
|
|
4999
|
+
}
|
|
5000
|
+
};
|
|
5001
|
+
const encodeCharacter = (character) => `&#${character.charCodeAt(0)};`;
|
|
5002
|
+
const isTagState = (state) => state >= TAG_OPEN && state <= AFTER_ATTRIBUTE_NAME;
|
|
5003
|
+
const isValueState = (state) => state >= BEFORE_VALUE && state <= UNQUOTED_VALUE;
|
|
5004
|
+
/**
|
|
5005
|
+
* Makes a value safe for where it lands in the markup. With more than one state, the markup
|
|
5006
|
+
* may be read in more than one way, so the value is made safe for each of them.
|
|
5007
|
+
*/
|
|
5008
|
+
const placeValue = (value, states) => {
|
|
5009
|
+
if (states.every(isTagState)) {
|
|
5010
|
+
return value;
|
|
5011
|
+
}
|
|
5012
|
+
if (!states.some(isValueState)) {
|
|
5013
|
+
return value && purify.sanitize(value);
|
|
5014
|
+
}
|
|
5015
|
+
let escaped = value;
|
|
5016
|
+
for (const state of states) {
|
|
5017
|
+
if (state === DOUBLE_QUOTED_VALUE) {
|
|
5018
|
+
escaped = escaped.replace(/"/g, '"');
|
|
5019
|
+
}
|
|
5020
|
+
else if (state === SINGLE_QUOTED_VALUE) {
|
|
5021
|
+
escaped = escaped.replace(/'/g, ''');
|
|
5022
|
+
}
|
|
5023
|
+
else if (isValueState(state)) {
|
|
5024
|
+
escaped = escaped.replace(UNQUOTED_VALUE_SPECIAL_PATTERN, encodeCharacter);
|
|
5025
|
+
}
|
|
5026
|
+
}
|
|
5027
|
+
if (!states.every(isValueState)) {
|
|
5028
|
+
// The value may be read as text too, so it must not start a tag.
|
|
5029
|
+
return escaped.replace(/</g, '<');
|
|
5030
|
+
}
|
|
5031
|
+
// With no value, the next attribute would be read as this attribute's value.
|
|
5032
|
+
return escaped || (states.includes(BEFORE_VALUE) ? '""' : '');
|
|
5033
|
+
};
|
|
4793
5034
|
/**
|
|
4794
5035
|
* This allows you to parse a template string with a function.
|
|
5036
|
+
*
|
|
5037
|
+
* Each value is made safe for where it lands in the markup:
|
|
5038
|
+
* - In text, the value is sanitized with DOMPurify, so it can contain markup but no scripts.
|
|
5039
|
+
* DOMPurify also removes URLs it does not allow, so a link with a custom scheme that `safeUrl`
|
|
5040
|
+
* allowed loses its `href` when its markup is placed as a value in text, as in a list built
|
|
5041
|
+
* from nested `html` calls. Write such links in the template's own markup instead.
|
|
5042
|
+
* - In a quoted attribute value, the quote that would end the value is escaped. The browser
|
|
5043
|
+
* decodes it again, so quotes display as given. Character references in the value, such as
|
|
5044
|
+
* `&`, are decoded by the browser as before.
|
|
5045
|
+
* - In an unquoted attribute value, spaces, quotes and `=<>` are escaped.
|
|
5046
|
+
* - Inside a tag but not in an attribute value, such as `<a ${attributes}>`, the value is placed
|
|
5047
|
+
* as is. Use this only for attributes the template writes itself, such as the output of a
|
|
5048
|
+
* nested `html` call, never for indexed data.
|
|
5049
|
+
*
|
|
5050
|
+
* A template can also be a list of attributes, such as `aria-label="${label}"`, that another
|
|
5051
|
+
* template places inside a tag. Until its first tag ends, a value that could be in an attribute
|
|
5052
|
+
* value is escaped for that attribute, and `<` is escaped so it cannot start a tag either.
|
|
5053
|
+
*
|
|
5054
|
+
* Escaping keeps a value inside its attribute but does not make every attribute safe. A value in
|
|
5055
|
+
* an event handler such as `onclick` still runs as script, and a value in `style` still applies
|
|
5056
|
+
* as CSS. URLs from indexed data should go through `safeUrl` before they are placed in an
|
|
5057
|
+
* `href` or `src`.
|
|
4795
5058
|
*/
|
|
4796
5059
|
const html$1 = (strings, ...values) => {
|
|
4797
|
-
|
|
5060
|
+
const tokenizer = createTokenizer(TEXT);
|
|
5061
|
+
// A template can also be a list of attributes that a parent template places inside a tag,
|
|
5062
|
+
// so until the two readings meet, its values are made safe for both.
|
|
5063
|
+
let attributeTokenizer = createTokenizer(BEFORE_ATTRIBUTE_NAME);
|
|
5064
|
+
let result = strings[0] ?? '';
|
|
4798
5065
|
for (let i = 0; i < values.length; i++) {
|
|
5066
|
+
const value = values[i];
|
|
5067
|
+
tokenize(tokenizer, result);
|
|
5068
|
+
if (attributeTokenizer) {
|
|
5069
|
+
tokenize(attributeTokenizer, result);
|
|
5070
|
+
if (tokenizer.state === TEXT && attributeTokenizer.state === TEXT) {
|
|
5071
|
+
attributeTokenizer = undefined;
|
|
5072
|
+
}
|
|
5073
|
+
}
|
|
4799
5074
|
result +=
|
|
4800
|
-
|
|
5075
|
+
placeValue(value || value === 0 ? String(value) : '', attributeTokenizer
|
|
5076
|
+
? [tokenizer.state, attributeTokenizer.state]
|
|
5077
|
+
: [tokenizer.state]) + (strings[i + 1] ?? '');
|
|
4801
5078
|
}
|
|
4802
|
-
return result
|
|
5079
|
+
return result;
|
|
5080
|
+
};
|
|
5081
|
+
|
|
5082
|
+
/**
|
|
5083
|
+
* Schemes that are always allowed. `data:` URLs are allowed separately, for images only.
|
|
5084
|
+
*/
|
|
5085
|
+
const ALLOWED_SCHEMES = ['http', 'https', 'mailto', 'tel', 'sms'];
|
|
5086
|
+
/**
|
|
5087
|
+
* Returned in place of a URL that is not allowed.
|
|
5088
|
+
*/
|
|
5089
|
+
const BLOCKED_URL = '#';
|
|
5090
|
+
/**
|
|
5091
|
+
* A scheme is only recognized when its `:` comes before any `/`, `?` or `#`.
|
|
5092
|
+
*/
|
|
5093
|
+
const SCHEME_PATTERN = /^([a-z][a-z\d+.-]*):/i;
|
|
5094
|
+
const DATA_IMAGE_PATTERN = /^data:image\//i;
|
|
5095
|
+
/**
|
|
5096
|
+
* Character references the browser decodes in an attribute before it reads the URL.
|
|
5097
|
+
* Named references are limited to the ones that can help spell out a scheme.
|
|
5098
|
+
*/
|
|
5099
|
+
const CHARACTER_REFERENCE_PATTERN = /&#[xX]([\da-fA-F]+);?|&#(\d+);?|&(colon|Tab|NewLine);/g;
|
|
5100
|
+
const NAMED_CHARACTER_REFERENCES = {
|
|
5101
|
+
colon: ':',
|
|
5102
|
+
Tab: '\t',
|
|
5103
|
+
NewLine: '\n',
|
|
5104
|
+
};
|
|
5105
|
+
const fromCodePoint = (codePoint) => codePoint > 0 && codePoint <= 0x10ffff
|
|
5106
|
+
? String.fromCodePoint(codePoint)
|
|
5107
|
+
: '�';
|
|
5108
|
+
const decodeCharacterReferences = (value) => value.replace(CHARACTER_REFERENCE_PATTERN, (_match, hex, decimal, name) => {
|
|
5109
|
+
if (hex) {
|
|
5110
|
+
return fromCodePoint(Number.parseInt(hex, 16));
|
|
5111
|
+
}
|
|
5112
|
+
if (decimal) {
|
|
5113
|
+
return fromCodePoint(Number.parseInt(decimal, 10));
|
|
5114
|
+
}
|
|
5115
|
+
return NAMED_CHARACTER_REFERENCES[name ?? ''] ?? '';
|
|
5116
|
+
});
|
|
5117
|
+
/**
|
|
5118
|
+
* Reads a URL the way the browser does before it looks for a scheme: character references
|
|
5119
|
+
* are decoded, tabs and newlines are removed, and leading spaces and control characters
|
|
5120
|
+
* are ignored.
|
|
5121
|
+
*/
|
|
5122
|
+
const normalizeUrl = (value) => {
|
|
5123
|
+
const decoded = decodeCharacterReferences(value).replace(/[\t\n\r]/g, '');
|
|
5124
|
+
let start = 0;
|
|
5125
|
+
while (start < decoded.length && decoded.charCodeAt(start) <= 0x20) {
|
|
5126
|
+
start++;
|
|
5127
|
+
}
|
|
5128
|
+
return decoded.slice(start);
|
|
5129
|
+
};
|
|
5130
|
+
const normalizeScheme = (scheme) => scheme.trim().toLowerCase().replace(/:$/, '');
|
|
5131
|
+
/**
|
|
5132
|
+
* Returns `url` unchanged when it is safe to place in an `href` or `src` attribute, and `#`
|
|
5133
|
+
* when it is not.
|
|
5134
|
+
*
|
|
5135
|
+
* Relative URLs, `http:`, `https:`, `mailto:`, `tel:`, `sms:` and `data:image/` URLs are safe,
|
|
5136
|
+
* along with any scheme passed in `options.schemes`. Every other scheme, such as `javascript:`,
|
|
5137
|
+
* is blocked, including when it is written in mixed case, has leading spaces or contains tabs,
|
|
5138
|
+
* newlines or character references.
|
|
5139
|
+
*
|
|
5140
|
+
* ```js
|
|
5141
|
+
* html`<a href="${safeUrl(item.url)}">${item.title}</a>`;
|
|
5142
|
+
* html`<a href="${safeUrl(item.appUrl, { schemes: ['myapp'] })}">Open in app</a>`;
|
|
5143
|
+
* ```
|
|
5144
|
+
*/
|
|
5145
|
+
const safeUrl = (url, options) => {
|
|
5146
|
+
if (url === undefined || url === null) {
|
|
5147
|
+
return '';
|
|
5148
|
+
}
|
|
5149
|
+
const value = String(url);
|
|
5150
|
+
const normalizedUrl = normalizeUrl(value);
|
|
5151
|
+
const scheme = normalizedUrl.match(SCHEME_PATTERN)?.[1]?.toLowerCase();
|
|
5152
|
+
if (!scheme) {
|
|
5153
|
+
return value;
|
|
5154
|
+
}
|
|
5155
|
+
if (ALLOWED_SCHEMES.includes(scheme) ||
|
|
5156
|
+
options?.schemes?.some((allowed) => normalizeScheme(allowed) === scheme)) {
|
|
5157
|
+
return value;
|
|
5158
|
+
}
|
|
5159
|
+
if (scheme === 'data' && DATA_IMAGE_PATTERN.test(normalizedUrl)) {
|
|
5160
|
+
return value;
|
|
5161
|
+
}
|
|
5162
|
+
return BLOCKED_URL;
|
|
4803
5163
|
};
|
|
4804
5164
|
|
|
4805
5165
|
/**
|
|
@@ -5699,6 +6059,7 @@ class SearchcraftInputForm {
|
|
|
5699
6059
|
core;
|
|
5700
6060
|
unsubscribe;
|
|
5701
6061
|
cleanupCore;
|
|
6062
|
+
inputElement;
|
|
5702
6063
|
init() {
|
|
5703
6064
|
if (this.core) {
|
|
5704
6065
|
// Initialize inputValue from prop if provided
|
|
@@ -5771,8 +6132,19 @@ class SearchcraftInputForm {
|
|
|
5771
6132
|
};
|
|
5772
6133
|
handleFormSubmit = async (event) => {
|
|
5773
6134
|
event.preventDefault();
|
|
6135
|
+
this.dismissOnScreenKeyboard();
|
|
5774
6136
|
await this.performSearch();
|
|
5775
6137
|
};
|
|
6138
|
+
/**
|
|
6139
|
+
* Closes the on-screen keyboard after a search is submitted on touch devices,
|
|
6140
|
+
* so it no longer covers the results. Devices with a mouse keep focus in the
|
|
6141
|
+
* input, so the user can keep typing and use the arrow keys.
|
|
6142
|
+
*/
|
|
6143
|
+
dismissOnScreenKeyboard() {
|
|
6144
|
+
if (window.matchMedia?.('(hover: none) and (pointer: coarse)').matches) {
|
|
6145
|
+
this.inputElement?.blur();
|
|
6146
|
+
}
|
|
6147
|
+
}
|
|
5776
6148
|
render() {
|
|
5777
6149
|
const isShowingClearButton = this.inputValue.length > 0;
|
|
5778
6150
|
const inputGridClassNames = classNames('searchcraft-input-form-grid', {
|
|
@@ -5784,11 +6156,13 @@ class SearchcraftInputForm {
|
|
|
5784
6156
|
const inputGridStyles = {
|
|
5785
6157
|
gap: shouldHaveVerticalGap ? '4px 8px' : '0px 8px',
|
|
5786
6158
|
};
|
|
5787
|
-
return (hAsync("form", { key: '
|
|
6159
|
+
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', {
|
|
5788
6160
|
'searchcraft-placeholder-hide-on-focus': this.placeholderBehavior === 'hide-on-focus',
|
|
5789
|
-
}),
|
|
6161
|
+
}), enterkeyhint: 'search', ref: (el) => {
|
|
6162
|
+
this.inputElement = el;
|
|
6163
|
+
}, onFocus: () => this.inputFocus?.emit(), onBlur: () => this.inputBlur?.emit(), onInput: (event) => {
|
|
5790
6164
|
this.handleInput(event);
|
|
5791
|
-
}, placeholder: this.placeholderValue, type: 'text', value: this.inputValue }), hAsync("div", { key: '
|
|
6165
|
+
}, 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' }))))))));
|
|
5792
6166
|
}
|
|
5793
6167
|
static get watchers() { return {
|
|
5794
6168
|
"core": ["onCoreChange"],
|
|
@@ -6228,6 +6602,14 @@ class SearchcraftPopoverButton {
|
|
|
6228
6602
|
* The type of popover button to render.
|
|
6229
6603
|
*/
|
|
6230
6604
|
type;
|
|
6605
|
+
/**
|
|
6606
|
+
* The placeholder text shown in the `skeuomorphic` button, and the
|
|
6607
|
+
* accessible label of the `magnifying-glass` button. Set it to the same
|
|
6608
|
+
* value as the `placeholderValue` of `searchcraft-popover-form` so the
|
|
6609
|
+
* button matches the form it opens. When it is blank, the
|
|
6610
|
+
* `magnifying-glass` button is labeled "Search".
|
|
6611
|
+
*/
|
|
6612
|
+
placeholderValue = 'Search';
|
|
6231
6613
|
/**
|
|
6232
6614
|
* The id of the Searchcraft instance that this component should use.
|
|
6233
6615
|
*/
|
|
@@ -6303,7 +6685,7 @@ class SearchcraftPopoverButton {
|
|
|
6303
6685
|
}
|
|
6304
6686
|
}
|
|
6305
6687
|
renderSkeuomorphicSlot() {
|
|
6306
|
-
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,
|
|
6688
|
+
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)))));
|
|
6307
6689
|
}
|
|
6308
6690
|
renderSlot() {
|
|
6309
6691
|
switch (this.type) {
|
|
@@ -6316,8 +6698,10 @@ class SearchcraftPopoverButton {
|
|
|
6316
6698
|
}
|
|
6317
6699
|
}
|
|
6318
6700
|
render() {
|
|
6319
|
-
return (hAsync("button", { key: '
|
|
6320
|
-
? this.
|
|
6701
|
+
return (hAsync("button", { key: '3ff00f71e3057f907a447f87b3a82b6ae57796e7', "aria-label": this.type === 'magnifying-glass'
|
|
6702
|
+
? this.placeholderValue?.trim() || 'Search'
|
|
6703
|
+
: undefined, class: `searchcraft-popover-button ${this.type ? ` searchcraft-popover-button-${this.type}` : ''}`, innerHTML: typeof this.template !== 'undefined'
|
|
6704
|
+
? this.template({ isPopoverVisible: this.isPopoverVisible }, { html: html$1, safeUrl })
|
|
6321
6705
|
: undefined, onClick: this.handleOnClick.bind(this), type: 'button' }, typeof this.template !== 'undefined'
|
|
6322
6706
|
? undefined
|
|
6323
6707
|
: this.type
|
|
@@ -6330,6 +6714,7 @@ class SearchcraftPopoverButton {
|
|
|
6330
6714
|
"$members$": {
|
|
6331
6715
|
"template": [16],
|
|
6332
6716
|
"type": [1],
|
|
6717
|
+
"placeholderValue": [1, "placeholder-value"],
|
|
6333
6718
|
"searchcraftId": [1, "searchcraft-id"],
|
|
6334
6719
|
"hotkey": [32],
|
|
6335
6720
|
"hotkeyModifier": [32],
|
|
@@ -6343,7 +6728,7 @@ class SearchcraftPopoverButton {
|
|
|
6343
6728
|
}; }
|
|
6344
6729
|
}
|
|
6345
6730
|
|
|
6346
|
-
const version = "0.
|
|
6731
|
+
const version = "0.16.0";
|
|
6347
6732
|
|
|
6348
6733
|
/**
|
|
6349
6734
|
* Renders the footer for the searchcraft-popover-form.
|
|
@@ -6415,7 +6800,7 @@ class SearchcraftPopoverFooter {
|
|
|
6415
6800
|
const hasResults = typeof this.searchResultsCount === 'number' &&
|
|
6416
6801
|
this.searchResultsCount > 0;
|
|
6417
6802
|
const showViewAll = !!this.safeViewAllHref && hasResults;
|
|
6418
|
-
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"), "
|
|
6803
|
+
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")))))));
|
|
6419
6804
|
}
|
|
6420
6805
|
static get cmpMeta() { return {
|
|
6421
6806
|
"$flags$": 768,
|
|
@@ -6457,6 +6842,16 @@ class SearchcraftPopoverFooter {
|
|
|
6457
6842
|
* const popoverForm = document.querySelector('searchcraft-popover-form');
|
|
6458
6843
|
*
|
|
6459
6844
|
* popoverForm.popoverResultMappings = {};
|
|
6845
|
+
*
|
|
6846
|
+
* // Or render each result with a template instead of `popoverResultMappings`.
|
|
6847
|
+
* popoverForm.template = (item, index, { html, safeUrl }) => html`
|
|
6848
|
+
* <a href="${safeUrl(item.url)}">${item.title}</a>
|
|
6849
|
+
* `;
|
|
6850
|
+
*
|
|
6851
|
+
* // Change the message shown when a search returns no results.
|
|
6852
|
+
* popoverForm.noResultsTemplate = ({ searchTerm }, { html }) => html`
|
|
6853
|
+
* <p>Nothing matched "${searchTerm}".</p>
|
|
6854
|
+
* `;
|
|
6460
6855
|
* ```
|
|
6461
6856
|
*
|
|
6462
6857
|
* @react-example
|
|
@@ -6485,6 +6880,19 @@ class SearchcraftPopoverForm {
|
|
|
6485
6880
|
* Formats the content rendered for each result.
|
|
6486
6881
|
*/
|
|
6487
6882
|
popoverResultMappings;
|
|
6883
|
+
/**
|
|
6884
|
+
* A callback function responsible for rendering a result. When provided, it is used instead of `popoverResultMappings`.
|
|
6885
|
+
* Pass URLs from the result through the `safeUrl` helper before placing them in an `href` or `src`.
|
|
6886
|
+
* Never place result values in event handler attributes such as `onclick`, or in `style`.
|
|
6887
|
+
*/
|
|
6888
|
+
template;
|
|
6889
|
+
/**
|
|
6890
|
+
* A callback function responsible for rendering the message shown when a search returns no results.
|
|
6891
|
+
* When it is not provided, the popover shows `No results found for "<search term>".`
|
|
6892
|
+
* The returned markup is sanitized with DOMPurify, which removes scripts, event handler
|
|
6893
|
+
* attributes such as `onclick`, and links with schemes it does not allow, such as an app's own scheme.
|
|
6894
|
+
*/
|
|
6895
|
+
noResultsTemplate;
|
|
6488
6896
|
/**
|
|
6489
6897
|
* The hotkey that activates the popover.
|
|
6490
6898
|
*/
|
|
@@ -6532,6 +6940,11 @@ class SearchcraftPopoverForm {
|
|
|
6532
6940
|
searchClientResponseItems = [];
|
|
6533
6941
|
adClientResponseItems = [];
|
|
6534
6942
|
searchTerm;
|
|
6943
|
+
isSearchInProgress = false;
|
|
6944
|
+
/**
|
|
6945
|
+
* The search term of the most recent search response.
|
|
6946
|
+
*/
|
|
6947
|
+
completedSearchTerm;
|
|
6535
6948
|
isFocused = false;
|
|
6536
6949
|
breakpointSm = 576;
|
|
6537
6950
|
breakpointMd = 768;
|
|
@@ -6563,6 +6976,12 @@ class SearchcraftPopoverForm {
|
|
|
6563
6976
|
this.searchClientResponseItems = [...state.searchClientResponseItems];
|
|
6564
6977
|
this.adClientResponseItems = [...state.adClientResponseItems];
|
|
6565
6978
|
this.searchTerm = state.searchTerm;
|
|
6979
|
+
this.isSearchInProgress = state.isSearchInProgress;
|
|
6980
|
+
const requestProperties = state.searchClientRequestProperties;
|
|
6981
|
+
this.completedSearchTerm =
|
|
6982
|
+
requestProperties && typeof requestProperties === 'object'
|
|
6983
|
+
? requestProperties.searchTerm
|
|
6984
|
+
: undefined;
|
|
6566
6985
|
this.searchResultsPage = state.searchResultsPage;
|
|
6567
6986
|
this.searchResultsPerPage = state.searchResultsPerPage;
|
|
6568
6987
|
});
|
|
@@ -6644,6 +7063,8 @@ class SearchcraftPopoverForm {
|
|
|
6644
7063
|
if (!this.modalElement) {
|
|
6645
7064
|
this.modalElement = document.createElement('searchcraft-popover-form');
|
|
6646
7065
|
this.modalElement.popoverResultMappings = this.popoverResultMappings;
|
|
7066
|
+
this.modalElement.template = this.template;
|
|
7067
|
+
this.modalElement.noResultsTemplate = this.noResultsTemplate;
|
|
6647
7068
|
this.modalElement.setAttribute('type', 'fullscreen');
|
|
6648
7069
|
this.modalElement.setAttribute('searchcraft-id', this.searchcraftId);
|
|
6649
7070
|
if (this.placeholderValue) {
|
|
@@ -6662,6 +7083,17 @@ class SearchcraftPopoverForm {
|
|
|
6662
7083
|
}
|
|
6663
7084
|
}
|
|
6664
7085
|
}
|
|
7086
|
+
/**
|
|
7087
|
+
* Passes result rendering changes on to the fullscreen form created for small viewports,
|
|
7088
|
+
* which only receives these props when it is first created.
|
|
7089
|
+
*/
|
|
7090
|
+
syncModalElementResultRendering() {
|
|
7091
|
+
if (this.modalElement) {
|
|
7092
|
+
this.modalElement.popoverResultMappings = this.popoverResultMappings;
|
|
7093
|
+
this.modalElement.template = this.template;
|
|
7094
|
+
this.modalElement.noResultsTemplate = this.noResultsTemplate;
|
|
7095
|
+
}
|
|
7096
|
+
}
|
|
6665
7097
|
handleModalBackdropClick(_event) {
|
|
6666
7098
|
this.core?.store.getState().setPopoverVisibility(false);
|
|
6667
7099
|
}
|
|
@@ -6695,8 +7127,17 @@ class SearchcraftPopoverForm {
|
|
|
6695
7127
|
* @param direction
|
|
6696
7128
|
*/
|
|
6697
7129
|
focusOnNextListItem(direction) {
|
|
6698
|
-
|
|
6699
|
-
const
|
|
7130
|
+
// Results rendered by a `template` are reached through the first link in the template.
|
|
7131
|
+
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')
|
|
7132
|
+
? el.querySelector('a')
|
|
7133
|
+
: el);
|
|
7134
|
+
const listItems = Array.from(new Set(links)).filter((el) => !!el && !el.hasAttribute('disabled') && el.offsetParent !== null);
|
|
7135
|
+
// Focus may be on another link inside a templated result, so match on the result too.
|
|
7136
|
+
const activeElement = document.activeElement;
|
|
7137
|
+
const currentIndex = listItems.findIndex((el) => el === activeElement ||
|
|
7138
|
+
!!el
|
|
7139
|
+
.closest('.searchcraft-popover-list-item-template')
|
|
7140
|
+
?.contains(activeElement));
|
|
6700
7141
|
if (direction === 'ArrowDown') {
|
|
6701
7142
|
listItems[(currentIndex + 1) % listItems.length]?.focus();
|
|
6702
7143
|
}
|
|
@@ -6721,6 +7162,28 @@ class SearchcraftPopoverForm {
|
|
|
6721
7162
|
this.searchTerm?.trim()?.length > 0 &&
|
|
6722
7163
|
this.searchClientResponseItems.length > 0);
|
|
6723
7164
|
}
|
|
7165
|
+
/**
|
|
7166
|
+
* Whether the search for the current search term finished without results.
|
|
7167
|
+
*/
|
|
7168
|
+
get hasNoResultsToShow() {
|
|
7169
|
+
const searchTerm = this.searchTerm?.trim();
|
|
7170
|
+
return (!!searchTerm &&
|
|
7171
|
+
!this.isSearchInProgress &&
|
|
7172
|
+
this.searchClientResponseItems.length === 0 &&
|
|
7173
|
+
this.completedSearchTerm?.trim() === searchTerm);
|
|
7174
|
+
}
|
|
7175
|
+
renderNoResults() {
|
|
7176
|
+
const searchTerm = this.searchTerm?.trim() || '';
|
|
7177
|
+
if (this.noResultsTemplate) {
|
|
7178
|
+
try {
|
|
7179
|
+
return (hAsync("div", { class: 'searchcraft-popover-form-no-results', innerHTML: purify.sanitize(this.noResultsTemplate({ searchTerm }, { html: html$1, safeUrl })) }));
|
|
7180
|
+
}
|
|
7181
|
+
catch (error) {
|
|
7182
|
+
console.error('Invalid popover no results template:', error);
|
|
7183
|
+
}
|
|
7184
|
+
}
|
|
7185
|
+
return (hAsync("div", { class: 'searchcraft-popover-form-no-results' }, hAsync("p", { class: 'searchcraft-popover-form-no-results-message' }, "No results found for \"", searchTerm, "\".")));
|
|
7186
|
+
}
|
|
6724
7187
|
get viewAllResultsHref() {
|
|
6725
7188
|
const baseUrl = this.viewAllResultsBaseUrl;
|
|
6726
7189
|
if (!baseUrl) {
|
|
@@ -6746,22 +7209,24 @@ class SearchcraftPopoverForm {
|
|
|
6746
7209
|
}
|
|
6747
7210
|
renderInlinePopover() {
|
|
6748
7211
|
const isListViewVisible = this.hasResultsToShow && this.isFocused;
|
|
7212
|
+
const isNoResultsVisible = this.hasNoResultsToShow && this.isFocused;
|
|
7213
|
+
const isDropdownVisible = isListViewVisible || isNoResultsVisible;
|
|
6749
7214
|
return (hAsync("div", { class: classNames('searchcraft-popover-form searchcraft-popover-form-inline', {
|
|
6750
|
-
'searchcraft-popover-form-active':
|
|
6751
|
-
}) }, 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 })),
|
|
7215
|
+
'searchcraft-popover-form-active': isDropdownVisible,
|
|
7216
|
+
}) }, 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 })))));
|
|
6752
7217
|
}
|
|
6753
7218
|
renderModalPopover() {
|
|
6754
7219
|
if (this.isPopoverVisibleInState) {
|
|
6755
7220
|
return (hAsync("div", { class: classNames('searchcraft-popover-form searchcraft-popover-form-modal', {
|
|
6756
|
-
'searchcraft-popover-form-active': this.hasResultsToShow,
|
|
6757
|
-
}) }, 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 }))));
|
|
7221
|
+
'searchcraft-popover-form-active': this.hasResultsToShow || this.hasNoResultsToShow,
|
|
7222
|
+
}) }, 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 }))));
|
|
6758
7223
|
}
|
|
6759
7224
|
}
|
|
6760
7225
|
renderFullscreenPopover() {
|
|
6761
7226
|
if (this.isPopoverVisibleInState) {
|
|
6762
7227
|
return (hAsync("div", { class: classNames('searchcraft-popover-form searchcraft-popover-form-fullscreen', {
|
|
6763
|
-
'searchcraft-popover-form-active': this.hasResultsToShow,
|
|
6764
|
-
}) }, 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 })));
|
|
7228
|
+
'searchcraft-popover-form-active': this.hasResultsToShow || this.hasNoResultsToShow,
|
|
7229
|
+
}) }, 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 })));
|
|
6765
7230
|
}
|
|
6766
7231
|
}
|
|
6767
7232
|
render() {
|
|
@@ -6774,12 +7239,19 @@ class SearchcraftPopoverForm {
|
|
|
6774
7239
|
return this.renderFullscreenPopover();
|
|
6775
7240
|
}
|
|
6776
7241
|
}
|
|
7242
|
+
static get watchers() { return {
|
|
7243
|
+
"popoverResultMappings": ["syncModalElementResultRendering"],
|
|
7244
|
+
"template": ["syncModalElementResultRendering"],
|
|
7245
|
+
"noResultsTemplate": ["syncModalElementResultRendering"]
|
|
7246
|
+
}; }
|
|
6777
7247
|
static get cmpMeta() { return {
|
|
6778
7248
|
"$flags$": 768,
|
|
6779
7249
|
"$tagName$": "searchcraft-popover-form",
|
|
6780
7250
|
"$members$": {
|
|
6781
7251
|
"type": [1],
|
|
6782
7252
|
"popoverResultMappings": [16],
|
|
7253
|
+
"template": [16],
|
|
7254
|
+
"noResultsTemplate": [16],
|
|
6783
7255
|
"hotkey": [1],
|
|
6784
7256
|
"hotkeyModifier": [1, "hotkey-modifier"],
|
|
6785
7257
|
"searchcraftId": [1, "searchcraft-id"],
|
|
@@ -6793,6 +7265,8 @@ class SearchcraftPopoverForm {
|
|
|
6793
7265
|
"searchClientResponseItems": [32],
|
|
6794
7266
|
"adClientResponseItems": [32],
|
|
6795
7267
|
"searchTerm": [32],
|
|
7268
|
+
"isSearchInProgress": [32],
|
|
7269
|
+
"completedSearchTerm": [32],
|
|
6796
7270
|
"isFocused": [32],
|
|
6797
7271
|
"breakpointSm": [32],
|
|
6798
7272
|
"breakpointMd": [32],
|
|
@@ -6818,6 +7292,14 @@ class SearchcraftPopoverListItem {
|
|
|
6818
7292
|
}
|
|
6819
7293
|
item;
|
|
6820
7294
|
popoverResultMappings;
|
|
7295
|
+
/**
|
|
7296
|
+
* A callback function responsible for rendering the result. When provided, it is used instead of `popoverResultMappings`, which are still used if the template throws.
|
|
7297
|
+
*/
|
|
7298
|
+
template;
|
|
7299
|
+
/**
|
|
7300
|
+
* The index of the result in the list view. Passed to the `template` callback.
|
|
7301
|
+
*/
|
|
7302
|
+
index = 0;
|
|
6821
7303
|
/** The document position relative to the search results (For Measure) */
|
|
6822
7304
|
documentPosition = 0;
|
|
6823
7305
|
/**
|
|
@@ -6829,6 +7311,8 @@ class SearchcraftPopoverListItem {
|
|
|
6829
7311
|
href;
|
|
6830
7312
|
imageSource;
|
|
6831
7313
|
imageAlt;
|
|
7314
|
+
templateHtml;
|
|
7315
|
+
get hostElement() { return getElement(this); }
|
|
6832
7316
|
core;
|
|
6833
7317
|
cleanupCore;
|
|
6834
7318
|
mapValuesFromDocument(document) {
|
|
@@ -6838,19 +7322,40 @@ class SearchcraftPopoverListItem {
|
|
|
6838
7322
|
this.imageSource = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.imageSource);
|
|
6839
7323
|
this.imageAlt = getDocumentValueFromSearchResultMapping(document, this.popoverResultMappings?.imageAlt);
|
|
6840
7324
|
}
|
|
7325
|
+
/**
|
|
7326
|
+
* Maps the document values and renders the template, if there is one. The mapped values are
|
|
7327
|
+
* always kept so the result can fall back to them if the template throws or is removed.
|
|
7328
|
+
*/
|
|
7329
|
+
updateRenderedValues() {
|
|
7330
|
+
this.templateHtml = undefined;
|
|
7331
|
+
if (!this.item) {
|
|
7332
|
+
return;
|
|
7333
|
+
}
|
|
7334
|
+
this.mapValuesFromDocument(this.item.document);
|
|
7335
|
+
if (this.template) {
|
|
7336
|
+
try {
|
|
7337
|
+
this.templateHtml = this.template(this.item.document, this.index, {
|
|
7338
|
+
html: html$1,
|
|
7339
|
+
safeUrl,
|
|
7340
|
+
source_index: this.item.source_index,
|
|
7341
|
+
});
|
|
7342
|
+
}
|
|
7343
|
+
catch (error) {
|
|
7344
|
+
console.error('Invalid popover result template:', error);
|
|
7345
|
+
}
|
|
7346
|
+
}
|
|
7347
|
+
}
|
|
6841
7348
|
onCoreAvailable(core) {
|
|
6842
7349
|
this.core = core;
|
|
6843
7350
|
}
|
|
6844
7351
|
connectedCallback() {
|
|
6845
|
-
|
|
6846
|
-
this.mapValuesFromDocument(this.item.document);
|
|
6847
|
-
}
|
|
7352
|
+
this.updateRenderedValues();
|
|
6848
7353
|
this.cleanupCore = registry.useCoreInstance(this.searchcraftId, this.onCoreAvailable.bind(this));
|
|
6849
7354
|
}
|
|
6850
7355
|
disconnectedCallback() {
|
|
6851
7356
|
this.cleanupCore?.();
|
|
6852
7357
|
}
|
|
6853
|
-
|
|
7358
|
+
sendDocumentClickedEvent() {
|
|
6854
7359
|
if (this.core) {
|
|
6855
7360
|
const document_position = this.documentPosition;
|
|
6856
7361
|
const search_term = this.core.store.getState().searchTerm;
|
|
@@ -6861,23 +7366,48 @@ class SearchcraftPopoverListItem {
|
|
|
6861
7366
|
search_term,
|
|
6862
7367
|
});
|
|
6863
7368
|
}
|
|
7369
|
+
}
|
|
7370
|
+
handleLinkClick = () => {
|
|
7371
|
+
this.sendDocumentClickedEvent();
|
|
7372
|
+
};
|
|
7373
|
+
/**
|
|
7374
|
+
* Sends the click event when a link inside the rendered template is clicked.
|
|
7375
|
+
*/
|
|
7376
|
+
handleTemplateClick = (event) => {
|
|
7377
|
+
const link = event.target?.closest('a');
|
|
7378
|
+
if (link && this.hostElement?.contains(link)) {
|
|
7379
|
+
this.sendDocumentClickedEvent();
|
|
7380
|
+
}
|
|
6864
7381
|
};
|
|
7382
|
+
handleKeyDown = () => { };
|
|
6865
7383
|
render() {
|
|
6866
|
-
|
|
7384
|
+
if (this.template && typeof this.templateHtml === 'string') {
|
|
7385
|
+
return (hAsync("div", { class: 'searchcraft-popover-list-item searchcraft-popover-list-item-template', innerHTML: this.templateHtml, onClick: this.handleTemplateClick, onKeyDown: this.handleKeyDown }));
|
|
7386
|
+
}
|
|
7387
|
+
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))))));
|
|
6867
7388
|
}
|
|
7389
|
+
static get watchers() { return {
|
|
7390
|
+
"item": ["updateRenderedValues"],
|
|
7391
|
+
"popoverResultMappings": ["updateRenderedValues"],
|
|
7392
|
+
"template": ["updateRenderedValues"],
|
|
7393
|
+
"index": ["updateRenderedValues"]
|
|
7394
|
+
}; }
|
|
6868
7395
|
static get cmpMeta() { return {
|
|
6869
7396
|
"$flags$": 768,
|
|
6870
7397
|
"$tagName$": "searchcraft-popover-list-item",
|
|
6871
7398
|
"$members$": {
|
|
6872
7399
|
"item": [16],
|
|
6873
7400
|
"popoverResultMappings": [16],
|
|
7401
|
+
"template": [16],
|
|
7402
|
+
"index": [2],
|
|
6874
7403
|
"documentPosition": [2, "document-position"],
|
|
6875
7404
|
"searchcraftId": [1, "searchcraft-id"],
|
|
6876
7405
|
"title": [32],
|
|
6877
7406
|
"subtitle": [32],
|
|
6878
7407
|
"href": [32],
|
|
6879
7408
|
"imageSource": [32],
|
|
6880
|
-
"imageAlt": [32]
|
|
7409
|
+
"imageAlt": [32],
|
|
7410
|
+
"templateHtml": [32]
|
|
6881
7411
|
},
|
|
6882
7412
|
"$listeners$": undefined,
|
|
6883
7413
|
"$lazyBundleId$": "-",
|
|
@@ -7042,6 +7572,7 @@ class SearchcraftPopoverListItemAd {
|
|
|
7042
7572
|
if (this.core?.config?.admAdConfig?.template) {
|
|
7043
7573
|
templateHtml = this.core?.config?.admAdConfig.template(item.admAd, {
|
|
7044
7574
|
html: html$1,
|
|
7575
|
+
safeUrl,
|
|
7045
7576
|
});
|
|
7046
7577
|
}
|
|
7047
7578
|
return (hAsync("div", { class: 'searchcraft-ad searchcraft-adm-ad', "data-searchcraft-ad-container-id": this.adContainerId, id: `searchcraft-adm-ad-${this.adContainerId}`, innerHTML: templateHtml }));
|
|
@@ -7054,7 +7585,7 @@ class SearchcraftPopoverListItemAd {
|
|
|
7054
7585
|
templateHtml = templateRenderFunction({
|
|
7055
7586
|
searchTerm: this.searchTerm || '',
|
|
7056
7587
|
adContainerId: this.adContainerId,
|
|
7057
|
-
}, { html: html$1 });
|
|
7588
|
+
}, { html: html$1, safeUrl });
|
|
7058
7589
|
}
|
|
7059
7590
|
return (hAsync("div", { class: 'searchcraft-ad searchcraft-custom-ad', id: containerId, "data-searchcraft-ad-container-id": this.adContainerId, innerHTML: templateHtml }));
|
|
7060
7591
|
}
|
|
@@ -7121,6 +7652,10 @@ class SearchcraftPopoverListView {
|
|
|
7121
7652
|
* list-view-item elements.
|
|
7122
7653
|
*/
|
|
7123
7654
|
popoverResultMappings;
|
|
7655
|
+
/**
|
|
7656
|
+
* A callback function responsible for rendering a result. Passed to `searchcraft-popover-list-item`.
|
|
7657
|
+
*/
|
|
7658
|
+
template;
|
|
7124
7659
|
/**
|
|
7125
7660
|
* The items to render in the list view.
|
|
7126
7661
|
*/
|
|
@@ -7140,7 +7675,7 @@ class SearchcraftPopoverListView {
|
|
|
7140
7675
|
this.cleanupCore?.();
|
|
7141
7676
|
}
|
|
7142
7677
|
renderWithADMAds() {
|
|
7143
|
-
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 })))));
|
|
7678
|
+
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 })))));
|
|
7144
7679
|
}
|
|
7145
7680
|
renderWithCustomAds() {
|
|
7146
7681
|
const itemsToRender = [];
|
|
@@ -7163,7 +7698,7 @@ class SearchcraftPopoverListView {
|
|
|
7163
7698
|
itemsToRender.push(hAsync("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adSource: 'Custom', key: `${item.id}-ad-${n}`, renderPosition: 'interstitial' }));
|
|
7164
7699
|
}
|
|
7165
7700
|
}
|
|
7166
|
-
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 }));
|
|
7701
|
+
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 }));
|
|
7167
7702
|
});
|
|
7168
7703
|
// Renders ads at end
|
|
7169
7704
|
for (let n = 0; n < adEndQuantity; n++) {
|
|
@@ -7193,7 +7728,7 @@ class SearchcraftPopoverListView {
|
|
|
7193
7728
|
itemsToRender.push(hAsync("searchcraft-ad", { "searchcraft-id": this.searchcraftId, adSource: 'Nativo', key: `${item.id}-ad-${n}`, renderPosition: 'interstitial' }));
|
|
7194
7729
|
}
|
|
7195
7730
|
}
|
|
7196
|
-
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 }));
|
|
7731
|
+
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 }));
|
|
7197
7732
|
});
|
|
7198
7733
|
// Renders ads at end
|
|
7199
7734
|
for (let n = 0; n < adEndQuantity; n++) {
|
|
@@ -7202,7 +7737,7 @@ class SearchcraftPopoverListView {
|
|
|
7202
7737
|
return hAsync("div", { class: 'searchcraft-popover-list-view' }, itemsToRender);
|
|
7203
7738
|
}
|
|
7204
7739
|
renderWithNoAds() {
|
|
7205
|
-
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 })))));
|
|
7740
|
+
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 })))));
|
|
7206
7741
|
}
|
|
7207
7742
|
render() {
|
|
7208
7743
|
if (this.config?.customAdConfig) {
|
|
@@ -7222,6 +7757,7 @@ class SearchcraftPopoverListView {
|
|
|
7222
7757
|
"$members$": {
|
|
7223
7758
|
"searchcraftId": [1, "searchcraft-id"],
|
|
7224
7759
|
"popoverResultMappings": [16],
|
|
7760
|
+
"template": [16],
|
|
7225
7761
|
"searchClientResponseItems": [16],
|
|
7226
7762
|
"adClientResponseItems": [16],
|
|
7227
7763
|
"searchResultsPage": [2, "search-results-page"],
|
|
@@ -7346,7 +7882,7 @@ class SearchcraftResultsInfo {
|
|
|
7346
7882
|
range: [Number(this.range[0]), Number(this.range[1])],
|
|
7347
7883
|
count: this.count,
|
|
7348
7884
|
responseTime: this.responseTime,
|
|
7349
|
-
}, { html: html$1 })
|
|
7885
|
+
}, { html: html$1, safeUrl })
|
|
7350
7886
|
: `${formatNumberWithCommas(this.count)} results found in ${this.responseTime}ms`));
|
|
7351
7887
|
}
|
|
7352
7888
|
static get cmpMeta() { return {
|
|
@@ -9576,10 +10112,11 @@ class SearchcraftResultsSummary {
|
|
|
9576
10112
|
unsubscribe;
|
|
9577
10113
|
cleanupCore;
|
|
9578
10114
|
/**
|
|
9579
|
-
|
|
9580
|
-
|
|
10115
|
+
* Callback invoked when the Searchcraft core instance is available.
|
|
10116
|
+
*/
|
|
9581
10117
|
onCoreAvailable(core) {
|
|
9582
10118
|
core.store.setState({ hasSummaryBox: true });
|
|
10119
|
+
this.handleStateChange(core.store.getState());
|
|
9583
10120
|
this.unsubscribe = core.store.subscribe(this.handleStateChange.bind(this));
|
|
9584
10121
|
}
|
|
9585
10122
|
connectedCallback() {
|
|
@@ -9614,10 +10151,10 @@ class SearchcraftResultsSummary {
|
|
|
9614
10151
|
if (this.isSummaryNotEnabled) {
|
|
9615
10152
|
return (hAsync("div", { class: 'searchcraft-results-summary-content' }, this.summaryErrorMessage || 'AI summaries are not enabled'));
|
|
9616
10153
|
}
|
|
9617
|
-
return (hAsync("div", { class: 'searchcraft-results-summary-content', innerHTML: this.summary, "aria-live":
|
|
10154
|
+
return (hAsync("div", { class: 'searchcraft-results-summary-content', innerHTML: this.summary, "aria-live": 'polite' }));
|
|
9618
10155
|
}
|
|
9619
10156
|
render() {
|
|
9620
|
-
return (hAsync("div", { key: '
|
|
10157
|
+
return (hAsync("div", { key: '556f53290003e7e6d8bc57c150ff1bf3581ce365', class: 'searchcraft-results-summary' }, this.renderContent()));
|
|
9621
10158
|
}
|
|
9622
10159
|
static get cmpMeta() { return {
|
|
9623
10160
|
"$flags$": 768,
|
|
@@ -9674,6 +10211,7 @@ class SearchcraftSearchResult {
|
|
|
9674
10211
|
try {
|
|
9675
10212
|
this.templateHtml = this.template?.(this.item.document, this.index, {
|
|
9676
10213
|
html: html$1,
|
|
10214
|
+
safeUrl,
|
|
9677
10215
|
source_index: this.item.source_index,
|
|
9678
10216
|
});
|
|
9679
10217
|
}
|
|
@@ -9750,10 +10288,7 @@ class SearchcraftSearchResult {
|
|
|
9750
10288
|
* @js-example
|
|
9751
10289
|
* ```html
|
|
9752
10290
|
* <!-- index.html -->
|
|
9753
|
-
* <searchcraft-search-results
|
|
9754
|
-
* ad-interval="4"
|
|
9755
|
-
* place-ad-at-start="true"
|
|
9756
|
-
* />
|
|
10291
|
+
* <searchcraft-search-results></searchcraft-search-results>
|
|
9757
10292
|
* ```
|
|
9758
10293
|
*
|
|
9759
10294
|
* ```js
|
|
@@ -9768,8 +10303,6 @@ class SearchcraftSearchResult {
|
|
|
9768
10303
|
* @react-example
|
|
9769
10304
|
* ```jsx
|
|
9770
10305
|
* <SearchcraftSearchResults
|
|
9771
|
-
* adInterval={4}
|
|
9772
|
-
* placeAdAtState={true}
|
|
9773
10306
|
* template={(item, index, { html }) => html`
|
|
9774
10307
|
* <h2>${item.title}</h2>
|
|
9775
10308
|
* `}
|
|
@@ -9779,8 +10312,6 @@ class SearchcraftSearchResult {
|
|
|
9779
10312
|
* @vue-example
|
|
9780
10313
|
* ```jsx
|
|
9781
10314
|
* <SearchcraftSearchResults
|
|
9782
|
-
* adInterval={4}
|
|
9783
|
-
* placeAdAtState={true}
|
|
9784
10315
|
* :template={(item, index, { html }) => html`
|
|
9785
10316
|
* <h2>${item.title}</h2>
|
|
9786
10317
|
* `}
|
|
@@ -9801,6 +10332,8 @@ class SearchcraftSearchResults {
|
|
|
9801
10332
|
initialQuery;
|
|
9802
10333
|
/**
|
|
9803
10334
|
* A callback function responsible for rendering a result. Passed to `searchcraft-search-result`.
|
|
10335
|
+
* Pass URLs from the result through the `safeUrl` helper before placing them in an `href` or `src`.
|
|
10336
|
+
* Never place result values in event handler attributes such as `onclick`, or in `style`.
|
|
9804
10337
|
*/
|
|
9805
10338
|
template;
|
|
9806
10339
|
adClientResponseItems = [];
|
|
@@ -9810,6 +10343,11 @@ class SearchcraftSearchResults {
|
|
|
9810
10343
|
searchResultsPage;
|
|
9811
10344
|
searchResultsPerPage;
|
|
9812
10345
|
searchTerm = '';
|
|
10346
|
+
/**
|
|
10347
|
+
* The search term of the most recent search request, used to tell a
|
|
10348
|
+
* completed search apart from a term that has not been searched yet.
|
|
10349
|
+
*/
|
|
10350
|
+
completedSearchTerm;
|
|
9813
10351
|
unsubscribe;
|
|
9814
10352
|
cleanupCore;
|
|
9815
10353
|
onCoreAvailable(core) {
|
|
@@ -9835,12 +10373,29 @@ class SearchcraftSearchResults {
|
|
|
9835
10373
|
this.searchResultsPage = state.searchResultsPage;
|
|
9836
10374
|
this.searchResultsPerPage = state.searchResultsPerPage;
|
|
9837
10375
|
this.searchTerm = state.searchTerm;
|
|
10376
|
+
const requestProperties = state.searchClientRequestProperties;
|
|
10377
|
+
this.completedSearchTerm =
|
|
10378
|
+
requestProperties && typeof requestProperties === 'object'
|
|
10379
|
+
? requestProperties.searchTerm
|
|
10380
|
+
: undefined;
|
|
10381
|
+
}
|
|
10382
|
+
/**
|
|
10383
|
+
* Whether the search for the current search term has completed with no
|
|
10384
|
+
* results. False while the term is empty, while a search is in progress, and
|
|
10385
|
+
* after the term changes until its search completes.
|
|
10386
|
+
*/
|
|
10387
|
+
get hasNoResultsToShow() {
|
|
10388
|
+
const searchTerm = this.searchTerm.trim();
|
|
10389
|
+
return (!!searchTerm &&
|
|
10390
|
+
!this.isSearchInProgress &&
|
|
10391
|
+
(this.searchClientResponseItems || []).length === 0 &&
|
|
10392
|
+
this.completedSearchTerm?.trim() === searchTerm);
|
|
9838
10393
|
}
|
|
9839
10394
|
renderEmptyState() {
|
|
9840
10395
|
return (hAsync("div", { class: 'searchcraft-search-results-empty-state' }, hAsync("slot", { name: 'empty-search' })));
|
|
9841
10396
|
}
|
|
9842
10397
|
renderNoResultsFoundState() {
|
|
9843
|
-
return (hAsync("div", { class: 'searchcraft-search-results' }, hAsync("
|
|
10398
|
+
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(), "\".")));
|
|
9844
10399
|
}
|
|
9845
10400
|
renderWithADMAds() {
|
|
9846
10401
|
const items = this.searchClientResponseItems || [];
|
|
@@ -9911,14 +10466,12 @@ class SearchcraftSearchResults {
|
|
|
9911
10466
|
}
|
|
9912
10467
|
render() {
|
|
9913
10468
|
const searchClientResponseItems = this.searchClientResponseItems || [];
|
|
10469
|
+
if (this.hasNoResultsToShow) {
|
|
10470
|
+
return this.renderNoResultsFoundState();
|
|
10471
|
+
}
|
|
9914
10472
|
if (searchClientResponseItems.length === 0 && !this.isSearchInProgress) {
|
|
9915
10473
|
return this.renderEmptyState();
|
|
9916
10474
|
}
|
|
9917
|
-
if (this.searchTerm.length > 0 &&
|
|
9918
|
-
searchClientResponseItems.length === 0 &&
|
|
9919
|
-
!this.isSearchInProgress) {
|
|
9920
|
-
return this.renderNoResultsFoundState();
|
|
9921
|
-
}
|
|
9922
10475
|
if (this.config?.customAdConfig) {
|
|
9923
10476
|
return this.renderWithCustomAds();
|
|
9924
10477
|
}
|
|
@@ -9943,7 +10496,8 @@ class SearchcraftSearchResults {
|
|
|
9943
10496
|
"searchClientResponseItems": [32],
|
|
9944
10497
|
"searchResultsPage": [32],
|
|
9945
10498
|
"searchResultsPerPage": [32],
|
|
9946
|
-
"searchTerm": [32]
|
|
10499
|
+
"searchTerm": [32],
|
|
10500
|
+
"completedSearchTerm": [32]
|
|
9947
10501
|
},
|
|
9948
10502
|
"$listeners$": undefined,
|
|
9949
10503
|
"$lazyBundleId$": "-",
|
|
@@ -10321,10 +10875,10 @@ class SearchcraftSlider {
|
|
|
10321
10875
|
100;
|
|
10322
10876
|
const startLabel = this.getLabel(this.startValue);
|
|
10323
10877
|
const endLabel = this.getLabel(this.endValue);
|
|
10324
|
-
return (hAsync("div", { key: '
|
|
10878
|
+
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: {
|
|
10325
10879
|
left: `${startPercent}%`,
|
|
10326
10880
|
width: `${endPercent - startPercent}%`,
|
|
10327
|
-
} }), hAsync("input", { key: '
|
|
10881
|
+
} }), 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))));
|
|
10328
10882
|
}
|
|
10329
10883
|
static get cmpMeta() { return {
|
|
10330
10884
|
"$flags$": 768,
|
|
@@ -10436,7 +10990,7 @@ class SearchcraftSummaryBox {
|
|
|
10436
10990
|
return (hAsync("div", { class: 'searchcraft-summary-box-content', innerHTML: this.summary }));
|
|
10437
10991
|
}
|
|
10438
10992
|
render() {
|
|
10439
|
-
return hAsync("div", { key: '
|
|
10993
|
+
return hAsync("div", { key: 'b9d137d3eca2e5449474227f2cf3be81eec3ad77', class: 'searchcraft-summary-box' }, this.renderContent());
|
|
10440
10994
|
}
|
|
10441
10995
|
static get cmpMeta() { return {
|
|
10442
10996
|
"$flags$": 768,
|
|
@@ -10454,7 +11008,7 @@ class SearchcraftSummaryBox {
|
|
|
10454
11008
|
}; }
|
|
10455
11009
|
}
|
|
10456
11010
|
|
|
10457
|
-
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 */
|
|
11011
|
+
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 */
|
|
10458
11012
|
`;
|
|
10459
11013
|
|
|
10460
11014
|
/**
|
|
@@ -10490,7 +11044,7 @@ class SearchcraftTheme {
|
|
|
10490
11044
|
registerInstance(this, hostRef);
|
|
10491
11045
|
}
|
|
10492
11046
|
render() {
|
|
10493
|
-
return hAsync("style", { key: '
|
|
11047
|
+
return hAsync("style", { key: '42e5fdf41c2c6a9146fb44b2d1aea2e5dfbb92dc' }, styles);
|
|
10494
11048
|
}
|
|
10495
11049
|
static get cmpMeta() { return {
|
|
10496
11050
|
"$flags$": 256,
|
|
@@ -10554,9 +11108,9 @@ class SearchcraftToggleButton {
|
|
|
10554
11108
|
this.cleanupCore?.();
|
|
10555
11109
|
}
|
|
10556
11110
|
render() {
|
|
10557
|
-
return (hAsync("div", { key: '
|
|
11111
|
+
return (hAsync("div", { key: 'db31c8615adbfaaf4084339c3f8068dd8801a6fd', class: classNames('searchcraft-toggle-button', {
|
|
10558
11112
|
'searchcraft-toggle-button-active': this.isActive,
|
|
10559
|
-
}) }, hAsync("div", { key: '
|
|
11113
|
+
}) }, 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' }))));
|
|
10560
11114
|
}
|
|
10561
11115
|
static get cmpMeta() { return {
|
|
10562
11116
|
"$flags$": 768,
|