@configura/web-ui 1.4.0-alpha.0 → 1.4.0-alpha.1

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.
Files changed (78) hide show
  1. package/.postcssrc.json +8 -8
  2. package/LICENSE +201 -201
  3. package/README.md +1 -1
  4. package/dist/components/CanvasWrapper.d.ts +9 -9
  5. package/dist/components/CanvasWrapper.js +8 -8
  6. package/dist/components/ConfigurationActionsButtonRow.d.ts +11 -11
  7. package/dist/components/ConfigurationActionsButtonRow.js +13 -13
  8. package/dist/components/Configurator.d.ts +12 -12
  9. package/dist/components/Configurator.js +15 -15
  10. package/dist/components/ConfiguratorWrapper.d.ts +8 -8
  11. package/dist/components/ConfiguratorWrapper.js +5 -5
  12. package/dist/components/CurrencyPrice.d.ts +9 -9
  13. package/dist/components/CurrencyPrice.js +7 -7
  14. package/dist/components/ExpandableHeadingRow.d.ts +15 -15
  15. package/dist/components/ExpandableHeadingRow.js +21 -21
  16. package/dist/components/Loading.d.ts +13 -13
  17. package/dist/components/Loading.js +20 -20
  18. package/dist/components/ProductInformation.d.ts +10 -10
  19. package/dist/components/ProductInformation.js +23 -23
  20. package/dist/components/icons/Checkmark.d.ts +5 -5
  21. package/dist/components/icons/Checkmark.js +12 -12
  22. package/dist/components/icons/Chevron.d.ts +6 -6
  23. package/dist/components/icons/Chevron.js +18 -18
  24. package/dist/components/productConfiguration/CfgAdditionalProductView.d.ts +3 -3
  25. package/dist/components/productConfiguration/CfgAdditionalProductView.js +28 -28
  26. package/dist/components/productConfiguration/CfgCheckboxView.d.ts +18 -18
  27. package/dist/components/productConfiguration/CfgCheckboxView.js +22 -22
  28. package/dist/components/productConfiguration/CfgCheckboxesView.d.ts +12 -12
  29. package/dist/components/productConfiguration/CfgCheckboxesView.js +18 -18
  30. package/dist/components/productConfiguration/CfgDropdownOptionView.d.ts +18 -18
  31. package/dist/components/productConfiguration/CfgDropdownOptionView.js +35 -35
  32. package/dist/components/productConfiguration/CfgDropdownView.d.ts +12 -12
  33. package/dist/components/productConfiguration/CfgDropdownView.js +20 -20
  34. package/dist/components/productConfiguration/CfgFeatureView.d.ts +27 -27
  35. package/dist/components/productConfiguration/CfgFeatureView.js +34 -34
  36. package/dist/components/productConfiguration/CfgGroupView.d.ts +4 -4
  37. package/dist/components/productConfiguration/CfgGroupView.js +13 -13
  38. package/dist/components/productConfiguration/CfgOptionFeaturesView.d.ts +6 -6
  39. package/dist/components/productConfiguration/CfgOptionFeaturesView.js +13 -13
  40. package/dist/components/productConfiguration/CfgOptionNumericView.d.ts +27 -27
  41. package/dist/components/productConfiguration/CfgOptionNumericView.js +117 -117
  42. package/dist/components/productConfiguration/CfgOptionPriceView.d.ts +9 -9
  43. package/dist/components/productConfiguration/CfgOptionPriceView.js +29 -29
  44. package/dist/components/productConfiguration/CfgProductConfigurationView.d.ts +18 -18
  45. package/dist/components/productConfiguration/CfgProductConfigurationView.js +45 -45
  46. package/dist/css/web-ui.css.map +1 -1
  47. package/dist/index.d.ts +20 -20
  48. package/dist/index.js +20 -20
  49. package/dist/scss/_button.scss +36 -36
  50. package/dist/scss/_configurator.scss +67 -67
  51. package/dist/scss/_expandable.scss +37 -37
  52. package/dist/scss/_feature-item.scss +124 -124
  53. package/dist/scss/_hr.scss +16 -16
  54. package/dist/scss/_loading.scss +98 -98
  55. package/dist/scss/_mixins.scss +56 -56
  56. package/dist/scss/_option-tree.scss +29 -29
  57. package/dist/scss/_product-information.scss +49 -49
  58. package/dist/scss/_range-view.scss +28 -28
  59. package/dist/scss/_slider.scss +70 -70
  60. package/dist/scss/_themed.scss +124 -124
  61. package/dist/scss/_utilities.scss +21 -21
  62. package/dist/scss/_variables.scss +6 -6
  63. package/dist/scss/icons/_checkmark.scss +46 -46
  64. package/dist/scss/icons/_chevron.scss +62 -62
  65. package/dist/scss/web-ui.scss +11 -11
  66. package/dist/useObservable.d.ts +4 -4
  67. package/dist/useObservable.js +18 -18
  68. package/dist/useRerender.d.ts +1 -1
  69. package/dist/useRerender.js +5 -5
  70. package/dist/useResize.d.ts +6 -6
  71. package/dist/useResize.js +47 -47
  72. package/dist/useSelected.d.ts +2 -2
  73. package/dist/useSelected.js +13 -13
  74. package/dist/useUniqueId.d.ts +1 -1
  75. package/dist/useUniqueId.js +7 -7
  76. package/dist/utilities.d.ts +5 -5
  77. package/dist/utilities.js +1 -1
  78. package/package.json +3 -3
@@ -1,117 +1,117 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { NumericValueDiscrete, NumericValueRangeDefinition } from "@configura/web-api";
11
- import React, { useEffect, useState } from "react";
12
- import { useRerender } from "../../useRerender.js";
13
- import { useUuid } from "../../useUniqueId.js";
14
- import { Checkmark } from "../icons/Checkmark.js";
15
- export const CfgOptionNumericView = (props) => {
16
- const { option } = props;
17
- const { isUseNumericValue } = option;
18
- // Contrary to most other components this one has its own connection to the
19
- // option that is backing it. This is for it to be able to "live" update
20
- // as we drag sliders. The value is not "commited" at immediate drag, and so
21
- // the full machinery of validations and such is not run until later.
22
- const rerender = useRerender();
23
- useEffect(() => {
24
- option.listenForChange(rerender);
25
- return () => {
26
- option.stopListenForChange(rerender);
27
- };
28
- }, [option, rerender]);
29
- if (!isUseNumericValue) {
30
- return null;
31
- }
32
- const { allowedNumericValues, numericValue, unit } = option;
33
- if (allowedNumericValues === undefined) {
34
- throw new Error("AllowedNumericValues undefined for numeric option");
35
- }
36
- if (numericValue === undefined) {
37
- throw new Error("Numeric value not set for numeric option");
38
- }
39
- const { ranges } = allowedNumericValues;
40
- const isSingleRange = ranges.length === 1;
41
- if (isSingleRange && ranges[0] instanceof NumericValueDiscrete) {
42
- return null;
43
- }
44
- return (React.createElement("ul", { className: `cfgOptionTree cfgOptionTree--subLevel cfgOptionTree--indent ${props.className || ""}`, style: props.style }, ranges.map((range) => (React.createElement(NumericValueView, { currentValue: numericValue, unit: unit, range: range, key: range.first, hasNoSiblings: isSingleRange, updateValue: (value, commit) => __awaiter(void 0, void 0, void 0, function* () { return yield option.setNumericValue(value, commit); }) })))));
45
- };
46
- /**
47
- * Displays GUI for selecting in one "range". Please note that the range
48
- * parameter can also be a discrete value.
49
- */
50
- export const NumericValueView = (props) => {
51
- const { range, currentValue, updateValue, hasNoSiblings } = props;
52
- const { legend, first } = range;
53
- const selected = range.includesValue(currentValue);
54
- const optionClasses = selected ? "cfgFeatureItemOption--checked" : "";
55
- const uniqueId = useUuid();
56
- const [inputValue, setInputValue] = useState(first);
57
- const [inputCommited, setInputCommited] = useState(true);
58
- const [showRangeError, setShowRangeError] = useState(false);
59
- if (inputCommited && inputValue !== currentValue && range.includesValue(currentValue)) {
60
- setInputValue(currentValue);
61
- }
62
- function isAcceptableValue(value) {
63
- return !isNaN(value) && range.includesValue(value);
64
- }
65
- return (React.createElement("li", { className: `cfgFeatureItem cfgMb1 ${hasNoSiblings ? "" : "cfgMt1"}` },
66
- !hasNoSiblings && (React.createElement("label", { className: `cfgFeatureItemOption ${optionClasses}`, htmlFor: uniqueId },
67
- React.createElement("input", { checked: selected, className: "cfgFeatureItem__hiddenInput", id: uniqueId, name: uniqueId, onChange: (event) => {
68
- if (event.target.checked) {
69
- updateValue(inputValue, true);
70
- }
71
- }, type: "radio", value: first }),
72
- React.createElement("div", { className: "cfgFeatureItem__radio" }, selected && React.createElement(Checkmark, null)),
73
- React.createElement("div", { className: "cfgFeatureItemOption__titleWrapper" },
74
- React.createElement("div", { className: "cfgFeatureItemOption__title" }, legend)))),
75
- selected && range instanceof NumericValueRangeDefinition && (React.createElement(RangeView, Object.assign({}, props, { className: hasNoSiblings ? undefined : "cfgOptionTree--indent", range: range, onChange: (val, instantUpdate) => {
76
- setInputValue(val);
77
- if (!isAcceptableValue(inputValue)) {
78
- return;
79
- }
80
- if (instantUpdate) {
81
- updateValue(val, false);
82
- }
83
- setShowRangeError(false);
84
- setInputCommited(false);
85
- }, onCommit: () => {
86
- if (inputCommited) {
87
- return;
88
- }
89
- if (!isAcceptableValue(inputValue)) {
90
- setShowRangeError(true);
91
- return;
92
- }
93
- updateValue(inputValue, true);
94
- setShowRangeError(false);
95
- setInputCommited(true);
96
- }, inputValue: inputValue, showRangeError: showRangeError })))));
97
- };
98
- export const RangeView = (props) => {
99
- const { currentValue, unit, inputValue, range, onChange, onCommit, showRangeError } = props;
100
- const { minValue, maxValue, increment, legend } = range;
101
- const getOnChange = (instant) => (event) => onChange(event.currentTarget.valueAsNumber, instant);
102
- const inputProps = {
103
- min: minValue,
104
- max: maxValue,
105
- step: increment || Math.pow(10, Math.round(Math.log10(maxValue - minValue)) - 3),
106
- onBlur: onCommit,
107
- onMouseUp: onCommit,
108
- };
109
- return (React.createElement("div", { className: `cfgRangeView cfgMt1 ${props.className || ""}`, style: props.style },
110
- React.createElement("div", { className: "cfgRangeView__inputs" },
111
- React.createElement("input", Object.assign({}, inputProps, { type: "number", value: isNaN(inputValue) ? "" : inputValue, onChange: getOnChange(false), className: "cfgRangeView__number-input" })),
112
- React.createElement("span", { className: "cfgRangeView__unit-label" }, unit),
113
- React.createElement("input", Object.assign({}, inputProps, { type: "range", className: "cfgSlider cfgRangeView__slider-input", value: currentValue, onChange: getOnChange(true) }))),
114
- showRangeError && (React.createElement("div", { className: "cfgRangeView__error" },
115
- "Value not allowed, allowed values are ",
116
- legend))));
117
- };
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { NumericValueDiscrete, NumericValueRangeDefinition } from "@configura/web-api";
11
+ import React, { useEffect, useState } from "react";
12
+ import { useRerender } from "../../useRerender.js";
13
+ import { useUuid } from "../../useUniqueId.js";
14
+ import { Checkmark } from "../icons/Checkmark.js";
15
+ export const CfgOptionNumericView = (props) => {
16
+ const { option } = props;
17
+ const { isUseNumericValue } = option;
18
+ // Contrary to most other components this one has its own connection to the
19
+ // option that is backing it. This is for it to be able to "live" update
20
+ // as we drag sliders. The value is not "commited" at immediate drag, and so
21
+ // the full machinery of validations and such is not run until later.
22
+ const rerender = useRerender();
23
+ useEffect(() => {
24
+ option.listenForChange(rerender);
25
+ return () => {
26
+ option.stopListenForChange(rerender);
27
+ };
28
+ }, [option, rerender]);
29
+ if (!isUseNumericValue) {
30
+ return null;
31
+ }
32
+ const { allowedNumericValues, numericValue, unit } = option;
33
+ if (allowedNumericValues === undefined) {
34
+ throw new Error("AllowedNumericValues undefined for numeric option");
35
+ }
36
+ if (numericValue === undefined) {
37
+ throw new Error("Numeric value not set for numeric option");
38
+ }
39
+ const { ranges } = allowedNumericValues;
40
+ const isSingleRange = ranges.length === 1;
41
+ if (isSingleRange && ranges[0] instanceof NumericValueDiscrete) {
42
+ return null;
43
+ }
44
+ return (React.createElement("ul", { className: `cfgOptionTree cfgOptionTree--subLevel cfgOptionTree--indent ${props.className || ""}`, style: props.style }, ranges.map((range) => (React.createElement(NumericValueView, { currentValue: numericValue, unit: unit, range: range, key: range.first, hasNoSiblings: isSingleRange, updateValue: (value, commit) => __awaiter(void 0, void 0, void 0, function* () { return yield option.setNumericValue(value, commit); }) })))));
45
+ };
46
+ /**
47
+ * Displays GUI for selecting in one "range". Please note that the range
48
+ * parameter can also be a discrete value.
49
+ */
50
+ export const NumericValueView = (props) => {
51
+ const { range, currentValue, updateValue, hasNoSiblings } = props;
52
+ const { legend, first } = range;
53
+ const selected = range.includesValue(currentValue);
54
+ const optionClasses = selected ? "cfgFeatureItemOption--checked" : "";
55
+ const uniqueId = useUuid();
56
+ const [inputValue, setInputValue] = useState(first);
57
+ const [inputCommited, setInputCommited] = useState(true);
58
+ const [showRangeError, setShowRangeError] = useState(false);
59
+ if (inputCommited && inputValue !== currentValue && range.includesValue(currentValue)) {
60
+ setInputValue(currentValue);
61
+ }
62
+ function isAcceptableValue(value) {
63
+ return !isNaN(value) && range.includesValue(value);
64
+ }
65
+ return (React.createElement("li", { className: `cfgFeatureItem cfgMb1 ${hasNoSiblings ? "" : "cfgMt1"}` },
66
+ !hasNoSiblings && (React.createElement("label", { className: `cfgFeatureItemOption ${optionClasses}`, htmlFor: uniqueId },
67
+ React.createElement("input", { checked: selected, className: "cfgFeatureItem__hiddenInput", id: uniqueId, name: uniqueId, onChange: (event) => {
68
+ if (event.target.checked) {
69
+ updateValue(inputValue, true);
70
+ }
71
+ }, type: "radio", value: first }),
72
+ React.createElement("div", { className: "cfgFeatureItem__radio" }, selected && React.createElement(Checkmark, null)),
73
+ React.createElement("div", { className: "cfgFeatureItemOption__titleWrapper" },
74
+ React.createElement("div", { className: "cfgFeatureItemOption__title" }, legend)))),
75
+ selected && range instanceof NumericValueRangeDefinition && (React.createElement(RangeView, Object.assign({}, props, { className: hasNoSiblings ? undefined : "cfgOptionTree--indent", range: range, onChange: (val, instantUpdate) => {
76
+ setInputValue(val);
77
+ if (!isAcceptableValue(inputValue)) {
78
+ return;
79
+ }
80
+ if (instantUpdate) {
81
+ updateValue(val, false);
82
+ }
83
+ setShowRangeError(false);
84
+ setInputCommited(false);
85
+ }, onCommit: () => {
86
+ if (inputCommited) {
87
+ return;
88
+ }
89
+ if (!isAcceptableValue(inputValue)) {
90
+ setShowRangeError(true);
91
+ return;
92
+ }
93
+ updateValue(inputValue, true);
94
+ setShowRangeError(false);
95
+ setInputCommited(true);
96
+ }, inputValue: inputValue, showRangeError: showRangeError })))));
97
+ };
98
+ export const RangeView = (props) => {
99
+ const { currentValue, unit, inputValue, range, onChange, onCommit, showRangeError } = props;
100
+ const { minValue, maxValue, increment, legend } = range;
101
+ const getOnChange = (instant) => (event) => onChange(event.currentTarget.valueAsNumber, instant);
102
+ const inputProps = {
103
+ min: minValue,
104
+ max: maxValue,
105
+ step: increment || Math.pow(10, Math.round(Math.log10(maxValue - minValue)) - 3),
106
+ onBlur: onCommit,
107
+ onMouseUp: onCommit,
108
+ };
109
+ return (React.createElement("div", { className: `cfgRangeView cfgMt1 ${props.className || ""}`, style: props.style },
110
+ React.createElement("div", { className: "cfgRangeView__inputs" },
111
+ React.createElement("input", Object.assign({}, inputProps, { type: "number", value: isNaN(inputValue) ? "" : inputValue, onChange: getOnChange(false), className: "cfgRangeView__number-input" })),
112
+ React.createElement("span", { className: "cfgRangeView__unit-label" }, unit),
113
+ React.createElement("input", Object.assign({}, inputProps, { type: "range", className: "cfgSlider cfgRangeView__slider-input", value: currentValue, onChange: getOnChange(true) }))),
114
+ showRangeError && (React.createElement("div", { className: "cfgRangeView__error" },
115
+ "Value not allowed, allowed values are ",
116
+ legend))));
117
+ };
@@ -1,10 +1,10 @@
1
- import { CfgOption } from "@configura/web-api";
2
- import React from "react";
3
- import { UpchargeDisplayMode } from "./CfgProductConfigurationView.js";
4
- declare type Props = {
5
- option: CfgOption;
6
- upchargeDisplayMode: UpchargeDisplayMode | undefined;
7
- };
8
- export declare const CfgOptionPriceView: React.FC<Props>;
9
- export {};
1
+ import { CfgOption } from "@configura/web-api";
2
+ import React from "react";
3
+ import { UpchargeDisplayMode } from "./CfgProductConfigurationView.js";
4
+ declare type Props = {
5
+ option: CfgOption;
6
+ upchargeDisplayMode: UpchargeDisplayMode | undefined;
7
+ };
8
+ export declare const CfgOptionPriceView: React.FC<Props>;
9
+ export {};
10
10
  //# sourceMappingURL=CfgOptionPriceView.d.ts.map
@@ -1,29 +1,29 @@
1
- import React from "react";
2
- import { CurrencyPrice } from "../CurrencyPrice.js";
3
- import { UpchargeDisplayMode } from "./CfgProductConfigurationView.js";
4
- export const CfgOptionPriceView = (props) => {
5
- const { option, upchargeDisplayMode } = props;
6
- const { currency, fractionDigits, lang } = option.parentProduct;
7
- if (currency === "") {
8
- return null;
9
- }
10
- switch (upchargeDisplayMode) {
11
- case UpchargeDisplayMode.None:
12
- return null;
13
- case UpchargeDisplayMode.Price:
14
- const { upcharge } = option;
15
- if (upcharge === undefined || upcharge === 0) {
16
- return null;
17
- }
18
- return (React.createElement("div", { className: "cfgFeatureItemOption__price" },
19
- React.createElement(CurrencyPrice, { currency: currency, language: lang, price: upcharge, fractionDigits: fractionDigits })));
20
- default:
21
- const { priceChangeAtSelectChange } = option;
22
- if (priceChangeAtSelectChange === undefined || priceChangeAtSelectChange === 0) {
23
- return null;
24
- }
25
- return (React.createElement("div", { className: "cfgFeatureItemOption__price" },
26
- priceChangeAtSelectChange < 0 ? "-" : "+",
27
- React.createElement(CurrencyPrice, { currency: currency, language: lang, price: Math.abs(priceChangeAtSelectChange), fractionDigits: fractionDigits })));
28
- }
29
- };
1
+ import React from "react";
2
+ import { CurrencyPrice } from "../CurrencyPrice.js";
3
+ import { UpchargeDisplayMode } from "./CfgProductConfigurationView.js";
4
+ export const CfgOptionPriceView = (props) => {
5
+ const { option, upchargeDisplayMode } = props;
6
+ const { currency, fractionDigits, lang } = option.parentProduct;
7
+ if (currency === "") {
8
+ return null;
9
+ }
10
+ switch (upchargeDisplayMode) {
11
+ case UpchargeDisplayMode.None:
12
+ return null;
13
+ case UpchargeDisplayMode.Price:
14
+ const { upcharge } = option;
15
+ if (upcharge === undefined || upcharge === 0) {
16
+ return null;
17
+ }
18
+ return (React.createElement("div", { className: "cfgFeatureItemOption__price" },
19
+ React.createElement(CurrencyPrice, { currency: currency, language: lang, price: upcharge, fractionDigits: fractionDigits })));
20
+ default:
21
+ const { priceChangeAtSelectChange } = option;
22
+ if (priceChangeAtSelectChange === undefined || priceChangeAtSelectChange === 0) {
23
+ return null;
24
+ }
25
+ return (React.createElement("div", { className: "cfgFeatureItemOption__price" },
26
+ priceChangeAtSelectChange < 0 ? "-" : "+",
27
+ React.createElement(CurrencyPrice, { currency: currency, language: lang, price: Math.abs(priceChangeAtSelectChange), fractionDigits: fractionDigits })));
28
+ }
29
+ };
@@ -1,19 +1,19 @@
1
- import { CfgProduct, CfgProductConfiguration } from "@configura/web-api";
2
- import React from "react";
3
- import { CssProps } from "../../utilities.js";
4
- import { CfgProductConfigurationComponentAndPassthroughProps } from "./CfgFeatureView.js";
5
- export declare enum UpchargeDisplayMode {
6
- SelectionImpact = 0,
7
- None = 1,
8
- Price = 2
9
- }
10
- export declare type PassthroughProps = {
11
- upchargeDisplayMode?: UpchargeDisplayMode;
12
- };
13
- declare type Props = PassthroughProps & {
14
- productOrConfiguration: CfgProductConfiguration | CfgProduct;
15
- permanentlyExpandedAdditionalProductLevels?: number;
16
- };
17
- export declare const CfgProductConfigurationView: React.FC<Props & CfgProductConfigurationComponentAndPassthroughProps & CssProps>;
18
- export {};
1
+ import { CfgProduct, CfgProductConfiguration } from "@configura/web-api";
2
+ import React from "react";
3
+ import { CssProps } from "../../utilities.js";
4
+ import { CfgProductConfigurationComponentAndPassthroughProps } from "./CfgFeatureView.js";
5
+ export declare enum UpchargeDisplayMode {
6
+ SelectionImpact = 0,
7
+ None = 1,
8
+ Price = 2
9
+ }
10
+ export declare type PassthroughProps = {
11
+ upchargeDisplayMode?: UpchargeDisplayMode;
12
+ };
13
+ declare type Props = PassthroughProps & {
14
+ productOrConfiguration: CfgProductConfiguration | CfgProduct;
15
+ permanentlyExpandedAdditionalProductLevels?: number;
16
+ };
17
+ export declare const CfgProductConfigurationView: React.FC<Props & CfgProductConfigurationComponentAndPassthroughProps & CssProps>;
18
+ export {};
19
19
  //# sourceMappingURL=CfgProductConfigurationView.d.ts.map
@@ -1,45 +1,45 @@
1
- import { CfgProduct } from "@configura/web-api";
2
- import React, { useEffect } from "react";
3
- import { useRerender } from "../../useRerender.js";
4
- import { CfgAdditionalProductView } from "./CfgAdditionalProductView.js";
5
- import { CfgFeatureViewMemo, forwardProps, } from "./CfgFeatureView.js";
6
- export var UpchargeDisplayMode;
7
- (function (UpchargeDisplayMode) {
8
- UpchargeDisplayMode[UpchargeDisplayMode["SelectionImpact"] = 0] = "SelectionImpact";
9
- UpchargeDisplayMode[UpchargeDisplayMode["None"] = 1] = "None";
10
- UpchargeDisplayMode[UpchargeDisplayMode["Price"] = 2] = "Price";
11
- })(UpchargeDisplayMode || (UpchargeDisplayMode = {}));
12
- export const CfgProductConfigurationView = React.memo((props) => {
13
- const { productOrConfiguration, permanentlyExpandedAdditionalProductLevels, additionalProductComponent, } = props;
14
- const configuration = productOrConfiguration instanceof CfgProduct
15
- ? productOrConfiguration.configuration
16
- : productOrConfiguration;
17
- const features = configuration.features.reduce((agg, feature) => {
18
- // It is possible in Cat Creator to double add a Feature. This fills no known
19
- // purpose and React can not handle this, so we filter out the duplicates.
20
- const code = feature.code;
21
- if (agg.every((f) => f.code !== code)) {
22
- agg.push(feature);
23
- }
24
- return agg;
25
- }, []);
26
- const additionalProducts = productOrConfiguration instanceof CfgProduct
27
- ? productOrConfiguration.additionalProducts
28
- : undefined;
29
- const AdditionalProductComponent = additionalProductComponent || CfgAdditionalProductView;
30
- // Re-rendering is driven from the very top of the tree. However, when selecting an option
31
- // the change is not bubbled all the way to the top (and then down again) until after
32
- // validation has been done. This keeps the 3D-view from re-rendering until after validation
33
- // has been done. But it also makes the state of this GUI not update until after validate,
34
- // which does not look good. So we add this extra hook to make this rerender early.
35
- const rerender = useRerender();
36
- useEffect(() => {
37
- configuration.listenForChange(rerender);
38
- return () => {
39
- configuration.stopListenForChange(rerender);
40
- };
41
- }, [configuration, rerender]);
42
- return (React.createElement(React.Fragment, null,
43
- React.createElement("ul", { className: `cfgOptionTree cfgOptionTree--topLevel ${props.className || ""}`, style: props.style }, features.map((f) => (React.createElement(CfgFeatureViewMemo, Object.assign({ feature: f, key: f.key }, forwardProps(props)))))),
44
- additionalProducts !== undefined && (React.createElement("ul", { className: `cfgAdditionalProduct cfgOptionTree cfgOptionTree--topLevel` }, additionalProducts.map((additionalProduct) => (React.createElement(AdditionalProductComponent, Object.assign({ key: additionalProduct.key }, forwardProps(props), { additionalProductComponent: AdditionalProductComponent, product: additionalProduct, permanentlyExpandedLevels: permanentlyExpandedAdditionalProductLevels || 0 }))))))));
45
- });
1
+ import { CfgProduct } from "@configura/web-api";
2
+ import React, { useEffect } from "react";
3
+ import { useRerender } from "../../useRerender.js";
4
+ import { CfgAdditionalProductView } from "./CfgAdditionalProductView.js";
5
+ import { CfgFeatureViewMemo, forwardProps, } from "./CfgFeatureView.js";
6
+ export var UpchargeDisplayMode;
7
+ (function (UpchargeDisplayMode) {
8
+ UpchargeDisplayMode[UpchargeDisplayMode["SelectionImpact"] = 0] = "SelectionImpact";
9
+ UpchargeDisplayMode[UpchargeDisplayMode["None"] = 1] = "None";
10
+ UpchargeDisplayMode[UpchargeDisplayMode["Price"] = 2] = "Price";
11
+ })(UpchargeDisplayMode || (UpchargeDisplayMode = {}));
12
+ export const CfgProductConfigurationView = React.memo((props) => {
13
+ const { productOrConfiguration, permanentlyExpandedAdditionalProductLevels, additionalProductComponent, } = props;
14
+ const configuration = productOrConfiguration instanceof CfgProduct
15
+ ? productOrConfiguration.configuration
16
+ : productOrConfiguration;
17
+ const features = configuration.features.reduce((agg, feature) => {
18
+ // It is possible in Cat Creator to double add a Feature. This fills no known
19
+ // purpose and React can not handle this, so we filter out the duplicates.
20
+ const code = feature.code;
21
+ if (agg.every((f) => f.code !== code)) {
22
+ agg.push(feature);
23
+ }
24
+ return agg;
25
+ }, []);
26
+ const additionalProducts = productOrConfiguration instanceof CfgProduct
27
+ ? productOrConfiguration.additionalProducts
28
+ : undefined;
29
+ const AdditionalProductComponent = additionalProductComponent || CfgAdditionalProductView;
30
+ // Re-rendering is driven from the very top of the tree. However, when selecting an option
31
+ // the change is not bubbled all the way to the top (and then down again) until after
32
+ // validation has been done. This keeps the 3D-view from re-rendering until after validation
33
+ // has been done. But it also makes the state of this GUI not update until after validate,
34
+ // which does not look good. So we add this extra hook to make this rerender early.
35
+ const rerender = useRerender();
36
+ useEffect(() => {
37
+ configuration.listenForChange(rerender);
38
+ return () => {
39
+ configuration.stopListenForChange(rerender);
40
+ };
41
+ }, [configuration, rerender]);
42
+ return (React.createElement(React.Fragment, null,
43
+ React.createElement("ul", { className: `cfgOptionTree cfgOptionTree--topLevel ${props.className || ""}`, style: props.style }, features.map((f) => (React.createElement(CfgFeatureViewMemo, Object.assign({ feature: f, key: f.key }, forwardProps(props)))))),
44
+ additionalProducts !== undefined && (React.createElement("ul", { className: `cfgAdditionalProduct cfgOptionTree cfgOptionTree--topLevel` }, additionalProducts.map((additionalProduct) => (React.createElement(AdditionalProductComponent, Object.assign({ key: additionalProduct.key }, forwardProps(props), { additionalProductComponent: AdditionalProductComponent, product: additionalProduct, permanentlyExpandedLevels: permanentlyExpandedAdditionalProductLevels || 0 }))))))));
45
+ });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/scss/_range-view.scss","../../src/scss/web-ui.scss","../../src/scss/_utilities.scss","../../src/scss/_button.scss","../../src/scss/_mixins.scss","../../src/scss/_themed.scss","../../src/scss/_configurator.scss","../../src/scss/_variables.scss","../../src/scss/_expandable.scss","../../src/scss/_hr.scss","../../src/scss/_feature-item.scss","../../src/scss/_option-tree.scss","../../src/scss/_product-information.scss","../../src/scss/_loading.scss","../../src/scss/_slider.scss","../../src/scss/icons/_checkmark.scss","../../src/scss/icons/_chevron.scss"],"names":[],"mappings":"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DdmpBH,Cc9oBE,sBXDD,yBAAA,CAYA,kBH+oBD,CcxpBG,oDXJF,kBAAA,CAEA,YAAA,CACA,aAAA,CACA,YAAA,CACA,sBAAA,CACA,mBAAA,CACA,wBAAA,CAAA,gBAAA,CACA,WHgqBD,CcpqBG,8BXHF,sBAAA,CAYA,kBH2pBD,CezsBC,YZYA,qBAAA,CYNC,oBAAA,CACA,Uf0sBF,CGpsBC,qCAEC,kBHqsBF,CG9rBC,cAVA,qBH2sBD,CG1sBC,uCAEC,kBH2sBF,CejtBE,uBACC,wBfmtBH,CejtBG,6BACC,0BfmtBJ,CehtBG,2BACC,2BfktBJ,Ce9sBE,kBACC,oBAAA,CACA,eAAA,CACA,0BAAA,CACA,mCfgtBH,Ce3sBG,6DACC,Wf6sBJ,Ce3sBG,+DACC,cf6sBJ,CexsBG,4BACC,uBf0sBJ,CensBG,uDACC,wBfwsBJ,CersBG,2BACC,uBfusBJ,CEvuBC,yBCRA,qBAAA,CDRA,oBAAA,CACA,4BAAA,CACA,aE8EC,CF7ED,kBAAA,CACA,yBAAA,CACA,eAAA,CACA,eAAA,CACA,YAAA,CACA,iBF+vBD,CG9vBC,+DAEC,kBH+vBF,CGxvBC,2BAVA,qBHqwBD,CGpwBC,iEAEC,kBHqwBF,CEtwBC,+BCNA,+CH+wBD,CE/vBC,4BCZA,qBH8wBD,CG7wBC,qEAEC,kBH8wBF,CGvwBC,8BAVA,qBHoxBD,CGnxBC,uEAEC,kBHoxBF,CExwBG,mDACC,eF0wBJ,CKlyBC,+BFQA,qBAAA,CAgBA,iIAAA,CErBC,cCNa,CDOb,aDiF4C,CChF5C,WLoyBF,CGhyBC,2EAEC,kBHiyBF,CG1xBC,iCAVA,qBHuyBD,CGtyBC,6EAEC,kBHuyBF,CK1yBC,qCACC,gCAAA,CACA,yBAAA,CACA,iBL4yBF,CK1yBE,8CACC,cL4yBH,CKxyBC,mCACC,eL0yBF,CKvyBC,gCFdA,qBAAA,CEgBC,iBAAA,CACA,YAAA,CACA,wBAAA,CAAA,gBLyyBF,CG1zBC,6EAEC,kBH2zBF,CGpzBC,kCAVA,qBHi0BD,CGh0BC,+EAEC,kBHi0BF,CKhzBE,uCACC,YLkzBH,CK9yBC,sCFzBA,qBAAA,CE2BC,aDkD4C,C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","file":"web-ui.css","sourcesContent":[".cfgRangeView {\r\n\t&__inputs {\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t&__number-input {\r\n\t\tfont-size: 1.5em;\r\n\t\tflex-grow: 1;\r\n\t\ttext-align: right;\r\n\t}\r\n\r\n\t&__unit-label {\r\n\t\tfont-size: 1.5em;\r\n\t\tmargin-left: 0.3em;\r\n\t}\r\n\r\n\t&__slider-input.cfgSlider {\r\n\t\tmargin-left: 1em;\r\n\t\tflex-grow: 3;\r\n\t}\r\n\r\n\t&__error {\r\n\t\tmargin-top: 1em;\r\n\t\tfont-size: 1.5em;\r\n\t\tcolor: #b00;\r\n\t}\r\n}\r\n","/**\r\n* Web UI Styling\r\n*/\r\n\r\n@use \"themed\";\r\n\r\n@include themed.themed(themed.$lightTheme);\r\n\r\n.cfgDarkTheme {\r\n\t@include themed.themed(themed.$darkTheme);\r\n}\r\n","/**\r\n * Web UI Utilities\r\n */\r\n\r\n.cfgMl1 {\r\n\tmargin-left: 1em;\r\n}\r\n\r\n.cfgMt1 {\r\n\tmargin-top: 1em;\r\n}\r\n\r\n.cfgMb1 {\r\n\tmargin-bottom: 1em;\r\n}\r\n\r\n.cfgTextOverflow {\r\n\toverflow: hidden;\r\n\ttext-overflow: ellipsis;\r\n\twhite-space: nowrap;\r\n}\r\n","/**\r\n * Web UI Product information\r\n */\r\n@use \"mixins\";\r\n\r\n@mixin styles($textColor, $borderColor, $focusOutlineInnerColor, $focusOutlineOuterColor) {\r\n\t@include mixins.cfgRootStyles;\r\n\tdisplay: inline-block;\r\n\tbackground-color: transparent;\r\n\tcolor: $textColor;\r\n\tborder-radius: 0.3em;\r\n\tborder: 0.1em solid $borderColor;\r\n\tfont-size: 1.3em;\r\n\tfont-weight: 500;\r\n\toutline: none;\r\n\tpadding: 0.4em 0.8em;\r\n\r\n\t&:focus {\r\n\t\t@include mixins.focusOutline($focusOutlineInnerColor, $focusOutlineOuterColor);\r\n\t}\r\n}\r\n\r\n@mixin classes($textColor, $borderColor, $focusOutlineInnerColor, $focusOutlineOuterColor) {\r\n\t.cfgButton {\r\n\t\t@include styles($textColor, $borderColor, $focusOutlineInnerColor, $focusOutlineOuterColor);\r\n\t}\r\n\r\n\t.cfgButtonRow {\r\n\t\t@include mixins.cfgRootStyles;\r\n\t\t&__button {\r\n\t\t\t&:nth-child(n + 2) {\r\n\t\t\t\tmargin-left: 1em;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","@mixin noButtonLook {\r\n\tappearance: none;\r\n\tfont-family: inherit;\r\n\tfont-size: inherit;\r\n\tcolor: inherit;\r\n\tbackground: none;\r\n\tborder: none;\r\n\tpadding: 0;\r\n}\r\n\r\n@mixin focusOutline($focusOutlineInnerColor, $focusOutlineOuterColor) {\r\n\tbox-shadow: 0 0 0 0.075em $focusOutlineInnerColor, 0 0 0 0.2em $focusOutlineOuterColor;\r\n}\r\n\r\n@mixin borderBox {\r\n\tbox-sizing: border-box;\r\n\t&:before,\r\n\t&:after {\r\n\t\tbox-sizing: inherit;\r\n\t}\r\n}\r\n\r\n@mixin cfgRootStyles {\r\n\t@include borderBox;\r\n\r\n\t* {\r\n\t\t@include borderBox;\r\n\t}\r\n}\r\n\r\n@mixin cfgDefaultFont {\r\n\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif,\r\n\t\t\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\r\n}\r\n\r\n@mixin cfgCheckAndRadio($color) {\r\n\talign-items: center;\r\n\tborder: 0.2em solid $color;\r\n\tdisplay: flex;\r\n\tflex: 0 0 auto;\r\n\theight: 2.2em;\r\n\tjustify-content: center;\r\n\tpointer-events: none;\r\n\tuser-select: none;\r\n\twidth: 2.2em;\r\n}\r\n\r\n@mixin cfgCheckbox($color) {\r\n\t@include cfgCheckAndRadio($color);\r\n\tborder-radius: 0.3em;\r\n}\r\n\r\n@mixin cfgRadio($color) {\r\n\t@include cfgCheckAndRadio($color);\r\n\tborder-radius: 50%;\r\n}\r\n","@use \"sass:map\";\r\n@use \"sass:color\";\r\n\r\n@use \"variables\" as v;\r\n\r\n// Components\r\n@use \"button\";\r\n\r\n@use \"configurator\";\r\n@use \"expandable\";\r\n@use \"hr\";\r\n@use \"feature-item\";\r\n@use \"option-tree\";\r\n@use \"product-information\";\r\n@use \"loading\";\r\n@use \"slider\";\r\n@use \"range-view\";\r\n\r\n// Icons\r\n@use \"icons/checkmark\";\r\n@use \"icons/chevron\";\r\n\r\n// Utilities\r\n@use \"utilities\";\r\n\r\n/* Colors */\r\n\r\n$black: hsl(0, 0%, 0%) !default;\r\n$white: hsl(0, 0%, 100%) !default;\r\n$darkGrey: hsl(0, 0%, 15%) !default;\r\n\r\n/* Specific colors */\r\n\r\n$border: hsl(252, 5%, 79%) !default;\r\n$borderDark: hsl(0, 0%, 73%) !default;\r\n$focusOutlineOuter: hsl(0, 0%, 13%) !default;\r\n$sliderTrack: #666 !default;\r\n$spinner2: hsla(0, 0%, 0%, 0.15);\r\n$grayText: hsl(0, 0%, 50%) !default;\r\n$text: hsl(0, 0%, 20%) !default;\r\n/* As convention we assume the default theme when naming colors,\r\n as attempts at generic naming often leads to confussion */\r\n$lightTheme: (\r\n\t\"black\": $black,\r\n\t\"border\": $border,\r\n\t\"borderDark\": $borderDark,\r\n\t\"checkButtonChecked\": $black,\r\n\t\"checkButtonUnchecked\": $border,\r\n\t\"chevronActive\": $black,\r\n\t\"chevronPassive\": $borderDark,\r\n\t\"divider\": $border,\r\n\t\"focusOutlineInner\": $white,\r\n\t\"focusOutlineOuter\": $text,\r\n\t\"grayText\": $grayText,\r\n\t\"overlayBackground\": $white,\r\n\t\"sliderThumb\": $white,\r\n\t\"sliderThumbShadow\": $sliderTrack,\r\n\t\"sliderTrack\": $sliderTrack,\r\n\t\"spinner1\": $black,\r\n\t\"spinner2\": $spinner2,\r\n\t\"text\": $text,\r\n\t\"white\": $white,\r\n) !default;\r\n\r\n@function invertLightness($color) {\r\n\t@return color.change(\r\n\t\t$color,\r\n\t\t$lightness: 100 - color.lightness($color) * 0.8\r\n\t); // We scale with 80% to have a bit more contrast\r\n}\r\n\r\n@function invertLightnessList($list) {\r\n\t@each $key, $color in $list {\r\n\t\t$list: map.set($list, $key, invertLightness($color));\r\n\t}\r\n\t@return $list;\r\n}\r\n\r\n$darkTheme: invertLightnessList($lightTheme);\r\n\r\n$themes: (\r\n\t\"light\": $lightTheme,\r\n\t\"dark\": $darkTheme,\r\n);\r\n\r\n@mixin themed($ct, $baseFontSize: v.$baseFontSize, $overlayingZIndex: v.$overlayingZIndex) {\r\n\t@include button.classes(\r\n\t\tmap.get($ct, \"text\"),\r\n\t\tmap.get($ct, \"borderDark\"),\r\n\t\tmap.get($ct, \"focusOutlineInner\"),\r\n\t\tmap.get($ct, \"focusOutlineOuter\")\r\n\t);\r\n\t@include configurator.classes($baseFontSize, map.get($ct, \"text\"), map.get($ct, \"divider\"));\r\n\t@include expandable.classes;\r\n\t@include hr.classes(map.get($ct, \"divider\"));\r\n\t@include feature-item.classes(\r\n\t\tmap.get($ct, \"text\"),\r\n\t\tmap.get($ct, \"grayText\"),\r\n\t\tmap.get($ct, \"checkButtonUnchecked\"),\r\n\t\tmap.get($ct, \"checkButtonChecked\"),\r\n\t\tmap.get($ct, \"focusOutlineInner\"),\r\n\t\tmap.get($ct, \"focusOutlineOuter\")\r\n\t);\r\n\t@include option-tree.classes;\r\n\t@include product-information.classes(map.get($ct, \"text\"));\r\n\t@include loading.classes(\r\n\t\tmap.get($ct, \"black\"),\r\n\t\tmap.get($ct, \"spinner1\"),\r\n\t\tmap.get($ct, \"spinner2\"),\r\n\t\tmap.get($ct, \"overlayBackground\"),\r\n\t\t$overlayingZIndex\r\n\t);\r\n\r\n\t@include slider.classes(\r\n\t\tmap.get($ct, \"sliderTrack\"),\r\n\t\tmap.get($ct, \"sliderThumb\"),\r\n\t\tmap.get($ct, \"sliderThumbShadow\")\r\n\t);\r\n\t@include checkmark.classes(\r\n\t\tmap.get($ct, \"checkButtonChecked\"),\r\n\t\tmap.get($ct, \"checkButtonUnchecked\")\r\n\t);\r\n\t@include chevron.classes(map.get($ct, \"chevronActive\"), map.get($ct, \"chevronPassive\"));\r\n}\r\n","/**\r\n * Web UI Configurator\r\n */\r\n\r\n@use \"mixins\";\r\n\r\n@mixin classes($fontSize, $textColor, $headerUnderlineColor) {\r\n\t.cfgConfigurator {\r\n\t\t@include mixins.cfgRootStyles;\r\n\t\t@include mixins.cfgDefaultFont;\r\n\t\tfont-size: $fontSize;\r\n\t\tcolor: $textColor;\r\n\t\tmin-width: 0;\r\n\t}\r\n\r\n\t.cfgConfiguratorHeader {\r\n\t\tborder-bottom: 0.1em solid $headerUnderlineColor;\r\n\t\tpadding: 1.7em 1.7em 1.9em;\r\n\t\tposition: relative;\r\n\r\n\t\t&__actions {\r\n\t\t\tmargin-top: 1em;\r\n\t\t}\r\n\t}\r\n\r\n\t.cfgConfiguratorTree {\r\n\t\tpadding-top: 1em;\r\n\t}\r\n\r\n\t.cfgCanvasWrapper {\r\n\t\t@include mixins.cfgRootStyles;\r\n\t\tposition: relative;\r\n\t\theight: 50rem;\r\n\t\tuser-select: none;\r\n\r\n\t\t& canvas {\r\n\t\t\toutline: none;\r\n\t\t}\r\n\t}\r\n\r\n\t.cfgConfiguratorWrapper {\r\n\t\t@include mixins.cfgRootStyles;\r\n\t\tcolor: $textColor;\r\n\t\theight: 100%;\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t@media screen and (orientation: landscape) {\r\n\t\t.cfgConfiguratorWrapper {\r\n\t\t\tdisplay: flex;\r\n\t\t\tflex-direction: row;\r\n\r\n\t\t\t& > .cfgConfigurator {\r\n\t\t\t\tflex: 0 1 40%;\r\n\t\t\t\theight: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t& .cfgCanvasWrapper {\r\n\t\t\t\tflex: 0 1 60%;\r\n\t\t\t\theight: 85vh;\r\n\t\t\t\toverflow: hidden;\r\n\t\t\t\tposition: sticky;\r\n\t\t\t\ttop: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/**\r\n * Web UI Variables\r\n */\r\n\t\r\n$baseFontSize: 10px !default; // We use 10px for easy em conversion\r\n$overlayingZIndex: 1000 !default;\r\n","@use \"mixins\";\r\n\r\n@mixin classes {\r\n\t.cfgExpandableHeadingRow {\r\n\t\t@include mixins.cfgRootStyles;\r\n\t\t@include mixins.noButtonLook;\r\n\t\talign-items: stretch;\r\n\t\tdisplay: flex;\r\n\t\theight: 3.9em;\r\n\t\toutline: 0;\r\n\t\tposition: relative;\r\n\t\twidth: 100%;\r\n\r\n\t\t&--expandable {\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t&__title {\r\n\t\t\talign-items: center;\r\n\t\t\tdisplay: flex;\r\n\t\t\tflex: 1 1 auto;\r\n\t\t\tfont-size: 1.5em;\r\n\t\t\tfont-weight: 500;\r\n\t\t\tjustify-content: flex-start;\r\n\t\t}\r\n\r\n\t\t&__icon {\r\n\t\t\talign-items: center;\r\n\t\t\tdisplay: flex;\r\n\t\t\tflex: 0 0 5em;\r\n\t\t\tjustify-content: center;\r\n\t\t\tpadding: 0 1.5em;\r\n\t\t}\r\n\r\n\t\t@content;\r\n\t}\r\n}\r\n","@use \"mixins\";\r\n\r\n@mixin styles($color) {\r\n\t@include mixins.cfgRootStyles;\r\n\tborder: 0;\r\n\tborder-bottom: 0.1em solid $color;\r\n\tpadding: 0;\r\n\tmargin: 0;\r\n}\r\n\r\n@mixin classes($color) {\r\n\t.cfgHr {\r\n\t\t@include styles($color);\r\n\t\t@content;\r\n\t}\r\n}\r\n","/**\r\n * Web UI Feature item\r\n */\r\n\r\n@use \"mixins\";\r\n\r\n@mixin classes(\r\n\t$textColor,\r\n\t$grayTextColor,\r\n\t$checkButtonUncheckedColor,\r\n\t$checkButtonCheckedColor,\r\n\t$focusOutlineInnerColor,\r\n\t$focusOutlineOuterColor\r\n) {\r\n\t.cfgThumbnailImage {\r\n\t\tborder-radius: 0.7em;\r\n\t\tdisplay: inline-block;\r\n\t\theight: 3em;\r\n\t\twidth: 3em;\r\n\t}\r\n\r\n\t.cfgThumbnailPlaceholder {\r\n\t\talign-items: center;\r\n\t\tdisplay: flex;\r\n\t\tflex: 0 0 4.2em;\r\n\t\tjustify-content: flex-start;\r\n\t}\r\n\r\n\t.cfgFeatureItem {\r\n\t\t@include mixins.cfgRootStyles;\r\n\r\n\t\tcolor: $textColor;\r\n\r\n\t\t&__dropdown {\r\n\t\t\t@include mixins.noButtonLook;\r\n\t\t\talign-items: stretch;\r\n\t\t\tdisplay: flex;\r\n\t\t\theight: 3.9em;\r\n\t\t\toutline: 0;\r\n\t\t\tposition: relative;\r\n\t\t\twidth: 100%;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t&--optional {\r\n\t\t\tmargin-top: 1em;\r\n\t\t}\r\n\r\n\t\t&__hiddenInput {\r\n\t\t\tleft: -99999px;\r\n\t\t\topacity: 0;\r\n\t\t\tposition: absolute;\r\n\t\t\tz-index: -1;\r\n\t\t}\r\n\r\n\t\t&__radio {\r\n\t\t\t@include mixins.cfgRadio($checkButtonUncheckedColor);\r\n\t\t}\r\n\r\n\t\t&__checkbox {\r\n\t\t\t@include mixins.cfgCheckbox($checkButtonUncheckedColor);\r\n\t\t}\r\n\r\n\t\t/* The &-syntax brings in the entire path, so the second part of this rule must be explicit */\r\n\r\n\t\t&__hiddenInput:focus ~ .cfgFeatureItem__radio,\r\n\t\t&__hiddenInput:focus ~ .cfgFeatureItem__checkbox {\r\n\t\t\t@include mixins.focusOutline($focusOutlineInnerColor, $focusOutlineOuterColor);\r\n\t\t}\r\n\r\n\t\t&__hiddenInput:checked ~ .cfgFeatureItem__radio {\r\n\t\t\t@include mixins.cfgRadio($checkButtonCheckedColor);\r\n\t\t}\r\n\t\t&__hiddenInput:checked ~ .cfgFeatureItem__checkbox {\r\n\t\t\t@include mixins.cfgCheckbox($checkButtonCheckedColor);\r\n\t\t}\r\n\t}\r\n\r\n\t.cfgFeatureItemOptional__titleWrapper,\r\n\t.cfgFeatureItemOption__titleWrapper {\r\n\t\tflex: 1 1 auto;\r\n\t\tmargin-left: 1em;\r\n\t}\r\n\r\n\t.cfgFeatureItemOptional__title,\r\n\t.cfgFeatureItemOption__title {\r\n\t\tfont-size: 1.5em;\r\n\t}\r\n\r\n\t.cfgFeatureItemOption__price {\r\n\t\tfont-weight: 600;\r\n\t\tfont-size: 0.75em;\r\n\t\tcolor: $grayTextColor;\r\n\t}\r\n\r\n\t.cfgOptionTree--subLevel .cfgFeatureItem__hr {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t.cfgFeatureItemOption {\r\n\t\talign-items: center;\r\n\t\tdisplay: flex;\r\n\t}\r\n\r\n\t.cfgFeatureItemOptional {\r\n\t\talign-items: center;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t\tmargin-top: 0.5em;\r\n\r\n\t\t&__header {\r\n\t\t\tfont-size: 1.2em;\r\n\t\t\tfont-weight: 600;\r\n\t\t\tmargin: 0 0 0.3em 0;\r\n\t\t\tpadding: 0;\r\n\t\t\ttext-transform: uppercase;\r\n\t\t}\r\n\t}\r\n\r\n\t/* The last themathic break (hr) we move under the next thematic break so it appears as one */\r\n\t.cfgAdditionalProduct .cfgFeatureItem:last-child .cfgFeatureItem__hr {\r\n\t\tmargin-bottom: -0.1em;\r\n\t}\r\n}\r\n","/**\r\n * Web UI Option tree\r\n */\r\n\r\n@use \"mixins\";\r\n\r\n@mixin classes {\r\n\t.cfgOptionTree {\r\n\t\t@include mixins.cfgRootStyles;\r\n\r\n\t\tlist-style: none;\r\n\t\tmargin: 0;\r\n\t\tpadding: 0;\r\n\r\n\t\t&--topLevel {\r\n\t\t\tpadding-left: 1.7em;\r\n\t\t}\r\n\r\n\t\t&--indent {\r\n\t\t\tmargin-left: 3.2em;\r\n\t\t}\r\n\r\n\t\t&--compThumb {\r\n\t\t\tmargin-left: 4.2em;\r\n\t\t}\r\n\r\n\t\t@content;\r\n\t}\r\n}\r\n","/**\r\n * Web UI Product information\r\n */\r\n\r\n@use \"sass:math\";\r\n@use \"mixins\";\r\n\r\n@mixin classes($textColor) {\r\n\t.cfgProductInfo {\r\n\t\t@include mixins.cfgRootStyles;\r\n\r\n\t\tcolor: $textColor;\r\n\r\n\t\tdisplay: flex;\r\n\r\n\t\t&__left {\r\n\t\t\tflex: 1 1 auto;\r\n\t\t\tmin-width: 0;\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t&__right {\r\n\t\t\talign-items: flex-end;\r\n\t\t\tdisplay: flex;\r\n\t\t\tflex-direction: column;\r\n\t\t\tflex: 1 0 auto;\r\n\t\t\tmargin-left: 1em;\r\n\t\t\tmax-width: 0.333333333;\r\n\t\t\tmin-width: 0;\r\n\t\t}\r\n\r\n\t\t&__name {\r\n\t\t\tdisplay: block;\r\n\t\t\tfont-size: 1.6em;\r\n\t\t\tfont-weight: 600;\r\n\t\t\tline-height: 1.33;\r\n\t\t\tmargin: 0;\r\n\t\t}\r\n\r\n\t\t&__number {\r\n\t\t\tfont-size: 1.3em;\r\n\t\t\tfont-weight: 400;\r\n\t\t\tline-height: 1.38;\r\n\t\t\tmargin: 0;\r\n\t\t}\r\n\r\n\t\t@content;\r\n\t}\r\n}\r\n","/**\r\n * Web UI Loading\r\n */\r\n\r\n@use \"mixins\";\r\n\r\n@mixin classes(\r\n\t$textColor,\r\n\t$spinnerColor1,\r\n\t$spinnerColor2,\r\n\t$overlayBackgroundColor,\r\n\t$overlayingZIndex\r\n) {\r\n\t.cfgCenteredLoading {\r\n\t\t@include mixins.cfgRootStyles;\r\n\t\talign-items: center;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\theight: 100%;\r\n\t\tjustify-content: center;\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t.cfgOverlayLoading {\r\n\t\t@include mixins.cfgRootStyles;\r\n\r\n\t\talign-items: center;\r\n\t\tbackground-color: $overlayBackgroundColor;\r\n\t\tbottom: 0;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\tjustify-content: center;\r\n\t\tleft: 0;\r\n\t\tposition: absolute;\r\n\t\tright: 0;\r\n\t\ttop: 0;\r\n\t\tz-index: $overlayingZIndex;\r\n\r\n\t\t&--clickThrough {\r\n\t\t\tbackground-color: transparent;\r\n\t\t\tpointer-events: none;\r\n\r\n\t\t\t.cfgLoadingWithText {\r\n\t\t\t\tpadding: 2em 2em 1.8em;\r\n\t\t\t\tborder-radius: 0.8em;\r\n\t\t\t\tbackground-color: $overlayBackgroundColor;\r\n\t\t\t\topacity: 0.8;\r\n\t\t\t\tborder: 0.1em solid $spinnerColor2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&--fullWindow {\r\n\t\t\tposition: fixed;\r\n\t\t\tz-index: #{$overlayingZIndex + 1};\r\n\t\t}\r\n\t}\r\n\r\n\t.cfgLoadingWithText {\r\n\t\t@include mixins.cfgRootStyles;\r\n\t\t@include mixins.cfgDefaultFont;\r\n\r\n\t\ttext-align: center;\r\n\r\n\t\t&__text {\r\n\t\t\tcolor: $textColor;\r\n\t\t\tfont-weight: 600;\r\n\t\t\tmargin-top: 0.5em;\r\n\t\t\tfont-size: 1.6em;\r\n\t\t}\r\n\t}\r\n\r\n\t.cfgLoading {\r\n\t\t@include mixins.cfgRootStyles;\r\n\r\n\t\tanimation: rotate 1.1s linear 0s infinite;\r\n\t\tborder-radius: 100%;\r\n\t\tborder: 0.5em solid $spinnerColor2;\r\n\t\tborder-bottom-color: $spinnerColor1;\r\n\t\tdisplay: inline-block;\r\n\t\theight: 3em;\r\n\t\twidth: 3em;\r\n\r\n\t\t&--small {\r\n\t\t\tborder-width: 0.4em;\r\n\t\t\theight: 2em;\r\n\t\t\twidth: 2em;\r\n\t\t}\r\n\t}\r\n\r\n\t@keyframes rotate {\r\n\t\tfrom {\r\n\t\t\ttransform: rotate(0deg);\r\n\t\t}\r\n\t\tto {\r\n\t\t\ttransform: rotate(360deg);\r\n\t\t}\r\n\t}\r\n}\r\n","@use \"mixins\";\r\n\r\n// The origins of this SCSS file is here:\r\n// https://css-tricks.com/sliding-nightmare-understanding-range-input/\r\n\r\n$trackHeight: 0.2em !default;\r\n$thumbDiameter: 2.8em !default;\r\n\r\n@mixin track($trackColor) {\r\n\tbox-sizing: border-box;\r\n\tborder: none;\r\n\theight: $trackHeight;\r\n\tbackground: $trackColor;\r\n}\r\n\r\n@mixin thumb($thumbColor, $thumbShadowColor) {\r\n\tbox-sizing: border-box;\r\n\tborder: none;\r\n\twidth: $thumbDiameter;\r\n\theight: $thumbDiameter;\r\n\tborder-radius: 50%;\r\n\tbackground: $thumbColor;\r\n\tbox-shadow: 0 0.15em 0.45em 0.05em $thumbShadowColor;\r\n}\r\n\r\n@mixin classes($trackColor, $thumbColor, $thumbShadowColor) {\r\n\t.cfgSlider {\r\n\t\t@include mixins.cfgRootStyles;\r\n\r\n\t\t&,\r\n\t\t&::-webkit-slider-thumb {\r\n\t\t\t-webkit-appearance: none;\r\n\t\t}\r\n\r\n\t\tflex: 1;\r\n\t\tmargin: 0;\r\n\t\tpadding: 0;\r\n\t\tmin-height: $thumbDiameter;\r\n\t\tbackground: transparent;\r\n\t\tfont: inherit;\r\n\r\n\t\t&::-webkit-slider-runnable-track {\r\n\t\t\t@include track($trackColor);\r\n\t\t}\r\n\t\t&::-moz-range-track {\r\n\t\t\t@include track($trackColor);\r\n\t\t}\r\n\t\t&::-ms-track {\r\n\t\t\t@include track($trackColor);\r\n\t\t}\r\n\r\n\t\t&::-webkit-slider-thumb {\r\n\t\t\tmargin-top: 0.5 * ($trackHeight - $thumbDiameter);\r\n\t\t\t@include thumb($thumbColor, $thumbShadowColor);\r\n\t\t}\r\n\t\t&::-moz-range-thumb {\r\n\t\t\t@include thumb($thumbColor, $thumbShadowColor);\r\n\t\t}\r\n\t\t&::-ms-thumb {\r\n\t\t\tmargin-top: 0;\r\n\t\t\t@include thumb($thumbColor, $thumbShadowColor);\r\n\t\t}\r\n\r\n\t\t&::-ms-tooltip {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\r\n\t\t@content;\r\n\t}\r\n}\r\n","@use \"../mixins\";\r\n\r\n@mixin classes($colorActive, $colorPassive) {\r\n\t.cfgCheckmark {\r\n\t\t/* The distance-units inside the checkmark are px even though everything\r\n\t\t else is relative units. The SVG has its own coordinate space. */\r\n\r\n\t\t@include mixins.cfgRootStyles;\r\n\r\n\t\tdisplay: inline-block;\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\r\n\t\t&__container {\r\n\t\t\ttransition: transform 0.4s;\r\n\t\t\ttransform: translateY(17px);\r\n\t\t}\r\n\r\n\t\t&__line {\r\n\t\t\tstroke: $colorActive;\r\n\t\t\tstroke-linecap: round;\r\n\t\t\tstroke-width: 12;\r\n\t\t\ttransform-origin: 50px 50px;\r\n\t\t\ttransition: transform 0.4s, stroke 0.4s;\r\n\t\t}\r\n\r\n\t\t&__lineLeft {\r\n\t\t\tstroke: $colorActive;\r\n\t\t\ttransform: rotate(40deg) translateY(24px) translateX(18px);\r\n\t\t}\r\n\r\n\t\t&__lineRight {\r\n\t\t\tstroke: $colorActive;\r\n\t\t\ttransform: rotate(-50deg) translateY(-2px) translateX(-3px);\r\n\t\t}\r\n\r\n\t\t@content;\r\n\r\n\t\t&__border {\r\n\t\t\t@include mixins.cfgCheckbox($colorPassive);\r\n\t\t\t&--active {\r\n\t\t\t\t@include mixins.cfgCheckbox($colorActive);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","@use \"../mixins\";\r\n\r\n@mixin classes($activeColor, $passiveColor) {\r\n\t.cfgChevron {\r\n\t\t/* The distance-units inside the chevron are px even though everything\r\n\t\t else is relative units. The SVG has its own coordinate space. */\r\n\r\n\t\t@include mixins.cfgRootStyles;\r\n\r\n\t\tdisplay: inline-block;\r\n\t\twidth: 100%;\r\n\r\n\t\t&__container {\r\n\t\t\ttransition: transform 0.4s;\r\n\r\n\t\t\t&--down {\r\n\t\t\t\ttransform: translateY(13px);\r\n\t\t\t}\r\n\r\n\t\t\t&--up {\r\n\t\t\t\ttransform: translateY(-13px);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&__line {\r\n\t\t\tstroke-linecap: round;\r\n\t\t\tstroke-width: 10;\r\n\t\t\ttransform-origin: 50px 50px;\r\n\t\t\ttransition: transform 0.4s, stroke 0.4s;\r\n\t\t}\r\n\r\n\t\t&__lineLeft,\r\n\t\t&__lineRight {\r\n\t\t\t&--active {\r\n\t\t\t\tstroke: $activeColor;\r\n\t\t\t}\r\n\t\t\t&--passive {\r\n\t\t\t\tstroke: $passiveColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&__lineLeft {\r\n\t\t\t&--down {\r\n\t\t\t\ttransform: rotate(40deg);\r\n\t\t\t}\r\n\t\t\t&--up {\r\n\t\t\t\ttransform: rotate(-40deg);\r\n\t\t\t}\r\n\t\t}\r\n\t\t&__lineRight {\r\n\t\t\t&--down {\r\n\t\t\t\ttransform: rotate(-40deg);\r\n\t\t\t}\r\n\r\n\t\t\t&--up {\r\n\t\t\t\ttransform: rotate(40deg);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@content;\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../src/scss/_range-view.scss","../../src/scss/web-ui.scss","../../src/scss/_utilities.scss","../../src/scss/_button.scss","../../src/scss/_mixins.scss","../../src/scss/_themed.scss","../../src/scss/_configurator.scss","../../src/scss/_variables.scss","../../src/scss/_expandable.scss","../../src/scss/_hr.scss","../../src/scss/_feature-item.scss","../../src/scss/_option-tree.scss","../../src/scss/_product-information.scss","../../src/scss/_loading.scss","../../src/scss/_slider.scss","../../src/scss/icons/_checkmark.scss","../../src/scss/icons/_chevron.scss"],"names":[],"mappings":"AACC,sBACC,YAAA,CACA,kBCqBF,CDlBC,4BACC,eAAA,CACA,WAAA,CACA,gBCoBF,CDjBC,0BACC,eAAA,CACA,gBCmBF,CDhBC,sCACC,eAAA,CACA,WCkBF,CDfC,qBACC,cAAA,CACA,eAAA,CACA,UCiBF,CCtCA,QACC,eD4CD,CCzCA,QACC,cD4CD,CCzCA,QACC,iBD4CD,CCzCA,iBACC,eAAA,CACA,sBAAA,CACA,kBD4CD,CExCC,WCRA,qBAAA,CDRA,oBAAA,CACA,4BAAA,CACA,UE8EC,CF7ED,kBAAA,CACA,yBAAA,CACA,eAAA,CACA,eAAA,CACA,YAAA,CACA,iBFoED,CGnEC,mCAEC,kBHoEF,CG7DC,aAVA,qBH0ED,CGzEC,qCAEC,kBH0EF,CE3EC,iBCNA,4CHoFD,CEpEC,cCZA,qBHoFD,CGnFC,yCAEC,kBHoFF,CG7EC,gBAVA,qBH0FD,CGzFC,2CAEC,kBH0FF,CE9EG,qCACC,eFgFJ,CKxGC,iBFQA,qBAAA,CAgBA,iIAAA,CErBC,cCNa,CDOb,UDiF4C,CChF5C,WL2GF,CGvGC,+CAEC,kBHwGF,CGjGC,mBAVA,qBH8GD,CG7GC,iDAEC,kBH8GF,CKjHC,uBACC,gCAAA,CACA,yBAAA,CACA,iBLoHF,CKlHE,gCACC,cLoHH,CKhHC,qBACC,eLmHF,CKhHC,kBFdA,qBAAA,CEgBC,iBAAA,CACA,YAAA,CACA,wBAAA,CAAA,gBLmHF,CGpIC,iDAEC,kBHqIF,CG9HC,oBAVA,qBH2ID,CG1IC,mDAEC,kBH2IF,CK1HE,yBACC,YL4HH,CKxHC,wBFzBA,qBAAA,CE2BC,UDkD4C,CCjD5C,WAAA,CACA,UL2HF,CGvJC,6DAEC,kBHwJF,CGjJC,0BAVA,qBH8JD,CG7JC,+DAEC,kBH8JF,CKjIC,0CACC,wBACC,YAAA,CACA,kBLoID,CKlIC,yCACC,YAAA,CACA,WLoIF,CKjIC,0CACC,YAAA,CACA,WAAA,CACA,eAAA,CACA,eAAA,CACA,KLmIF,CACF,CO/LC,yBJYA,qBAAA,CAdA,uBAAA,CAAA,eAAA,CACA,mBAAA,CACA,iBAAA,CACA,aAAA,CACA,eAAA,CACA,WAAA,CACA,SAAA,CIDC,mBAAA,CACA,YAAA,CACA,YAAA,CACA,SAAA,CACA,iBAAA,CACA,UPuMF,CGlMC,+DAEC,kBHmMF,CG5LC,2BAVA,qBHyMD,CGxMC,iEAEC,kBHyMF,CO9ME,qCACC,cPgNH,CO7ME,gCACC,kBAAA,CACA,YAAA,CACA,aAAA,CACA,eAAA,CACA,eAAA,CACA,0BP+MH,CO5ME,+BACC,kBAAA,CACA,YAAA,CACA,YAAA,CACA,sBAAA,CACA,eP8MH,CQlOC,OLIA,qBAAA,CKXA,QAAA,CACA,gCAAA,CACA,SAAA,CACA,QR8OD,CGrOC,2BAEC,kBHsOF,CG/NC,SAVA,qBH4OD,CG3OC,6BAEC,kBH4OF,CShPC,mBACC,kBAAA,CACA,oBAAA,CACA,UAAA,CACA,STmPF,CShPC,yBACC,kBAAA,CACA,YAAA,CACA,cAAA,CACA,0BTmPF,CShPC,gBNbA,qBAAA,CMgBC,UTmPF,CGlQC,6CAEC,kBHmQF,CG5PC,kBAVA,qBHyQD,CGxQC,+CAEC,kBHyQF,CS1PE,0BNhCD,uBAAA,CAAA,eAAA,CACA,mBAAA,CACA,iBAAA,CACA,aAAA,CACA,eAAA,CACA,WAAA,CACA,SAAA,CM4BE,mBAAA,CACA,YAAA,CACA,YAAA,CACA,SAAA,CACA,iBAAA,CACA,UAAA,CACA,cTkQH,CS/PE,0BACC,cTiQH,CS9PE,6BACC,aAAA,CACA,SAAA,CACA,iBAAA,CACA,UTgQH,CS7PE,uBNlBD,yBAAA,CAiBA,iBH0QD,CSrQE,iDNvBD,kBAAA,CAEA,YAAA,CACA,aAAA,CACA,YAAA,CACA,sBAAA,CACA,mBAAA,CACA,wBAAA,CAAA,gBAAA,CACA,WHgSD,CSjRE,0BNtBD,yBAAA,CAYA,kBH2RD,CS3QE,uHNtDD,4CHoUD,CSzQE,4DNjCD,sBAAA,CAiBA,iBHqSD,CSlRE,2HNrCD,kBAAA,CAEA,YAAA,CACA,aAAA,CACA,YAAA,CACA,sBAAA,CACA,mBAAA,CACA,wBAAA,CAAA,gBAAA,CACA,WH2TD,CS9RE,+DNpCD,sBAAA,CAYA,kBHsTD,CSzRC,0EAEC,aAAA,CACA,eT4RF,CSzRC,4DAEC,eT4RF,CSzRC,6BACC,eAAA,CACA,eAAA,CACA,UT4RF,CSzRC,6CACC,YT4RF,CSpRC,8CAJC,kBAAA,CACA,YTmSF,CShSC,wBAGC,sBAAA,CACA,eT4RF,CS1RE,gCACC,eAAA,CACA,eAAA,CACA,eAAA,CACA,SAAA,CACA,wBT4RH,CSvRC,qEACC,mBT2RF,CU7YC,ePQA,qBAAA,COLC,eAAA,CACA,QAAA,CACA,SV+YF,CG3YC,2CAEC,kBH4YF,CGrYC,iBAVA,qBHkZD,CGjZC,6CAEC,kBHkZF,CUtZE,yBACC,kBVwZH,CUrZE,uBACC,iBVuZH,CUpZE,0BACC,iBVsZH,CWraC,gBROA,qBAAA,CQJC,UP6FoC,CO3FpC,YXsaF,CGnaC,6CAEC,kBHoaF,CG7ZC,kBAVA,qBH0aD,CGzaC,+CAEC,kBH0aF,CW7aE,sBACC,aAAA,CACA,WAAA,CACA,eX+aH,CW5aE,uBACC,oBAAA,CACA,YAAA,CACA,qBAAA,CACA,aAAA,CACA,eAAA,CACA,oBAAA,CACA,WX8aH,CW3aE,sBACC,aAAA,CACA,eAAA,CACA,eAAA,CACA,gBAAA,CACA,QX6aH,CW1aE,wBACC,eAAA,CACA,eAAA,CACA,gBAAA,CACA,QX4aH,CY1cC,oBTEA,qBAAA,CSAC,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,WAAA,CACA,sBAAA,CACA,UZ6cF,CGjdC,qDAEC,kBHkdF,CG3cC,sBAVA,qBHwdD,CGvdC,uDAEC,kBHwdF,CYndC,mBTRA,qBAAA,CSWC,kBAAA,CACA,qBRkFA,CQjFA,QAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,MAAA,CACA,iBAAA,CACA,OAAA,CACA,KAAA,CACA,YZqdF,CGzeC,mDAEC,kBH0eF,CGneC,qBAVA,qBHgfD,CG/eC,qDAEC,kBHgfF,CY5dE,iCACC,4BAAA,CACA,mBZ8dH,CY5dG,qDACC,qBAAA,CACA,kBAAA,CACA,qBRgEF,CQ/DE,UAAA,CACA,iCZ8dJ,CY1dE,+BACC,cAAA,CACA,YZ4dH,CYxdC,oBT1CA,qBAAA,CAgBA,iIAAA,CS8BC,iBZ0dF,CGvgBC,qDAEC,kBHwgBF,CGjgBC,sBAVA,qBH8gBD,CG7gBC,uDAEC,kBH8gBF,CYjeE,0BACC,UR0CD,CQzCC,eAAA,CACA,eAAA,CACA,eZmeH,CY/dC,YTxDA,qBAAA,CS2DC,wCAAA,CACA,kBAAA,CAEA,iCR8BA,CQ9BA,wBR8BA,CQ7BA,oBAAA,CACA,UAAA,CACA,SZieF,CGjiBC,qCAEC,kBHkiBF,CG3hBC,cAVA,qBHwiBD,CGviBC,uCAEC,kBHwiBF,CYxeE,mBACC,iBAAA,CACA,UAAA,CACA,SZ0eH,CariBC,WVXA,qBAAA,CUmBC,MAAA,CACA,QAAA,CACA,SAAA,CACA,gBA/Bc,CAgCd,sBAAA,CACA,Yb0iBF,CGjkBC,mCAEC,kBHkkBF,CG3jBC,aAVA,qBHwkBD,CGvkBC,qCAEC,kBHwkBF,Ca7jBE,4CAEC,uBb8jBH,CapjBE,0CAhCD,qBAAA,CACA,WAAA,CACA,WANa,CAOb,ebulBD,CavjBE,6BAnCD,qBAAA,CACA,WAAA,CACA,WANa,CAOb,eb6lBD,Ca1jBE,sBAtCD,qBAAA,CACA,WAAA,CACA,WANa,CAOb,ebmmBD,Ca5jBE,iCACC,iBAAA,CApCF,qBAAA,CACA,WAAA,CACA,WAZe,CAaf,YAbe,CAcf,iBAAA,CACA,eT8FC,CS7FD,mCbmmBD,CalkBE,6BAvCD,qBAAA,CACA,WAAA,CACA,WAZe,CAaf,YAbe,CAcf,iBAAA,CACA,eT8FC,CS7FD,mCb4mBD,CaxkBE,sBACC,YAAA,CA3CF,qBAAA,CACA,WAAA,CACA,WAZe,CAaf,YAbe,CAcf,iBAAA,CACA,eT8FC,CS7FD,mCbsnBD,Ca7kBE,wBACC,Yb+kBH,Cc5oBC,cXYA,qBAAA,CWNC,oBAAA,CACA,UAAA,CACA,Wd6oBF,CGxoBC,yCAEC,kBHyoBF,CGloBC,gBAVA,qBH+oBD,CG9oBC,2CAEC,kBH+oBF,CcppBE,yBACC,wBAAA,CACA,0BdspBH,CcnpBE,oBACC,WVoGD,CUnGC,oBAAA,CACA,eAAA,CACA,0BAAA,CACA,mCdqpBH,CclpBE,wBACC,WV4FD,CU3FC,yDdopBH,CcjpBE,yBACC,WVuFD,CUtFC,0DdmpBH,Cc9oBE,sBXDD,yBAAA,CAYA,kBH+oBD,CcxpBG,oDXJF,kBAAA,CAEA,YAAA,CACA,aAAA,CACA,YAAA,CACA,sBAAA,CACA,mBAAA,CACA,wBAAA,CAAA,gBAAA,CACA,WHgqBD,CcpqBG,8BXHF,sBAAA,CAYA,kBH2pBD,CezsBC,YZYA,qBAAA,CYNC,oBAAA,CACA,Uf0sBF,CGpsBC,qCAEC,kBHqsBF,CG9rBC,cAVA,qBH2sBD,CG1sBC,uCAEC,kBH2sBF,CejtBE,uBACC,wBfmtBH,CejtBG,6BACC,0BfmtBJ,CehtBG,2BACC,2BfktBJ,Ce9sBE,kBACC,oBAAA,CACA,eAAA,CACA,0BAAA,CACA,mCfgtBH,Ce3sBG,6DACC,Wf6sBJ,Ce3sBG,+DACC,cf6sBJ,CexsBG,4BACC,uBf0sBJ,CensBG,uDACC,wBfwsBJ,CersBG,2BACC,uBfusBJ,CEvuBC,yBCRA,qBAAA,CDRA,oBAAA,CACA,4BAAA,CACA,aE8EC,CF7ED,kBAAA,CACA,yBAAA,CACA,eAAA,CACA,eAAA,CACA,YAAA,CACA,iBF+vBD,CG9vBC,+DAEC,kBH+vBF,CGxvBC,2BAVA,qBHqwBD,CGpwBC,iEAEC,kBHqwBF,CEtwBC,+BCNA,+CH+wBD,CE/vBC,4BCZA,qBH8wBD,CG7wBC,qEAEC,kBH8wBF,CGvwBC,8BAVA,qBHoxBD,CGnxBC,uEAEC,kBHoxBF,CExwBG,mDACC,eF0wBJ,CKlyBC,+BFQA,qBAAA,CAgBA,iIAAA,CErBC,cCNa,CDOb,aDiF4C,CChF5C,WLoyBF,CGhyBC,2EAEC,kBHiyBF,CG1xBC,iCAVA,qBHuyBD,CGtyBC,6EAEC,kBHuyBF,CK1yBC,qCACC,gCAAA,CACA,yBAAA,CACA,iBL4yBF,CK1yBE,8CACC,cL4yBH,CKxyBC,mCACC,eL0yBF,CKvyBC,gCFdA,qBAAA,CEgBC,iBAAA,CACA,YAAA,CACA,wBAAA,CAAA,gBLyyBF,CG1zBC,6EAEC,kBH2zBF,CGpzBC,kCAVA,qBHi0BD,CGh0BC,+EAEC,kBHi0BF,CKhzBE,uCACC,YLkzBH,CK9yBC,sCFzBA,qBAAA,CE2BC,aDkD4C,C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","file":"web-ui.css","sourcesContent":[".cfgRangeView {\n\t&__inputs {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t&__number-input {\n\t\tfont-size: 1.5em;\n\t\tflex-grow: 1;\n\t\ttext-align: right;\n\t}\n\n\t&__unit-label {\n\t\tfont-size: 1.5em;\n\t\tmargin-left: 0.3em;\n\t}\n\n\t&__slider-input.cfgSlider {\n\t\tmargin-left: 1em;\n\t\tflex-grow: 3;\n\t}\n\n\t&__error {\n\t\tmargin-top: 1em;\n\t\tfont-size: 1.5em;\n\t\tcolor: #b00;\n\t}\n}\n","/**\n* Web UI Styling\n*/\n\n@use \"themed\";\n\n@include themed.themed(themed.$lightTheme);\n\n.cfgDarkTheme {\n\t@include themed.themed(themed.$darkTheme);\n}\n","/**\n * Web UI Utilities\n */\n\n.cfgMl1 {\n\tmargin-left: 1em;\n}\n\n.cfgMt1 {\n\tmargin-top: 1em;\n}\n\n.cfgMb1 {\n\tmargin-bottom: 1em;\n}\n\n.cfgTextOverflow {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n","/**\n * Web UI Product information\n */\n@use \"mixins\";\n\n@mixin styles($textColor, $borderColor, $focusOutlineInnerColor, $focusOutlineOuterColor) {\n\t@include mixins.cfgRootStyles;\n\tdisplay: inline-block;\n\tbackground-color: transparent;\n\tcolor: $textColor;\n\tborder-radius: 0.3em;\n\tborder: 0.1em solid $borderColor;\n\tfont-size: 1.3em;\n\tfont-weight: 500;\n\toutline: none;\n\tpadding: 0.4em 0.8em;\n\n\t&:focus {\n\t\t@include mixins.focusOutline($focusOutlineInnerColor, $focusOutlineOuterColor);\n\t}\n}\n\n@mixin classes($textColor, $borderColor, $focusOutlineInnerColor, $focusOutlineOuterColor) {\n\t.cfgButton {\n\t\t@include styles($textColor, $borderColor, $focusOutlineInnerColor, $focusOutlineOuterColor);\n\t}\n\n\t.cfgButtonRow {\n\t\t@include mixins.cfgRootStyles;\n\t\t&__button {\n\t\t\t&:nth-child(n + 2) {\n\t\t\t\tmargin-left: 1em;\n\t\t\t}\n\t\t}\n\t}\n}\n","@mixin noButtonLook {\n\tappearance: none;\n\tfont-family: inherit;\n\tfont-size: inherit;\n\tcolor: inherit;\n\tbackground: none;\n\tborder: none;\n\tpadding: 0;\n}\n\n@mixin focusOutline($focusOutlineInnerColor, $focusOutlineOuterColor) {\n\tbox-shadow: 0 0 0 0.075em $focusOutlineInnerColor, 0 0 0 0.2em $focusOutlineOuterColor;\n}\n\n@mixin borderBox {\n\tbox-sizing: border-box;\n\t&:before,\n\t&:after {\n\t\tbox-sizing: inherit;\n\t}\n}\n\n@mixin cfgRootStyles {\n\t@include borderBox;\n\n\t* {\n\t\t@include borderBox;\n\t}\n}\n\n@mixin cfgDefaultFont {\n\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif,\n\t\t\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n}\n\n@mixin cfgCheckAndRadio($color) {\n\talign-items: center;\n\tborder: 0.2em solid $color;\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\theight: 2.2em;\n\tjustify-content: center;\n\tpointer-events: none;\n\tuser-select: none;\n\twidth: 2.2em;\n}\n\n@mixin cfgCheckbox($color) {\n\t@include cfgCheckAndRadio($color);\n\tborder-radius: 0.3em;\n}\n\n@mixin cfgRadio($color) {\n\t@include cfgCheckAndRadio($color);\n\tborder-radius: 50%;\n}\n","@use \"sass:map\";\n@use \"sass:color\";\n\n@use \"variables\" as v;\n\n// Components\n@use \"button\";\n\n@use \"configurator\";\n@use \"expandable\";\n@use \"hr\";\n@use \"feature-item\";\n@use \"option-tree\";\n@use \"product-information\";\n@use \"loading\";\n@use \"slider\";\n@use \"range-view\";\n\n// Icons\n@use \"icons/checkmark\";\n@use \"icons/chevron\";\n\n// Utilities\n@use \"utilities\";\n\n/* Colors */\n\n$black: hsl(0, 0%, 0%) !default;\n$white: hsl(0, 0%, 100%) !default;\n$darkGrey: hsl(0, 0%, 15%) !default;\n\n/* Specific colors */\n\n$border: hsl(252, 5%, 79%) !default;\n$borderDark: hsl(0, 0%, 73%) !default;\n$focusOutlineOuter: hsl(0, 0%, 13%) !default;\n$sliderTrack: #666 !default;\n$spinner2: hsla(0, 0%, 0%, 0.15);\n$grayText: hsl(0, 0%, 50%) !default;\n$text: hsl(0, 0%, 20%) !default;\n/* As convention we assume the default theme when naming colors,\n as attempts at generic naming often leads to confussion */\n$lightTheme: (\n\t\"black\": $black,\n\t\"border\": $border,\n\t\"borderDark\": $borderDark,\n\t\"checkButtonChecked\": $black,\n\t\"checkButtonUnchecked\": $border,\n\t\"chevronActive\": $black,\n\t\"chevronPassive\": $borderDark,\n\t\"divider\": $border,\n\t\"focusOutlineInner\": $white,\n\t\"focusOutlineOuter\": $text,\n\t\"grayText\": $grayText,\n\t\"overlayBackground\": $white,\n\t\"sliderThumb\": $white,\n\t\"sliderThumbShadow\": $sliderTrack,\n\t\"sliderTrack\": $sliderTrack,\n\t\"spinner1\": $black,\n\t\"spinner2\": $spinner2,\n\t\"text\": $text,\n\t\"white\": $white,\n) !default;\n\n@function invertLightness($color) {\n\t@return color.change(\n\t\t$color,\n\t\t$lightness: 100 - color.lightness($color) * 0.8\n\t); // We scale with 80% to have a bit more contrast\n}\n\n@function invertLightnessList($list) {\n\t@each $key, $color in $list {\n\t\t$list: map.set($list, $key, invertLightness($color));\n\t}\n\t@return $list;\n}\n\n$darkTheme: invertLightnessList($lightTheme);\n\n$themes: (\n\t\"light\": $lightTheme,\n\t\"dark\": $darkTheme,\n);\n\n@mixin themed($ct, $baseFontSize: v.$baseFontSize, $overlayingZIndex: v.$overlayingZIndex) {\n\t@include button.classes(\n\t\tmap.get($ct, \"text\"),\n\t\tmap.get($ct, \"borderDark\"),\n\t\tmap.get($ct, \"focusOutlineInner\"),\n\t\tmap.get($ct, \"focusOutlineOuter\")\n\t);\n\t@include configurator.classes($baseFontSize, map.get($ct, \"text\"), map.get($ct, \"divider\"));\n\t@include expandable.classes;\n\t@include hr.classes(map.get($ct, \"divider\"));\n\t@include feature-item.classes(\n\t\tmap.get($ct, \"text\"),\n\t\tmap.get($ct, \"grayText\"),\n\t\tmap.get($ct, \"checkButtonUnchecked\"),\n\t\tmap.get($ct, \"checkButtonChecked\"),\n\t\tmap.get($ct, \"focusOutlineInner\"),\n\t\tmap.get($ct, \"focusOutlineOuter\")\n\t);\n\t@include option-tree.classes;\n\t@include product-information.classes(map.get($ct, \"text\"));\n\t@include loading.classes(\n\t\tmap.get($ct, \"black\"),\n\t\tmap.get($ct, \"spinner1\"),\n\t\tmap.get($ct, \"spinner2\"),\n\t\tmap.get($ct, \"overlayBackground\"),\n\t\t$overlayingZIndex\n\t);\n\n\t@include slider.classes(\n\t\tmap.get($ct, \"sliderTrack\"),\n\t\tmap.get($ct, \"sliderThumb\"),\n\t\tmap.get($ct, \"sliderThumbShadow\")\n\t);\n\t@include checkmark.classes(\n\t\tmap.get($ct, \"checkButtonChecked\"),\n\t\tmap.get($ct, \"checkButtonUnchecked\")\n\t);\n\t@include chevron.classes(map.get($ct, \"chevronActive\"), map.get($ct, \"chevronPassive\"));\n}\n","/**\n * Web UI Configurator\n */\n\n@use \"mixins\";\n\n@mixin classes($fontSize, $textColor, $headerUnderlineColor) {\n\t.cfgConfigurator {\n\t\t@include mixins.cfgRootStyles;\n\t\t@include mixins.cfgDefaultFont;\n\t\tfont-size: $fontSize;\n\t\tcolor: $textColor;\n\t\tmin-width: 0;\n\t}\n\n\t.cfgConfiguratorHeader {\n\t\tborder-bottom: 0.1em solid $headerUnderlineColor;\n\t\tpadding: 1.7em 1.7em 1.9em;\n\t\tposition: relative;\n\n\t\t&__actions {\n\t\t\tmargin-top: 1em;\n\t\t}\n\t}\n\n\t.cfgConfiguratorTree {\n\t\tpadding-top: 1em;\n\t}\n\n\t.cfgCanvasWrapper {\n\t\t@include mixins.cfgRootStyles;\n\t\tposition: relative;\n\t\theight: 50rem;\n\t\tuser-select: none;\n\n\t\t& canvas {\n\t\t\toutline: none;\n\t\t}\n\t}\n\n\t.cfgConfiguratorWrapper {\n\t\t@include mixins.cfgRootStyles;\n\t\tcolor: $textColor;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n\n\t@media screen and (orientation: landscape) {\n\t\t.cfgConfiguratorWrapper {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\n\t\t\t& > .cfgConfigurator {\n\t\t\t\tflex: 0 1 40%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\n\t\t\t& .cfgCanvasWrapper {\n\t\t\t\tflex: 0 1 60%;\n\t\t\t\theight: 85vh;\n\t\t\t\toverflow: hidden;\n\t\t\t\tposition: sticky;\n\t\t\t\ttop: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * Web UI Variables\n */\n\t\n$baseFontSize: 10px !default; // We use 10px for easy em conversion\n$overlayingZIndex: 1000 !default;\n","@use \"mixins\";\n\n@mixin classes {\n\t.cfgExpandableHeadingRow {\n\t\t@include mixins.cfgRootStyles;\n\t\t@include mixins.noButtonLook;\n\t\talign-items: stretch;\n\t\tdisplay: flex;\n\t\theight: 3.9em;\n\t\toutline: 0;\n\t\tposition: relative;\n\t\twidth: 100%;\n\n\t\t&--expandable {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\t&__title {\n\t\t\talign-items: center;\n\t\t\tdisplay: flex;\n\t\t\tflex: 1 1 auto;\n\t\t\tfont-size: 1.5em;\n\t\t\tfont-weight: 500;\n\t\t\tjustify-content: flex-start;\n\t\t}\n\n\t\t&__icon {\n\t\t\talign-items: center;\n\t\t\tdisplay: flex;\n\t\t\tflex: 0 0 5em;\n\t\t\tjustify-content: center;\n\t\t\tpadding: 0 1.5em;\n\t\t}\n\n\t\t@content;\n\t}\n}\n","@use \"mixins\";\n\n@mixin styles($color) {\n\t@include mixins.cfgRootStyles;\n\tborder: 0;\n\tborder-bottom: 0.1em solid $color;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n@mixin classes($color) {\n\t.cfgHr {\n\t\t@include styles($color);\n\t\t@content;\n\t}\n}\n","/**\n * Web UI Feature item\n */\n\n@use \"mixins\";\n\n@mixin classes(\n\t$textColor,\n\t$grayTextColor,\n\t$checkButtonUncheckedColor,\n\t$checkButtonCheckedColor,\n\t$focusOutlineInnerColor,\n\t$focusOutlineOuterColor\n) {\n\t.cfgThumbnailImage {\n\t\tborder-radius: 0.7em;\n\t\tdisplay: inline-block;\n\t\theight: 3em;\n\t\twidth: 3em;\n\t}\n\n\t.cfgThumbnailPlaceholder {\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tflex: 0 0 4.2em;\n\t\tjustify-content: flex-start;\n\t}\n\n\t.cfgFeatureItem {\n\t\t@include mixins.cfgRootStyles;\n\n\t\tcolor: $textColor;\n\n\t\t&__dropdown {\n\t\t\t@include mixins.noButtonLook;\n\t\t\talign-items: stretch;\n\t\t\tdisplay: flex;\n\t\t\theight: 3.9em;\n\t\t\toutline: 0;\n\t\t\tposition: relative;\n\t\t\twidth: 100%;\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\t&--optional {\n\t\t\tmargin-top: 1em;\n\t\t}\n\n\t\t&__hiddenInput {\n\t\t\tleft: -99999px;\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tz-index: -1;\n\t\t}\n\n\t\t&__radio {\n\t\t\t@include mixins.cfgRadio($checkButtonUncheckedColor);\n\t\t}\n\n\t\t&__checkbox {\n\t\t\t@include mixins.cfgCheckbox($checkButtonUncheckedColor);\n\t\t}\n\n\t\t/* The &-syntax brings in the entire path, so the second part of this rule must be explicit */\n\n\t\t&__hiddenInput:focus ~ .cfgFeatureItem__radio,\n\t\t&__hiddenInput:focus ~ .cfgFeatureItem__checkbox {\n\t\t\t@include mixins.focusOutline($focusOutlineInnerColor, $focusOutlineOuterColor);\n\t\t}\n\n\t\t&__hiddenInput:checked ~ .cfgFeatureItem__radio {\n\t\t\t@include mixins.cfgRadio($checkButtonCheckedColor);\n\t\t}\n\t\t&__hiddenInput:checked ~ .cfgFeatureItem__checkbox {\n\t\t\t@include mixins.cfgCheckbox($checkButtonCheckedColor);\n\t\t}\n\t}\n\n\t.cfgFeatureItemOptional__titleWrapper,\n\t.cfgFeatureItemOption__titleWrapper {\n\t\tflex: 1 1 auto;\n\t\tmargin-left: 1em;\n\t}\n\n\t.cfgFeatureItemOptional__title,\n\t.cfgFeatureItemOption__title {\n\t\tfont-size: 1.5em;\n\t}\n\n\t.cfgFeatureItemOption__price {\n\t\tfont-weight: 600;\n\t\tfont-size: 0.75em;\n\t\tcolor: $grayTextColor;\n\t}\n\n\t.cfgOptionTree--subLevel .cfgFeatureItem__hr {\n\t\tdisplay: none;\n\t}\n\n\t.cfgFeatureItemOption {\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t}\n\n\t.cfgFeatureItemOptional {\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin-top: 0.5em;\n\n\t\t&__header {\n\t\t\tfont-size: 1.2em;\n\t\t\tfont-weight: 600;\n\t\t\tmargin: 0 0 0.3em 0;\n\t\t\tpadding: 0;\n\t\t\ttext-transform: uppercase;\n\t\t}\n\t}\n\n\t/* The last themathic break (hr) we move under the next thematic break so it appears as one */\n\t.cfgAdditionalProduct .cfgFeatureItem:last-child .cfgFeatureItem__hr {\n\t\tmargin-bottom: -0.1em;\n\t}\n}\n","/**\n * Web UI Option tree\n */\n\n@use \"mixins\";\n\n@mixin classes {\n\t.cfgOptionTree {\n\t\t@include mixins.cfgRootStyles;\n\n\t\tlist-style: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\n\t\t&--topLevel {\n\t\t\tpadding-left: 1.7em;\n\t\t}\n\n\t\t&--indent {\n\t\t\tmargin-left: 3.2em;\n\t\t}\n\n\t\t&--compThumb {\n\t\t\tmargin-left: 4.2em;\n\t\t}\n\n\t\t@content;\n\t}\n}\n","/**\n * Web UI Product information\n */\n\n@use \"sass:math\";\n@use \"mixins\";\n\n@mixin classes($textColor) {\n\t.cfgProductInfo {\n\t\t@include mixins.cfgRootStyles;\n\n\t\tcolor: $textColor;\n\n\t\tdisplay: flex;\n\n\t\t&__left {\n\t\t\tflex: 1 1 auto;\n\t\t\tmin-width: 0;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t&__right {\n\t\t\talign-items: flex-end;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tflex: 1 0 auto;\n\t\t\tmargin-left: 1em;\n\t\t\tmax-width: 0.333333333;\n\t\t\tmin-width: 0;\n\t\t}\n\n\t\t&__name {\n\t\t\tdisplay: block;\n\t\t\tfont-size: 1.6em;\n\t\t\tfont-weight: 600;\n\t\t\tline-height: 1.33;\n\t\t\tmargin: 0;\n\t\t}\n\n\t\t&__number {\n\t\t\tfont-size: 1.3em;\n\t\t\tfont-weight: 400;\n\t\t\tline-height: 1.38;\n\t\t\tmargin: 0;\n\t\t}\n\n\t\t@content;\n\t}\n}\n","/**\n * Web UI Loading\n */\n\n@use \"mixins\";\n\n@mixin classes(\n\t$textColor,\n\t$spinnerColor1,\n\t$spinnerColor2,\n\t$overlayBackgroundColor,\n\t$overlayingZIndex\n) {\n\t.cfgCenteredLoading {\n\t\t@include mixins.cfgRootStyles;\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\theight: 100%;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t}\n\n\t.cfgOverlayLoading {\n\t\t@include mixins.cfgRootStyles;\n\n\t\talign-items: center;\n\t\tbackground-color: $overlayBackgroundColor;\n\t\tbottom: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tleft: 0;\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 0;\n\t\tz-index: $overlayingZIndex;\n\n\t\t&--clickThrough {\n\t\t\tbackground-color: transparent;\n\t\t\tpointer-events: none;\n\n\t\t\t.cfgLoadingWithText {\n\t\t\t\tpadding: 2em 2em 1.8em;\n\t\t\t\tborder-radius: 0.8em;\n\t\t\t\tbackground-color: $overlayBackgroundColor;\n\t\t\t\topacity: 0.8;\n\t\t\t\tborder: 0.1em solid $spinnerColor2;\n\t\t\t}\n\t\t}\n\n\t\t&--fullWindow {\n\t\t\tposition: fixed;\n\t\t\tz-index: #{$overlayingZIndex + 1};\n\t\t}\n\t}\n\n\t.cfgLoadingWithText {\n\t\t@include mixins.cfgRootStyles;\n\t\t@include mixins.cfgDefaultFont;\n\n\t\ttext-align: center;\n\n\t\t&__text {\n\t\t\tcolor: $textColor;\n\t\t\tfont-weight: 600;\n\t\t\tmargin-top: 0.5em;\n\t\t\tfont-size: 1.6em;\n\t\t}\n\t}\n\n\t.cfgLoading {\n\t\t@include mixins.cfgRootStyles;\n\n\t\tanimation: rotate 1.1s linear 0s infinite;\n\t\tborder-radius: 100%;\n\t\tborder: 0.5em solid $spinnerColor2;\n\t\tborder-bottom-color: $spinnerColor1;\n\t\tdisplay: inline-block;\n\t\theight: 3em;\n\t\twidth: 3em;\n\n\t\t&--small {\n\t\t\tborder-width: 0.4em;\n\t\t\theight: 2em;\n\t\t\twidth: 2em;\n\t\t}\n\t}\n\n\t@keyframes rotate {\n\t\tfrom {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\tto {\n\t\t\ttransform: rotate(360deg);\n\t\t}\n\t}\n}\n","@use \"mixins\";\n\n// The origins of this SCSS file is here:\n// https://css-tricks.com/sliding-nightmare-understanding-range-input/\n\n$trackHeight: 0.2em !default;\n$thumbDiameter: 2.8em !default;\n\n@mixin track($trackColor) {\n\tbox-sizing: border-box;\n\tborder: none;\n\theight: $trackHeight;\n\tbackground: $trackColor;\n}\n\n@mixin thumb($thumbColor, $thumbShadowColor) {\n\tbox-sizing: border-box;\n\tborder: none;\n\twidth: $thumbDiameter;\n\theight: $thumbDiameter;\n\tborder-radius: 50%;\n\tbackground: $thumbColor;\n\tbox-shadow: 0 0.15em 0.45em 0.05em $thumbShadowColor;\n}\n\n@mixin classes($trackColor, $thumbColor, $thumbShadowColor) {\n\t.cfgSlider {\n\t\t@include mixins.cfgRootStyles;\n\n\t\t&,\n\t\t&::-webkit-slider-thumb {\n\t\t\t-webkit-appearance: none;\n\t\t}\n\n\t\tflex: 1;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tmin-height: $thumbDiameter;\n\t\tbackground: transparent;\n\t\tfont: inherit;\n\n\t\t&::-webkit-slider-runnable-track {\n\t\t\t@include track($trackColor);\n\t\t}\n\t\t&::-moz-range-track {\n\t\t\t@include track($trackColor);\n\t\t}\n\t\t&::-ms-track {\n\t\t\t@include track($trackColor);\n\t\t}\n\n\t\t&::-webkit-slider-thumb {\n\t\t\tmargin-top: 0.5 * ($trackHeight - $thumbDiameter);\n\t\t\t@include thumb($thumbColor, $thumbShadowColor);\n\t\t}\n\t\t&::-moz-range-thumb {\n\t\t\t@include thumb($thumbColor, $thumbShadowColor);\n\t\t}\n\t\t&::-ms-thumb {\n\t\t\tmargin-top: 0;\n\t\t\t@include thumb($thumbColor, $thumbShadowColor);\n\t\t}\n\n\t\t&::-ms-tooltip {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t@content;\n\t}\n}\n","@use \"../mixins\";\n\n@mixin classes($colorActive, $colorPassive) {\n\t.cfgCheckmark {\n\t\t/* The distance-units inside the checkmark are px even though everything\n\t\t else is relative units. The SVG has its own coordinate space. */\n\n\t\t@include mixins.cfgRootStyles;\n\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t&__container {\n\t\t\ttransition: transform 0.4s;\n\t\t\ttransform: translateY(17px);\n\t\t}\n\n\t\t&__line {\n\t\t\tstroke: $colorActive;\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-width: 12;\n\t\t\ttransform-origin: 50px 50px;\n\t\t\ttransition: transform 0.4s, stroke 0.4s;\n\t\t}\n\n\t\t&__lineLeft {\n\t\t\tstroke: $colorActive;\n\t\t\ttransform: rotate(40deg) translateY(24px) translateX(18px);\n\t\t}\n\n\t\t&__lineRight {\n\t\t\tstroke: $colorActive;\n\t\t\ttransform: rotate(-50deg) translateY(-2px) translateX(-3px);\n\t\t}\n\n\t\t@content;\n\n\t\t&__border {\n\t\t\t@include mixins.cfgCheckbox($colorPassive);\n\t\t\t&--active {\n\t\t\t\t@include mixins.cfgCheckbox($colorActive);\n\t\t\t}\n\t\t}\n\t}\n}\n","@use \"../mixins\";\n\n@mixin classes($activeColor, $passiveColor) {\n\t.cfgChevron {\n\t\t/* The distance-units inside the chevron are px even though everything\n\t\t else is relative units. The SVG has its own coordinate space. */\n\n\t\t@include mixins.cfgRootStyles;\n\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\n\t\t&__container {\n\t\t\ttransition: transform 0.4s;\n\n\t\t\t&--down {\n\t\t\t\ttransform: translateY(13px);\n\t\t\t}\n\n\t\t\t&--up {\n\t\t\t\ttransform: translateY(-13px);\n\t\t\t}\n\t\t}\n\n\t\t&__line {\n\t\t\tstroke-linecap: round;\n\t\t\tstroke-width: 10;\n\t\t\ttransform-origin: 50px 50px;\n\t\t\ttransition: transform 0.4s, stroke 0.4s;\n\t\t}\n\n\t\t&__lineLeft,\n\t\t&__lineRight {\n\t\t\t&--active {\n\t\t\t\tstroke: $activeColor;\n\t\t\t}\n\t\t\t&--passive {\n\t\t\t\tstroke: $passiveColor;\n\t\t\t}\n\t\t}\n\n\t\t&__lineLeft {\n\t\t\t&--down {\n\t\t\t\ttransform: rotate(40deg);\n\t\t\t}\n\t\t\t&--up {\n\t\t\t\ttransform: rotate(-40deg);\n\t\t\t}\n\t\t}\n\t\t&__lineRight {\n\t\t\t&--down {\n\t\t\t\ttransform: rotate(-40deg);\n\t\t\t}\n\n\t\t\t&--up {\n\t\t\t\ttransform: rotate(40deg);\n\t\t\t}\n\t\t}\n\n\t\t@content;\n\t}\n}\n"]}