@semcore/core 17.0.0-prerelease.19 → 17.0.0-prerelease.20-prerelease.20
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/CHANGELOG.md +1 -1
- package/lib/LastInteractionType.js +36 -22
- package/lib/LastInteractionType.js.map +1 -1
- package/lib/LastInteractionType.mjs +33 -19
- package/lib/LastInteractionType.mjs.map +1 -1
- package/lib/core-types/Component.js +41 -25
- package/lib/core-types/Component.js.map +1 -1
- package/lib/core-types/Component.mjs +38 -18
- package/lib/core-types/Component.mjs.map +1 -1
- package/lib/core-types/symbols.js +9 -9
- package/lib/core-types/symbols.js.map +1 -1
- package/lib/core-types/symbols.mjs +9 -9
- package/lib/core-types/symbols.mjs.map +1 -1
- package/lib/coreFactory.js +205 -143
- package/lib/coreFactory.js.map +1 -1
- package/lib/coreFactory.mjs +164 -118
- package/lib/coreFactory.mjs.map +1 -1
- package/lib/decorators/propsObserver.js +64 -36
- package/lib/decorators/propsObserver.js.map +1 -1
- package/lib/decorators/propsObserver.mjs +61 -33
- package/lib/decorators/propsObserver.mjs.map +1 -1
- package/lib/decorators/reactive.js +17 -17
- package/lib/decorators/reactive.js.map +1 -1
- package/lib/decorators/reactive.mjs +15 -15
- package/lib/decorators/reactive.mjs.map +1 -1
- package/lib/enhancement/Children.js +59 -51
- package/lib/enhancement/Children.js.map +1 -1
- package/lib/enhancement/Children.mjs +41 -47
- package/lib/enhancement/Children.mjs.map +1 -1
- package/lib/enhancement/Root.js +37 -36
- package/lib/enhancement/Root.js.map +1 -1
- package/lib/enhancement/Root.mjs +18 -28
- package/lib/enhancement/Root.mjs.map +1 -1
- package/lib/enhancement/dataName.js +8 -7
- package/lib/enhancement/dataName.js.map +1 -1
- package/lib/enhancement/dataName.mjs +5 -5
- package/lib/enhancement/dataName.mjs.map +1 -1
- package/lib/enhancement/enhance.js +9 -6
- package/lib/enhancement/enhance.js.map +1 -1
- package/lib/enhancement/enhance.mjs +7 -5
- package/lib/enhancement/enhance.mjs.map +1 -1
- package/lib/enhancement/functionDefaultProps.js +6 -6
- package/lib/enhancement/functionDefaultProps.js.map +1 -1
- package/lib/enhancement/functionDefaultProps.mjs +4 -4
- package/lib/enhancement/functionDefaultProps.mjs.map +1 -1
- package/lib/enhancement/i18n.js +13 -13
- package/lib/enhancement/i18n.js.map +1 -1
- package/lib/enhancement/i18n.mjs +9 -10
- package/lib/enhancement/i18n.mjs.map +1 -1
- package/lib/enhancement/inheritedName.js +8 -7
- package/lib/enhancement/inheritedName.js.map +1 -1
- package/lib/enhancement/inheritedName.mjs +5 -5
- package/lib/enhancement/inheritedName.mjs.map +1 -1
- package/lib/enhancement/staticChildren.js +56 -47
- package/lib/enhancement/staticChildren.js.map +1 -1
- package/lib/enhancement/staticChildren.mjs +48 -43
- package/lib/enhancement/staticChildren.mjs.map +1 -1
- package/lib/enhancement/style.js +27 -29
- package/lib/enhancement/style.js.map +1 -1
- package/lib/enhancement/style.mjs +20 -26
- package/lib/enhancement/style.mjs.map +1 -1
- package/lib/enhancement/uncontrolledProps.js +65 -46
- package/lib/enhancement/uncontrolledProps.js.map +1 -1
- package/lib/enhancement/uncontrolledProps.mjs +52 -43
- package/lib/enhancement/uncontrolledProps.mjs.map +1 -1
- package/lib/esm/LastInteractionType.mjs +33 -19
- package/lib/esm/core-types/Component.mjs +38 -18
- package/lib/esm/core-types/symbols.mjs +9 -9
- package/lib/esm/coreFactory.mjs +164 -118
- package/lib/esm/enhancement/Children.mjs +41 -47
- package/lib/esm/enhancement/Root.mjs +18 -28
- package/lib/esm/enhancement/dataName.mjs +5 -5
- package/lib/esm/enhancement/enhance.mjs +7 -5
- package/lib/esm/enhancement/functionDefaultProps.mjs +4 -4
- package/lib/esm/enhancement/i18n.mjs +9 -10
- package/lib/esm/enhancement/inheritedName.mjs +5 -5
- package/lib/esm/enhancement/staticChildren.mjs +48 -43
- package/lib/esm/enhancement/style.mjs +20 -26
- package/lib/esm/enhancement/uncontrolledProps.mjs +52 -43
- package/lib/esm/register.mjs +20 -12
- package/lib/esm/styled/reshadow-core.mjs +111 -98
- package/lib/esm/styled/sstyled.mjs +41 -31
- package/lib/esm/utils/assignProps.mjs +36 -32
- package/lib/esm/utils/enhances/WithI18n.mjs +17 -15
- package/lib/esm/utils/enhances/i18nEnhance.mjs +61 -47
- package/lib/esm/utils/logger.mjs +21 -13
- package/lib/esm/utils/pick.mjs +4 -4
- package/lib/esm/utils/ref.mjs +43 -27
- package/lib/esm/utils/use/useEnhancedEffect.mjs +1 -1
- package/lib/index.js +17 -17
- package/lib/register.js +24 -17
- package/lib/register.js.map +1 -1
- package/lib/register.mjs +20 -12
- package/lib/register.mjs.map +1 -1
- package/lib/styled/index.js +4 -4
- package/lib/styled/reshadow-core.js +104 -102
- package/lib/styled/reshadow-core.js.map +1 -1
- package/lib/styled/reshadow-core.mjs +111 -98
- package/lib/styled/reshadow-core.mjs.map +1 -1
- package/lib/styled/sstyled.js +53 -31
- package/lib/styled/sstyled.js.map +1 -1
- package/lib/styled/sstyled.mjs +41 -31
- package/lib/styled/sstyled.mjs.map +1 -1
- package/lib/theme/processor.js +222 -150
- package/lib/theme/processor.js.map +1 -1
- package/lib/theme/processor.mjs +221 -148
- package/lib/theme/processor.mjs.map +1 -1
- package/lib/theme/themes/dark.js +2 -2
- package/lib/theme/themes/dark.js.map +1 -1
- package/lib/theme/themes/default.js +2 -2
- package/lib/theme/themes/default.js.map +1 -1
- package/lib/theme/themes/highlights-dark.js +2 -2
- package/lib/theme/themes/highlights-dark.js.map +1 -1
- package/lib/theme/themes/highlights-light.js +2 -2
- package/lib/theme/themes/highlights-light.js.map +1 -1
- package/lib/theme/themes/light.js +2 -2
- package/lib/theme/themes/light.js.map +1 -1
- package/lib/theme/utils.js +215 -140
- package/lib/theme/utils.js.map +1 -1
- package/lib/theme/utils.mjs +214 -135
- package/lib/theme/utils.mjs.map +1 -1
- package/lib/utils/CSSinJS.js +10 -8
- package/lib/utils/CSSinJS.js.map +1 -1
- package/lib/utils/CSSinJS.mjs +7 -6
- package/lib/utils/CSSinJS.mjs.map +1 -1
- package/lib/utils/ThemeProvider.js +51 -44
- package/lib/utils/ThemeProvider.js.map +1 -1
- package/lib/utils/ThemeProvider.mjs +47 -36
- package/lib/utils/ThemeProvider.mjs.map +1 -1
- package/lib/utils/addonText.js +7 -4
- package/lib/utils/addonText.js.map +1 -1
- package/lib/utils/addonText.mjs +5 -2
- package/lib/utils/addonText.mjs.map +1 -1
- package/lib/utils/addonTextChildren.js +21 -15
- package/lib/utils/addonTextChildren.js.map +1 -1
- package/lib/utils/addonTextChildren.mjs +13 -7
- package/lib/utils/addonTextChildren.mjs.map +1 -1
- package/lib/utils/ariaProps.js +5 -7
- package/lib/utils/ariaProps.js.map +1 -1
- package/lib/utils/ariaProps.mjs +5 -7
- package/lib/utils/ariaProps.mjs.map +1 -1
- package/lib/utils/assignProps.js +37 -33
- package/lib/utils/assignProps.js.map +1 -1
- package/lib/utils/assignProps.mjs +36 -32
- package/lib/utils/assignProps.mjs.map +1 -1
- package/lib/utils/canUseDOM.js +1 -1
- package/lib/utils/capitalizeFirstLetter.js +1 -1
- package/lib/utils/color.js +95 -72
- package/lib/utils/color.js.map +1 -1
- package/lib/utils/color.mjs +94 -71
- package/lib/utils/color.mjs.map +1 -1
- package/lib/utils/compose.js +12 -3
- package/lib/utils/compose.js.map +1 -1
- package/lib/utils/compose.mjs +11 -2
- package/lib/utils/compose.mjs.map +1 -1
- package/lib/utils/createUUID.js +5 -5
- package/lib/utils/createUUID.js.map +1 -1
- package/lib/utils/createUUID.mjs +4 -4
- package/lib/utils/createUUID.mjs.map +1 -1
- package/lib/utils/cssToIntDefault.js +4 -3
- package/lib/utils/cssToIntDefault.js.map +1 -1
- package/lib/utils/cssToIntDefault.mjs +3 -2
- package/lib/utils/cssToIntDefault.mjs.map +1 -1
- package/lib/utils/enhances/WithCSS.js +8 -10
- package/lib/utils/enhances/WithCSS.js.map +1 -1
- package/lib/utils/enhances/WithCSS.mjs +6 -7
- package/lib/utils/enhances/WithCSS.mjs.map +1 -1
- package/lib/utils/enhances/WithI18n.js +19 -19
- package/lib/utils/enhances/WithI18n.js.map +1 -1
- package/lib/utils/enhances/WithI18n.mjs +17 -15
- package/lib/utils/enhances/WithI18n.mjs.map +1 -1
- package/lib/utils/enhances/a11yEnhance.js +39 -34
- package/lib/utils/enhances/a11yEnhance.js.map +1 -1
- package/lib/utils/enhances/a11yEnhance.mjs +36 -32
- package/lib/utils/enhances/a11yEnhance.mjs.map +1 -1
- package/lib/utils/enhances/animatedSizeEnhance.js +63 -55
- package/lib/utils/enhances/animatedSizeEnhance.js.map +1 -1
- package/lib/utils/enhances/animatedSizeEnhance.mjs +58 -50
- package/lib/utils/enhances/animatedSizeEnhance.mjs.map +1 -1
- package/lib/utils/enhances/contextEnhance.js +11 -12
- package/lib/utils/enhances/contextEnhance.js.map +1 -1
- package/lib/utils/enhances/contextEnhance.mjs +8 -9
- package/lib/utils/enhances/contextEnhance.mjs.map +1 -1
- package/lib/utils/enhances/i18nEnhance.js +67 -51
- package/lib/utils/enhances/i18nEnhance.js.map +1 -1
- package/lib/utils/enhances/i18nEnhance.mjs +61 -47
- package/lib/utils/enhances/i18nEnhance.mjs.map +1 -1
- package/lib/utils/enhances/resolveColorEnhance.js +10 -12
- package/lib/utils/enhances/resolveColorEnhance.js.map +1 -1
- package/lib/utils/enhances/resolveColorEnhance.mjs +6 -8
- package/lib/utils/enhances/resolveColorEnhance.mjs.map +1 -1
- package/lib/utils/eventEmitter.js +57 -30
- package/lib/utils/eventEmitter.js.map +1 -1
- package/lib/utils/eventEmitter.mjs +55 -26
- package/lib/utils/eventEmitter.mjs.map +1 -1
- package/lib/utils/findComponent.js +42 -35
- package/lib/utils/findComponent.js.map +1 -1
- package/lib/utils/findComponent.mjs +33 -26
- package/lib/utils/findComponent.mjs.map +1 -1
- package/lib/utils/fire.js +13 -7
- package/lib/utils/fire.js.map +1 -1
- package/lib/utils/fire.mjs +11 -5
- package/lib/utils/fire.mjs.map +1 -1
- package/lib/utils/focus-lock/focusBorders.js +32 -28
- package/lib/utils/focus-lock/focusBorders.js.map +1 -1
- package/lib/utils/focus-lock/focusBorders.mjs +32 -26
- package/lib/utils/focus-lock/focusBorders.mjs.map +1 -1
- package/lib/utils/focus-lock/getFocusableIn.js +6 -4
- package/lib/utils/focus-lock/getFocusableIn.js.map +1 -1
- package/lib/utils/focus-lock/getFocusableIn.mjs +6 -3
- package/lib/utils/focus-lock/getFocusableIn.mjs.map +1 -1
- package/lib/utils/focus-lock/isFocusInside.js +6 -5
- package/lib/utils/focus-lock/isFocusInside.js.map +1 -1
- package/lib/utils/focus-lock/isFocusInside.mjs +6 -4
- package/lib/utils/focus-lock/isFocusInside.mjs.map +1 -1
- package/lib/utils/focus-lock/isFocusable.js +12 -9
- package/lib/utils/focus-lock/isFocusable.js.map +1 -1
- package/lib/utils/focus-lock/isFocusable.mjs +11 -8
- package/lib/utils/focus-lock/isFocusable.mjs.map +1 -1
- package/lib/utils/focus-lock/setFocus.js +27 -21
- package/lib/utils/focus-lock/setFocus.js.map +1 -1
- package/lib/utils/focus-lock/setFocus.mjs +25 -19
- package/lib/utils/focus-lock/setFocus.mjs.map +1 -1
- package/lib/utils/getAccessibleName.js +22 -10
- package/lib/utils/getAccessibleName.js.map +1 -1
- package/lib/utils/getAccessibleName.mjs +21 -10
- package/lib/utils/getAccessibleName.mjs.map +1 -1
- package/lib/utils/getDisplayName.js +1 -1
- package/lib/utils/getEventTarget.js +32 -13
- package/lib/utils/getEventTarget.js.map +1 -1
- package/lib/utils/getEventTarget.mjs +31 -12
- package/lib/utils/getEventTarget.mjs.map +1 -1
- package/lib/utils/getOriginChildren.js +4 -4
- package/lib/utils/getOriginChildren.js.map +1 -1
- package/lib/utils/getRandomInt.js +1 -1
- package/lib/utils/getValue.js +6 -4
- package/lib/utils/getValue.js.map +1 -1
- package/lib/utils/getValue.mjs +5 -3
- package/lib/utils/getValue.mjs.map +1 -1
- package/lib/utils/hasLabels.js +27 -16
- package/lib/utils/hasLabels.js.map +1 -1
- package/lib/utils/hasLabels.mjs +24 -14
- package/lib/utils/hasLabels.mjs.map +1 -1
- package/lib/utils/hasParent.js +2 -3
- package/lib/utils/hasParent.js.map +1 -1
- package/lib/utils/hasParent.mjs +3 -2
- package/lib/utils/hasParent.mjs.map +1 -1
- package/lib/utils/ifChildren.js +4 -6
- package/lib/utils/ifChildren.js.map +1 -1
- package/lib/utils/ifChildren.mjs +2 -4
- package/lib/utils/ifChildren.mjs.map +1 -1
- package/lib/utils/injectStyle.js +13 -11
- package/lib/utils/injectStyle.js.map +1 -1
- package/lib/utils/injectStyle.mjs +10 -9
- package/lib/utils/injectStyle.mjs.map +1 -1
- package/lib/utils/inputProps.js +5 -5
- package/lib/utils/inputProps.js.map +1 -1
- package/lib/utils/inputProps.mjs +4 -4
- package/lib/utils/inputProps.mjs.map +1 -1
- package/lib/utils/isInteractiveElement.js +9 -7
- package/lib/utils/isInteractiveElement.js.map +1 -1
- package/lib/utils/isInteractiveElement.mjs +9 -7
- package/lib/utils/isInteractiveElement.mjs.map +1 -1
- package/lib/utils/isNode.js +5 -4
- package/lib/utils/isNode.js.map +1 -1
- package/lib/utils/isNode.mjs +2 -1
- package/lib/utils/isNode.mjs.map +1 -1
- package/lib/utils/isPromise.js +1 -1
- package/lib/utils/isRetina.js +2 -7
- package/lib/utils/isRetina.js.map +1 -1
- package/lib/utils/isRetina.mjs +1 -6
- package/lib/utils/isRetina.mjs.map +1 -1
- package/lib/utils/logger.js +25 -18
- package/lib/utils/logger.js.map +1 -1
- package/lib/utils/logger.mjs +21 -13
- package/lib/utils/logger.mjs.map +1 -1
- package/lib/utils/numericChecker.js +18 -11
- package/lib/utils/numericChecker.js.map +1 -1
- package/lib/utils/numericChecker.mjs +17 -10
- package/lib/utils/numericChecker.mjs.map +1 -1
- package/lib/utils/ownerDocument.js +2 -2
- package/lib/utils/ownerDocument.js.map +1 -1
- package/lib/utils/ownerDocument.mjs +1 -1
- package/lib/utils/ownerDocument.mjs.map +1 -1
- package/lib/utils/pick.js +5 -5
- package/lib/utils/pick.js.map +1 -1
- package/lib/utils/pick.mjs +4 -4
- package/lib/utils/pick.mjs.map +1 -1
- package/lib/utils/propsForElement.js +12 -10
- package/lib/utils/propsForElement.js.map +1 -1
- package/lib/utils/propsForElement.mjs +10 -8
- package/lib/utils/propsForElement.mjs.map +1 -1
- package/lib/utils/rafTrottle.js +14 -9
- package/lib/utils/rafTrottle.js.map +1 -1
- package/lib/utils/rafTrottle.mjs +12 -7
- package/lib/utils/rafTrottle.mjs.map +1 -1
- package/lib/utils/reactToText.js +8 -5
- package/lib/utils/reactToText.js.map +1 -1
- package/lib/utils/reactToText.mjs +6 -3
- package/lib/utils/reactToText.mjs.map +1 -1
- package/lib/utils/ref.js +47 -29
- package/lib/utils/ref.js.map +1 -1
- package/lib/utils/ref.mjs +43 -27
- package/lib/utils/ref.mjs.map +1 -1
- package/lib/utils/setRef.js +2 -2
- package/lib/utils/setRef.js.map +1 -1
- package/lib/utils/syncScroll.js +24 -24
- package/lib/utils/syncScroll.js.map +1 -1
- package/lib/utils/syncScroll.mjs +21 -21
- package/lib/utils/syncScroll.mjs.map +1 -1
- package/lib/utils/uncontroll.js +18 -8
- package/lib/utils/uncontroll.js.map +1 -1
- package/lib/utils/uncontroll.mjs +17 -8
- package/lib/utils/uncontroll.mjs.map +1 -1
- package/lib/utils/uniqueID.js +27 -22
- package/lib/utils/uniqueID.js.map +1 -1
- package/lib/utils/uniqueID.mjs +25 -18
- package/lib/utils/uniqueID.mjs.map +1 -1
- package/lib/utils/use/useColorResolver.js +21 -20
- package/lib/utils/use/useColorResolver.js.map +1 -1
- package/lib/utils/use/useColorResolver.mjs +18 -16
- package/lib/utils/use/useColorResolver.mjs.map +1 -1
- package/lib/utils/use/useEnhancedEffect.js +4 -4
- package/lib/utils/use/useEnhancedEffect.js.map +1 -1
- package/lib/utils/use/useEnhancedEffect.mjs +1 -1
- package/lib/utils/use/useEnhancedEffect.mjs.map +1 -1
- package/lib/utils/use/useEventCallback.js +10 -5
- package/lib/utils/use/useEventCallback.js.map +1 -1
- package/lib/utils/use/useEventCallback.mjs +8 -3
- package/lib/utils/use/useEventCallback.mjs.map +1 -1
- package/lib/utils/use/useEventListener.js +15 -11
- package/lib/utils/use/useEventListener.js.map +1 -1
- package/lib/utils/use/useEventListener.mjs +11 -7
- package/lib/utils/use/useEventListener.mjs.map +1 -1
- package/lib/utils/use/useFocusLock.js +94 -80
- package/lib/utils/use/useFocusLock.js.map +1 -1
- package/lib/utils/use/useFocusLock.mjs +88 -71
- package/lib/utils/use/useFocusLock.mjs.map +1 -1
- package/lib/utils/use/usePreventScroll.js +28 -26
- package/lib/utils/use/usePreventScroll.js.map +1 -1
- package/lib/utils/use/usePreventScroll.mjs +23 -21
- package/lib/utils/use/usePreventScroll.mjs.map +1 -1
- package/lib/utils/use/useScrollBarWidth.js +14 -8
- package/lib/utils/use/useScrollBarWidth.js.map +1 -1
- package/lib/utils/use/useScrollBarWidth.mjs +13 -8
- package/lib/utils/use/useScrollBarWidth.mjs.map +1 -1
- package/lib/utils/useCssVariable.js +37 -32
- package/lib/utils/useCssVariable.js.map +1 -1
- package/lib/utils/useCssVariable.mjs +34 -27
- package/lib/utils/useCssVariable.mjs.map +1 -1
- package/lib/utils/zIndexStacking.js +24 -28
- package/lib/utils/zIndexStacking.js.map +1 -1
- package/lib/utils/zIndexStacking.mjs +22 -23
- package/lib/utils/zIndexStacking.mjs.map +1 -1
- package/package.json +1 -1
package/lib/theme/utils.js
CHANGED
|
@@ -1,250 +1,325 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.tokensToJson = exports.tokensToJs = exports.tokensToCss = exports.processTokens = void 0;
|
|
8
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
9
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
8
13
|
var _colorjs = _interopRequireDefault(require("colorjs.io"));
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
var Color = _colorjs["default"];
|
|
15
|
+
var processTokens = exports.processTokens = function processTokens(base, tokens, featureHighlight, prefix) {
|
|
16
|
+
var values = {};
|
|
17
|
+
var basicTokens = new Set();
|
|
18
|
+
var highlightTokens = new Set();
|
|
19
|
+
var modifications = {};
|
|
20
|
+
var types = {};
|
|
21
|
+
var descriptions = {};
|
|
22
|
+
var mixins = [];
|
|
23
|
+
var _traverse = function traverse(node) {
|
|
24
|
+
var pathParts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
25
|
+
var setToAdd = arguments.length > 2 ? arguments[2] : undefined;
|
|
26
|
+
for (var key in node) {
|
|
20
27
|
if (key === 'type') continue;
|
|
21
28
|
if (key === 'value') continue;
|
|
22
29
|
if (key === 'description') continue;
|
|
23
30
|
if (key === '$extensions') continue;
|
|
24
|
-
|
|
31
|
+
_traverse(node[key], [].concat((0, _toConsumableArray2["default"])(pathParts), [key]), setToAdd);
|
|
25
32
|
}
|
|
26
33
|
if ('type' in node && typeof node.type === 'string') {
|
|
27
|
-
|
|
34
|
+
var path = pathParts.join('-');
|
|
28
35
|
types[path] = node.type;
|
|
29
|
-
if (
|
|
36
|
+
if ((0, _typeof2["default"])(node.value) === 'object') {
|
|
30
37
|
mixins.push(path);
|
|
31
38
|
return;
|
|
32
39
|
}
|
|
33
40
|
if (values[path]) {
|
|
34
|
-
throw new Error(
|
|
41
|
+
throw new Error("Duplicated design token \"".concat(path, "\""));
|
|
35
42
|
}
|
|
36
43
|
values[path] = node.value;
|
|
37
|
-
setToAdd
|
|
44
|
+
setToAdd === null || setToAdd === void 0 || setToAdd.add(path);
|
|
38
45
|
if (typeof node.description === 'string') descriptions[path] = node.description;
|
|
39
46
|
if (node.$extensions) {
|
|
40
|
-
for (
|
|
47
|
+
for (var extension in node.$extensions) {
|
|
41
48
|
if (extension === 'studio.tokens') {
|
|
42
|
-
|
|
49
|
+
var _modifications$path;
|
|
50
|
+
(_modifications$path = modifications[path]) !== null && _modifications$path !== void 0 ? _modifications$path : modifications[path] = [];
|
|
43
51
|
modifications[path].push(node.$extensions['studio.tokens'].modify);
|
|
44
52
|
} else {
|
|
45
|
-
throw new Error(
|
|
53
|
+
throw new Error("Unsupported extension \"".concat(extension, "\" for design token \"").concat(path, "\""));
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
}
|
|
49
57
|
}
|
|
50
58
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
59
|
+
_traverse(base, [], basicTokens);
|
|
60
|
+
_traverse(tokens);
|
|
61
|
+
_traverse(featureHighlight, [], highlightTokens);
|
|
62
|
+
var _resolveColor = function resolveColor(color) {
|
|
55
63
|
if (color.includes('linear-gradient')) {
|
|
56
64
|
if (color.includes('rgba')) {
|
|
57
65
|
return replaceColors(color);
|
|
58
66
|
} else {
|
|
59
|
-
return color.replace(/\{[a-z0-9.]+\}/g,
|
|
67
|
+
return color.replace(/\{[a-z0-9.]+\}/g, _resolveColor);
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
70
|
if (color.startsWith('rgba(') && color.endsWith(')')) {
|
|
63
|
-
|
|
64
|
-
|
|
71
|
+
var lastComa = color.lastIndexOf(',');
|
|
72
|
+
var alpha = Number.parseFloat(color.substring(lastComa + 1, color.length - 1));
|
|
65
73
|
if (Number.isNaN(alpha)) {
|
|
66
|
-
throw new Error(
|
|
74
|
+
throw new Error("Unable to parse rgba of ".concat(color));
|
|
67
75
|
}
|
|
68
|
-
|
|
69
|
-
if (resolvedColor.startsWith('{')) resolvedColor =
|
|
70
|
-
if (resolvedColor.startsWith('$')) resolvedColor =
|
|
76
|
+
var resolvedColor = color.substring('rgba('.length, lastComa);
|
|
77
|
+
if (resolvedColor.startsWith('{')) resolvedColor = _resolveColor(resolvedColor);
|
|
78
|
+
if (resolvedColor.startsWith('$')) resolvedColor = _resolveColor(resolvedColor);
|
|
71
79
|
if (resolvedColor.startsWith('#')) {
|
|
72
80
|
if (resolvedColor.length === 1 + 3) {
|
|
73
|
-
resolvedColor = [resolvedColor[1], resolvedColor[2], resolvedColor[3]].map(
|
|
81
|
+
resolvedColor = [resolvedColor[1], resolvedColor[2], resolvedColor[3]].map(function (hex) {
|
|
82
|
+
return Number.parseInt(hex, 16);
|
|
83
|
+
}).join(', ');
|
|
74
84
|
} else if (resolvedColor.length === 1 + 6) {
|
|
75
|
-
resolvedColor = [resolvedColor.substring(1, 3), resolvedColor.substring(3, 5), resolvedColor.substring(5, 7)].map(
|
|
85
|
+
resolvedColor = [resolvedColor.substring(1, 3), resolvedColor.substring(3, 5), resolvedColor.substring(5, 7)].map(function (hex) {
|
|
86
|
+
return Number.parseInt(hex, 16);
|
|
87
|
+
}).join(', ');
|
|
76
88
|
} else {
|
|
77
|
-
throw new Error(
|
|
89
|
+
throw new Error("Unable to convert hex ".concat(_resolveColor, " to rgb list of colors (processing ").concat(color, ")"));
|
|
78
90
|
}
|
|
79
91
|
}
|
|
80
92
|
if (!resolvedColor || resolvedColor.split(',').length !== 3) {
|
|
81
|
-
throw new Error(
|
|
93
|
+
throw new Error("Unable to produce rgba of ".concat(color, " (input format is not supported yet)"));
|
|
82
94
|
}
|
|
83
|
-
return
|
|
95
|
+
return "rgba(".concat(resolvedColor, ", ").concat(alpha, ")");
|
|
84
96
|
}
|
|
85
97
|
if (color.split(', ').length === 2) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
98
|
+
var baseColor = _resolveColor(color.split(', ')[0]);
|
|
99
|
+
var _map = (baseColor.length === 4 ? [baseColor[1], baseColor[2], baseColor[3]] : [baseColor.substring(1, 3), baseColor.substring(3, 5), baseColor.substring(5, 7)]).map(function (chunk) {
|
|
100
|
+
return Number.parseInt(chunk, 16);
|
|
101
|
+
}),
|
|
102
|
+
_map2 = (0, _slicedToArray2["default"])(_map, 3),
|
|
103
|
+
r = _map2[0],
|
|
104
|
+
g = _map2[1],
|
|
105
|
+
b = _map2[2];
|
|
106
|
+
var a = Number.parseFloat(color.split(', ')[1]);
|
|
107
|
+
return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(a, ")");
|
|
90
108
|
}
|
|
91
109
|
if (color.startsWith('{') && color.split('.').length > 0 && color.endsWith('}')) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
110
|
+
var _getByPath$value, _getByPath;
|
|
111
|
+
var path = color.substring(1, color.length - 1);
|
|
112
|
+
var _resolvedColor = (_getByPath$value = (_getByPath = getByPath(base, path)) === null || _getByPath === void 0 ? void 0 : _getByPath.value) !== null && _getByPath$value !== void 0 ? _getByPath$value : values[path.split('.').join('-')];
|
|
113
|
+
if (!_resolvedColor) {
|
|
114
|
+
throw new Error("Color ".concat(color, " was not found in base palette"));
|
|
96
115
|
}
|
|
97
|
-
return
|
|
116
|
+
return _resolvedColor;
|
|
98
117
|
}
|
|
99
118
|
if (color.startsWith('$') && color.split('.').length > 0) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
119
|
+
var _getByPath$value2, _getByPath2;
|
|
120
|
+
var _path = color.substring(1);
|
|
121
|
+
var _resolvedColor2 = (_getByPath$value2 = (_getByPath2 = getByPath(base, _path)) === null || _getByPath2 === void 0 ? void 0 : _getByPath2.value) !== null && _getByPath$value2 !== void 0 ? _getByPath$value2 : values[_path.split('.').join('-')];
|
|
122
|
+
if (!_resolvedColor2) {
|
|
123
|
+
throw new Error("Color ".concat(color, " was not found"));
|
|
104
124
|
}
|
|
105
|
-
return
|
|
125
|
+
return _resolvedColor2;
|
|
106
126
|
}
|
|
107
127
|
if (color.startsWith('#')) {
|
|
108
128
|
return color;
|
|
109
129
|
}
|
|
110
|
-
throw new Error(
|
|
130
|
+
throw new Error("Unable to process color ".concat(color));
|
|
111
131
|
};
|
|
112
|
-
|
|
132
|
+
var _resolveToken = function resolveToken(token) {
|
|
113
133
|
if (token.includes('*')) {
|
|
114
|
-
|
|
115
|
-
|
|
134
|
+
var _token$split = token.split('*'),
|
|
135
|
+
_token$split2 = (0, _slicedToArray2["default"])(_token$split, 2),
|
|
136
|
+
value = _token$split2[0],
|
|
137
|
+
factor = _token$split2[1];
|
|
138
|
+
var resolvedValue = _resolveToken(value);
|
|
116
139
|
if (!resolvedValue.endsWith('px')) {
|
|
117
|
-
throw new Error(
|
|
140
|
+
throw new Error("Unsupported expression ".concat(token));
|
|
118
141
|
}
|
|
119
|
-
return
|
|
142
|
+
return "".concat(Number.parseFloat(resolvedValue) * Number.parseFloat(factor), "px");
|
|
120
143
|
} else if (token.includes('{') && token.includes('}')) {
|
|
121
|
-
|
|
122
|
-
|
|
144
|
+
var reference = token.substring(token.indexOf('{') + 1, token.indexOf('}')).replace(/\./g, '-');
|
|
145
|
+
var resolvedToken = token.substring(0, token.indexOf('{')) + values[reference] + token.substring(token.indexOf('}') + 1);
|
|
123
146
|
if (!resolvedToken || resolvedToken.includes('{')) {
|
|
124
|
-
throw new Error(
|
|
147
|
+
throw new Error("On moment of resolving ".concat(token, ", ").concat(resolvedToken, " was not resolved yet"));
|
|
125
148
|
}
|
|
126
149
|
return resolvedToken;
|
|
127
150
|
} else {
|
|
128
151
|
return token;
|
|
129
152
|
}
|
|
130
153
|
};
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
for (
|
|
154
|
+
var replaceColors = function replaceColors(str) {
|
|
155
|
+
var result = '';
|
|
156
|
+
for (var i = 0; i < str.length; i++) {
|
|
134
157
|
if (str.substring(i, i + 'rgba('.length) === 'rgba(') {
|
|
135
|
-
|
|
158
|
+
var start = i;
|
|
136
159
|
while (str[i] !== undefined && str[i] !== ')') i++;
|
|
137
|
-
result +=
|
|
160
|
+
result += _resolveColor(str.substring(start, i + 1));
|
|
138
161
|
} else {
|
|
139
162
|
result += str[i];
|
|
140
163
|
}
|
|
141
164
|
}
|
|
142
165
|
return result;
|
|
143
166
|
};
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
for (const token in values) {
|
|
167
|
+
var rawValues = (0, _objectSpread2["default"])({}, values);
|
|
168
|
+
for (var token in values) {
|
|
169
|
+
var _modifications$token;
|
|
148
170
|
if (types[token] === 'color') {
|
|
149
|
-
values[token] =
|
|
171
|
+
values[token] = _resolveColor(values[token]);
|
|
150
172
|
} else if (types[token] === 'boxShadow') {
|
|
151
|
-
values[token] =
|
|
173
|
+
values[token] = _resolveToken(values[token].split('; ').map(replaceColors).join(', '));
|
|
152
174
|
} else if (types[token] === 'sizing' || types[token] === 'spacing' || types[token] === 'borderRadius' || types[token] === 'other') {
|
|
153
|
-
values[token] =
|
|
175
|
+
values[token] = _resolveToken(values[token]);
|
|
154
176
|
}
|
|
155
|
-
|
|
156
|
-
|
|
177
|
+
var _iterator = (0, _createForOfIteratorHelper2["default"])((_modifications$token = modifications[token]) !== null && _modifications$token !== void 0 ? _modifications$token : []),
|
|
178
|
+
_step;
|
|
179
|
+
try {
|
|
180
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
181
|
+
var _values$token$match;
|
|
182
|
+
var modification = _step.value;
|
|
183
|
+
// refer to https://docs.tokens.studio/tokens/color-modifiers and https://github.com/tokens-studio/figma-plugin/tree/main/src/utils/color if extension is needed
|
|
157
184
|
|
|
158
|
-
|
|
185
|
+
rawValues[token] = "".concat(rawValues[token], " / ").concat(modification.type, "(").concat(modification.value, ") / ").concat(modification.space);
|
|
159
186
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
187
|
+
// array + regex to process gradients with several colors
|
|
188
|
+
var colorRegex = /(#[0-9a-f]{6}|rgba\([0-9., ]+\))/gi;
|
|
189
|
+
var colors = (_values$token$match = values[token].match(colorRegex)) !== null && _values$token$match !== void 0 ? _values$token$match : [];
|
|
190
|
+
var _iterator2 = (0, _createForOfIteratorHelper2["default"])(colors),
|
|
191
|
+
_step2;
|
|
192
|
+
try {
|
|
193
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
194
|
+
var originalColor = _step2.value;
|
|
195
|
+
var color = new Color(originalColor);
|
|
196
|
+
if (modification.space === 'hsl') {
|
|
197
|
+
if (modification.type === 'lighten') {
|
|
198
|
+
var lightness = color.hsl.l;
|
|
199
|
+
var difference = 100 - lightness;
|
|
200
|
+
color.set('hsl.l', Math.min(100, lightness + difference * modification.value));
|
|
201
|
+
} else {
|
|
202
|
+
throw new Error("Unsupported color modification ".concat(modification.type, " of token ").concat(token));
|
|
203
|
+
}
|
|
204
|
+
} else {
|
|
205
|
+
throw new Error("Unsupported color space ".concat(modification.space, " of token ").concat(token));
|
|
206
|
+
}
|
|
207
|
+
color = color.to('sRGB');
|
|
208
|
+
var modifiedColor = '';
|
|
209
|
+
if (color.alpha !== 1) {
|
|
210
|
+
var r = Math.round(color.r * 255);
|
|
211
|
+
var g = Math.round(color.g * 255);
|
|
212
|
+
var b = Math.round(color.b * 255);
|
|
213
|
+
var a = color.alpha;
|
|
214
|
+
modifiedColor = "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(a, ")");
|
|
215
|
+
} else {
|
|
216
|
+
modifiedColor = color.toString({
|
|
217
|
+
format: 'hex'
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
values[token] = values[token].replace(originalColor, modifiedColor);
|
|
172
221
|
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
let modifiedColor = '';
|
|
178
|
-
if (color.alpha !== 1) {
|
|
179
|
-
const r = Math.round(color.r * 255);
|
|
180
|
-
const g = Math.round(color.g * 255);
|
|
181
|
-
const b = Math.round(color.b * 255);
|
|
182
|
-
const a = color.alpha;
|
|
183
|
-
modifiedColor = `rgba(${r}, ${g}, ${b}, ${a})`;
|
|
184
|
-
} else {
|
|
185
|
-
modifiedColor = color.toString({
|
|
186
|
-
format: 'hex'
|
|
187
|
-
});
|
|
222
|
+
} catch (err) {
|
|
223
|
+
_iterator2.e(err);
|
|
224
|
+
} finally {
|
|
225
|
+
_iterator2.f();
|
|
188
226
|
}
|
|
189
|
-
values[token] = values[token].replace(originalColor, modifiedColor);
|
|
190
227
|
}
|
|
228
|
+
} catch (err) {
|
|
229
|
+
_iterator.e(err);
|
|
230
|
+
} finally {
|
|
231
|
+
_iterator.f();
|
|
191
232
|
}
|
|
192
233
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
for (
|
|
196
|
-
|
|
197
|
-
(highlightTokens.has(
|
|
198
|
-
name: isBase ?
|
|
199
|
-
description: descriptions[
|
|
200
|
-
value: values[
|
|
234
|
+
var processedTokens = [];
|
|
235
|
+
var highlightsTokens = [];
|
|
236
|
+
for (var _token in values) {
|
|
237
|
+
var isBase = basicTokens.has(_token);
|
|
238
|
+
(highlightTokens.has(_token) ? highlightsTokens : processedTokens).push({
|
|
239
|
+
name: isBase ? "--".concat(_token) : "--".concat(prefix, "-").concat(_token),
|
|
240
|
+
description: descriptions[_token],
|
|
241
|
+
value: values[_token]
|
|
201
242
|
});
|
|
202
243
|
}
|
|
203
244
|
return {
|
|
204
|
-
processedTokens,
|
|
205
|
-
highlightsTokens,
|
|
206
|
-
values,
|
|
207
|
-
types,
|
|
208
|
-
rawValues,
|
|
209
|
-
descriptions,
|
|
210
|
-
basicTokens
|
|
245
|
+
processedTokens: processedTokens,
|
|
246
|
+
highlightsTokens: highlightsTokens,
|
|
247
|
+
values: values,
|
|
248
|
+
types: types,
|
|
249
|
+
rawValues: rawValues,
|
|
250
|
+
descriptions: descriptions,
|
|
251
|
+
basicTokens: basicTokens
|
|
211
252
|
};
|
|
212
253
|
};
|
|
213
|
-
exports.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
cssLines.push(
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
254
|
+
var tokensToCss = exports.tokensToCss = function tokensToCss(tokens) {
|
|
255
|
+
var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ':root';
|
|
256
|
+
var cssLines = [];
|
|
257
|
+
cssLines.push("".concat(selector, " {"));
|
|
258
|
+
var _iterator3 = (0, _createForOfIteratorHelper2["default"])(tokens),
|
|
259
|
+
_step3;
|
|
260
|
+
try {
|
|
261
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
262
|
+
var token = _step3.value;
|
|
263
|
+
if (token.description) cssLines.push(" /* ".concat(token.description, " */"));
|
|
264
|
+
cssLines.push(" ".concat(token.name, ": ").concat(token.value, ";"));
|
|
265
|
+
}
|
|
266
|
+
} catch (err) {
|
|
267
|
+
_iterator3.e(err);
|
|
268
|
+
} finally {
|
|
269
|
+
_iterator3.f();
|
|
220
270
|
}
|
|
221
271
|
cssLines.push('}');
|
|
222
272
|
return cssLines.join('\n');
|
|
223
273
|
};
|
|
224
|
-
exports.
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
274
|
+
var tokensToJson = exports.tokensToJson = function tokensToJson(tokens) {
|
|
275
|
+
var themeFile = {};
|
|
276
|
+
var _iterator4 = (0, _createForOfIteratorHelper2["default"])(tokens),
|
|
277
|
+
_step4;
|
|
278
|
+
try {
|
|
279
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
280
|
+
var token = _step4.value;
|
|
281
|
+
themeFile[token.name] = token.value;
|
|
282
|
+
}
|
|
283
|
+
} catch (err) {
|
|
284
|
+
_iterator4.e(err);
|
|
285
|
+
} finally {
|
|
286
|
+
_iterator4.f();
|
|
229
287
|
}
|
|
230
288
|
return JSON.stringify(themeFile, null, 2) + '\n';
|
|
231
289
|
};
|
|
232
|
-
exports.
|
|
233
|
-
|
|
234
|
-
const jsLines = [];
|
|
290
|
+
var tokensToJs = exports.tokensToJs = function tokensToJs(tokens) {
|
|
291
|
+
var jsLines = [];
|
|
235
292
|
jsLines.push('export default {');
|
|
236
|
-
|
|
237
|
-
|
|
293
|
+
var _iterator5 = (0, _createForOfIteratorHelper2["default"])(tokens),
|
|
294
|
+
_step5;
|
|
295
|
+
try {
|
|
296
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
297
|
+
var token = _step5.value;
|
|
298
|
+
jsLines.push(" '".concat(token.name, "': '").concat(token.value, "',"));
|
|
299
|
+
}
|
|
300
|
+
} catch (err) {
|
|
301
|
+
_iterator5.e(err);
|
|
302
|
+
} finally {
|
|
303
|
+
_iterator5.f();
|
|
238
304
|
}
|
|
239
305
|
jsLines.push('};\n');
|
|
240
306
|
return jsLines.join('\n');
|
|
241
307
|
};
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
308
|
+
var getByPath = function getByPath(obj, path) {
|
|
309
|
+
var parts = path.split('.');
|
|
310
|
+
var result = obj;
|
|
311
|
+
var _iterator6 = (0, _createForOfIteratorHelper2["default"])(parts),
|
|
312
|
+
_step6;
|
|
313
|
+
try {
|
|
314
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
315
|
+
var _result;
|
|
316
|
+
var part = _step6.value;
|
|
317
|
+
result = (_result = result) === null || _result === void 0 ? void 0 : _result[part];
|
|
318
|
+
}
|
|
319
|
+
} catch (err) {
|
|
320
|
+
_iterator6.e(err);
|
|
321
|
+
} finally {
|
|
322
|
+
_iterator6.f();
|
|
248
323
|
}
|
|
249
324
|
return result;
|
|
250
325
|
};
|
package/lib/theme/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["_colorjs","_interopRequireDefault","require","Color","ColorJS","processTokens","base","tokens","featureHighlight","prefix","values","basicTokens","Set","highlightTokens","modifications","types","descriptions","mixins","traverse","node","pathParts","setToAdd","key","type","path","join","value","push","Error","add","description","$extensions","extension","modify","resolveColor","color","includes","replaceColors","replace","startsWith","endsWith","lastComa","lastIndexOf","alpha","Number","parseFloat","substring","length","isNaN","resolvedColor","map","hex","parseInt","split","baseColor","r","g","b","chunk","a","getByPath","resolveToken","token","factor","resolvedValue","reference","indexOf","resolvedToken","str","result","i","start","undefined","rawValues","modification","space","colorRegex","colors","match","originalColor","lightness","hsl","l","difference","set","Math","min","to","modifiedColor","round","toString","format","processedTokens","highlightsTokens","isBase","has","name","exports","tokensToCss","selector","cssLines","tokensToJson","themeFile","JSON","stringify","tokensToJs","jsLines","obj","parts","part"],"sources":["../../src/theme/utils.ts"],"sourcesContent":["import ColorJS from 'colorjs.io';\nconst Color = ColorJS as any;\n\ntype ExtensionsInput = {\n 'studio.tokens': {\n modify: {\n type: string;\n value: number;\n space: string;\n };\n };\n};\n\ntype TokensInput = {\n [nestedKey: string]:\n | TokensInput\n | {\n value: string;\n type: string;\n description: string;\n $extensions?: ExtensionsInput;\n };\n};\n\nexport const processTokens = (base: TokensInput, tokens: TokensInput, featureHighlight: TokensInput, prefix: string) => {\n const values: { [tokenName: string]: string } = {};\n const basicTokens = new Set<string>();\n const highlightTokens = new Set<string>();\n const modifications: {\n [tokenName: string]: {\n type: 'lighten' | 'darken' | 'alpha';\n value: number;\n space: 'lch' | 'srgb' | 'p3' | 'hsl';\n }[];\n } = {};\n const types: { [tokenName: string]: string } = {};\n const descriptions: { [tokenName: string]: string } = {};\n const mixins: string[] = [];\n type ColorPattern =\n | `{${string}.${string}}`\n | `{${string}.${string}}, ${number}`\n | `#${string}`\n | `{${string}.${string}}, ${number}`;\n type DesignTokenNode =\n | {\n type: string;\n value:\n | string\n | { [subTokens: string]: `{${string}}` }\n | ColorPattern\n | `{${string}}`\n | `{${string}*${number}}`\n | `${ColorPattern}; ${ColorPattern}`;\n\n description?: string;\n $extensions?: ExtensionsInput;\n }\n | DesignTokenTree;\n type DesignTokenTree = { [childrenNodeName: string]: DesignTokenNode };\n const traverse = (node: DesignTokenNode, pathParts: string[] = [], setToAdd?: Set<string>) => {\n for (const key in node) {\n if (key === 'type') continue;\n if (key === 'value') continue;\n if (key === 'description') continue;\n if (key === '$extensions') continue;\n traverse((node as any)[key], [...pathParts, key], setToAdd);\n }\n if ('type' in node && typeof node.type === 'string') {\n const path = pathParts.join('-');\n types[path] = node.type;\n if (typeof node.value === 'object') {\n mixins.push(path);\n return;\n }\n if (values[path]) {\n throw new Error(`Duplicated design token \"${path}\"`);\n }\n values[path] = node.value;\n setToAdd?.add(path);\n\n if (typeof node.description === 'string') descriptions[path] = node.description;\n if (node.$extensions) {\n for (const extension in node.$extensions) {\n if (extension === 'studio.tokens') {\n modifications[path] ??= [];\n modifications[path].push((node.$extensions as any)['studio.tokens'].modify);\n } else {\n throw new Error(`Unsupported extension \"${extension}\" for design token \"${path}\"`);\n }\n }\n }\n }\n };\n\n traverse(base, [], basicTokens);\n traverse(tokens);\n traverse(featureHighlight, [], highlightTokens);\n\n const resolveColor = (color: string): string => {\n if (color.includes('linear-gradient')) {\n if (color.includes('rgba')) {\n return replaceColors(color);\n } else {\n return color.replace(/\\{[a-z0-9.]+\\}/g, resolveColor);\n }\n }\n if (color.startsWith('rgba(') && color.endsWith(')')) {\n const lastComa = color.lastIndexOf(',');\n const alpha = Number.parseFloat(color.substring(lastComa + 1, color.length - 1));\n if (Number.isNaN(alpha)) {\n throw new Error(`Unable to parse rgba of ${color}`);\n }\n let resolvedColor = color.substring('rgba('.length, lastComa);\n if (resolvedColor.startsWith('{')) resolvedColor = resolveColor(resolvedColor);\n if (resolvedColor.startsWith('$')) resolvedColor = resolveColor(resolvedColor);\n if (resolvedColor.startsWith('#')) {\n if (resolvedColor.length === 1 + 3) {\n resolvedColor = [resolvedColor[1], resolvedColor[2], resolvedColor[3]]\n .map((hex) => Number.parseInt(hex, 16))\n .join(', ');\n } else if (resolvedColor.length === 1 + 6) {\n resolvedColor = [\n resolvedColor.substring(1, 3),\n resolvedColor.substring(3, 5),\n resolvedColor.substring(5, 7),\n ]\n .map((hex) => Number.parseInt(hex, 16))\n .join(', ');\n } else {\n throw new Error(\n `Unable to convert hex ${resolveColor} to rgb list of colors (processing ${color})`,\n );\n }\n }\n\n if (!resolvedColor || resolvedColor.split(',').length !== 3) {\n throw new Error(`Unable to produce rgba of ${color} (input format is not supported yet)`);\n }\n\n return `rgba(${resolvedColor}, ${alpha})`;\n }\n if (color.split(', ').length === 2) {\n const baseColor = resolveColor(color.split(', ')[0]);\n const [r, g, b] = (\n baseColor.length === 4\n ? [baseColor[1], baseColor[2], baseColor[3]]\n : [baseColor.substring(1, 3), baseColor.substring(3, 5), baseColor.substring(5, 7)]\n ).map((chunk) => Number.parseInt(chunk, 16));\n const a = Number.parseFloat(color.split(', ')[1]);\n\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n if (color.startsWith('{') && color.split('.').length > 0 && color.endsWith('}')) {\n const path = color.substring(1, color.length - 1);\n const resolvedColor =\n getByPath(base as any, path)?.value ?? values[path.split('.').join('-')];\n if (!resolvedColor) {\n throw new Error(`Color ${color} was not found in base palette`);\n }\n return resolvedColor;\n }\n if (color.startsWith('$') && color.split('.').length > 0) {\n const path = color.substring(1);\n const resolvedColor =\n getByPath(base as any, path)?.value ?? values[path.split('.').join('-')];\n if (!resolvedColor) {\n throw new Error(`Color ${color} was not found`);\n }\n return resolvedColor;\n }\n if (color.startsWith('#')) {\n return color;\n }\n throw new Error(`Unable to process color ${color}`);\n };\n const resolveToken = (token: string): string => {\n if (token.includes('*')) {\n const [value, factor] = token.split('*');\n const resolvedValue = resolveToken(value);\n if (!resolvedValue.endsWith('px')) {\n throw new Error(`Unsupported expression ${token}`);\n }\n return `${Number.parseFloat(resolvedValue) * Number.parseFloat(factor)}px`;\n } else if (token.includes('{') && token.includes('}')) {\n const reference = token\n .substring(token.indexOf('{') + 1, token.indexOf('}'))\n .replace(/\\./g, '-');\n const resolvedToken =\n token.substring(0, token.indexOf('{')) +\n values[reference] +\n token.substring(token.indexOf('}') + 1);\n if (!resolvedToken || resolvedToken.includes('{')) {\n throw new Error(`On moment of resolving ${token}, ${resolvedToken} was not resolved yet`);\n }\n return resolvedToken;\n } else {\n return token;\n }\n };\n const replaceColors = (str: string) => {\n let result = '';\n for (let i = 0; i < str.length; i++) {\n if (str.substring(i, i + 'rgba('.length) === 'rgba(') {\n const start = i;\n while (str[i] !== undefined && str[i] !== ')') i++;\n result += resolveColor(str.substring(start, i + 1));\n } else {\n result += str[i];\n }\n }\n\n return result;\n };\n\n const rawValues = { ...values };\n\n for (const token in values) {\n if (types[token] === 'color') {\n values[token] = resolveColor(values[token]);\n } else if (types[token] === 'boxShadow') {\n values[token] = resolveToken(values[token].split('; ').map(replaceColors).join(', '));\n } else if (\n types[token] === 'sizing' ||\n types[token] === 'spacing' ||\n types[token] === 'borderRadius' ||\n types[token] === 'other'\n ) {\n values[token] = resolveToken(values[token]);\n }\n for (const modification of modifications[token] ?? []) {\n // refer to https://docs.tokens.studio/tokens/color-modifiers and https://github.com/tokens-studio/figma-plugin/tree/main/src/utils/color if extension is needed\n\n rawValues[token] = `${rawValues[token]} / ${modification.type}(${modification.value}) / ${modification.space}`;\n\n // array + regex to process gradients with several colors\n const colorRegex = /(#[0-9a-f]{6}|rgba\\([0-9., ]+\\))/gi;\n const colors = values[token].match(colorRegex) ?? [];\n\n for (const originalColor of colors) {\n let color = new Color(originalColor);\n\n if (modification.space === 'hsl') {\n if (modification.type === 'lighten') {\n const lightness = color.hsl.l;\n const difference = 100 - lightness;\n color.set('hsl.l', Math.min(100, lightness + difference * modification.value));\n } else {\n throw new Error(`Unsupported color modification ${modification.type} of token ${token}`);\n }\n } else {\n throw new Error(`Unsupported color space ${modification.space} of token ${token}`);\n }\n\n color = color.to('sRGB');\n let modifiedColor = '';\n\n if (color.alpha !== 1) {\n const r = Math.round(color.r * 255);\n const g = Math.round(color.g * 255);\n const b = Math.round(color.b * 255);\n const a = color.alpha;\n modifiedColor = `rgba(${r}, ${g}, ${b}, ${a})`;\n } else {\n modifiedColor = color.toString({ format: 'hex' });\n }\n\n values[token] = values[token].replace(originalColor, modifiedColor);\n }\n }\n }\n\n const processedTokens: { name: string; value: string; description: string }[] = [];\n const highlightsTokens: { name: string; value: string; description: string }[] = [];\n\n for (const token in values) {\n const isBase = basicTokens.has(token);\n (highlightTokens.has(token) ? highlightsTokens : processedTokens).push({\n name: isBase ? `--${token}` : `--${prefix}-${token}`,\n description: descriptions[token],\n value: values[token],\n });\n }\n\n return { processedTokens, highlightsTokens, values, types, rawValues, descriptions, basicTokens };\n};\n\nexport const tokensToCss = (\n tokens: { name: string; value: string; description: string }[],\n selector = ':root',\n) => {\n const cssLines: string[] = [];\n cssLines.push(`${selector} {`);\n for (const token of tokens) {\n if (token.description) cssLines.push(` /* ${token.description} */`);\n cssLines.push(` ${token.name}: ${token.value};`);\n }\n cssLines.push('}');\n return cssLines.join('\\n');\n};\nexport const tokensToJson = (tokens: { name: string; value: string; description: string }[]) => {\n const themeFile: Record<string, string> = {};\n for (const token of tokens) {\n themeFile[token.name] = token.value;\n }\n return JSON.stringify(themeFile, null, 2) + '\\n';\n};\nexport const tokensToJs = (tokens: { name: string; value: string; description: string }[]) => {\n const jsLines: string[] = [];\n jsLines.push('export default {');\n for (const token of tokens) {\n jsLines.push(` '${token.name}': '${token.value}',`);\n }\n jsLines.push('};\\n');\n return jsLines.join('\\n');\n};\n\nconst getByPath = (obj: any, path: string) => {\n const parts = path.split('.');\n let result = obj;\n for (const part of parts) {\n result = result?.[part];\n }\n return result;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utils.js","names":["_colorjs","_interopRequireDefault","require","Color","ColorJS","processTokens","exports","base","tokens","featureHighlight","prefix","values","basicTokens","Set","highlightTokens","modifications","types","descriptions","mixins","traverse","node","pathParts","arguments","length","undefined","setToAdd","key","concat","_toConsumableArray2","type","path","join","_typeof2","value","push","Error","add","description","$extensions","extension","_modifications$path","modify","resolveColor","color","includes","replaceColors","replace","startsWith","endsWith","lastComa","lastIndexOf","alpha","Number","parseFloat","substring","isNaN","resolvedColor","map","hex","parseInt","split","baseColor","_map","chunk","_map2","_slicedToArray2","r","g","b","a","_getByPath$value","_getByPath","getByPath","_getByPath$value2","_getByPath2","resolveToken","token","_token$split","_token$split2","factor","resolvedValue","reference","indexOf","resolvedToken","str","result","i","start","rawValues","_objectSpread2","_modifications$token","_iterator","_createForOfIteratorHelper2","_step","s","n","done","_values$token$match","modification","space","colorRegex","colors","match","_iterator2","_step2","originalColor","lightness","hsl","l","difference","set","Math","min","to","modifiedColor","round","toString","format","err","e","f","processedTokens","highlightsTokens","isBase","has","name","tokensToCss","selector","cssLines","_iterator3","_step3","tokensToJson","themeFile","_iterator4","_step4","JSON","stringify","tokensToJs","jsLines","_iterator5","_step5","obj","parts","_iterator6","_step6","_result","part"],"sources":["../../src/theme/utils.ts"],"sourcesContent":["import ColorJS from 'colorjs.io';\nconst Color = ColorJS as any;\n\ntype ExtensionsInput = {\n 'studio.tokens': {\n modify: {\n type: string;\n value: number;\n space: string;\n };\n };\n};\n\ntype TokensInput = {\n [nestedKey: string]:\n | TokensInput\n | {\n value: string;\n type: string;\n description: string;\n $extensions?: ExtensionsInput;\n };\n};\n\nexport const processTokens = (base: TokensInput, tokens: TokensInput, featureHighlight: TokensInput, prefix: string) => {\n const values: { [tokenName: string]: string } = {};\n const basicTokens = new Set<string>();\n const highlightTokens = new Set<string>();\n const modifications: {\n [tokenName: string]: {\n type: 'lighten' | 'darken' | 'alpha';\n value: number;\n space: 'lch' | 'srgb' | 'p3' | 'hsl';\n }[];\n } = {};\n const types: { [tokenName: string]: string } = {};\n const descriptions: { [tokenName: string]: string } = {};\n const mixins: string[] = [];\n type ColorPattern =\n | `{${string}.${string}}`\n | `{${string}.${string}}, ${number}`\n | `#${string}`\n | `{${string}.${string}}, ${number}`;\n type DesignTokenNode =\n | {\n type: string;\n value:\n | string\n | { [subTokens: string]: `{${string}}` }\n | ColorPattern\n | `{${string}}`\n | `{${string}*${number}}`\n | `${ColorPattern}; ${ColorPattern}`;\n\n description?: string;\n $extensions?: ExtensionsInput;\n }\n | DesignTokenTree;\n type DesignTokenTree = { [childrenNodeName: string]: DesignTokenNode };\n const traverse = (node: DesignTokenNode, pathParts: string[] = [], setToAdd?: Set<string>) => {\n for (const key in node) {\n if (key === 'type') continue;\n if (key === 'value') continue;\n if (key === 'description') continue;\n if (key === '$extensions') continue;\n traverse((node as any)[key], [...pathParts, key], setToAdd);\n }\n if ('type' in node && typeof node.type === 'string') {\n const path = pathParts.join('-');\n types[path] = node.type;\n if (typeof node.value === 'object') {\n mixins.push(path);\n return;\n }\n if (values[path]) {\n throw new Error(`Duplicated design token \"${path}\"`);\n }\n values[path] = node.value;\n setToAdd?.add(path);\n\n if (typeof node.description === 'string') descriptions[path] = node.description;\n if (node.$extensions) {\n for (const extension in node.$extensions) {\n if (extension === 'studio.tokens') {\n modifications[path] ??= [];\n modifications[path].push((node.$extensions as any)['studio.tokens'].modify);\n } else {\n throw new Error(`Unsupported extension \"${extension}\" for design token \"${path}\"`);\n }\n }\n }\n }\n };\n\n traverse(base, [], basicTokens);\n traverse(tokens);\n traverse(featureHighlight, [], highlightTokens);\n\n const resolveColor = (color: string): string => {\n if (color.includes('linear-gradient')) {\n if (color.includes('rgba')) {\n return replaceColors(color);\n } else {\n return color.replace(/\\{[a-z0-9.]+\\}/g, resolveColor);\n }\n }\n if (color.startsWith('rgba(') && color.endsWith(')')) {\n const lastComa = color.lastIndexOf(',');\n const alpha = Number.parseFloat(color.substring(lastComa + 1, color.length - 1));\n if (Number.isNaN(alpha)) {\n throw new Error(`Unable to parse rgba of ${color}`);\n }\n let resolvedColor = color.substring('rgba('.length, lastComa);\n if (resolvedColor.startsWith('{')) resolvedColor = resolveColor(resolvedColor);\n if (resolvedColor.startsWith('$')) resolvedColor = resolveColor(resolvedColor);\n if (resolvedColor.startsWith('#')) {\n if (resolvedColor.length === 1 + 3) {\n resolvedColor = [resolvedColor[1], resolvedColor[2], resolvedColor[3]]\n .map((hex) => Number.parseInt(hex, 16))\n .join(', ');\n } else if (resolvedColor.length === 1 + 6) {\n resolvedColor = [\n resolvedColor.substring(1, 3),\n resolvedColor.substring(3, 5),\n resolvedColor.substring(5, 7),\n ]\n .map((hex) => Number.parseInt(hex, 16))\n .join(', ');\n } else {\n throw new Error(\n `Unable to convert hex ${resolveColor} to rgb list of colors (processing ${color})`,\n );\n }\n }\n\n if (!resolvedColor || resolvedColor.split(',').length !== 3) {\n throw new Error(`Unable to produce rgba of ${color} (input format is not supported yet)`);\n }\n\n return `rgba(${resolvedColor}, ${alpha})`;\n }\n if (color.split(', ').length === 2) {\n const baseColor = resolveColor(color.split(', ')[0]);\n const [r, g, b] = (\n baseColor.length === 4\n ? [baseColor[1], baseColor[2], baseColor[3]]\n : [baseColor.substring(1, 3), baseColor.substring(3, 5), baseColor.substring(5, 7)]\n ).map((chunk) => Number.parseInt(chunk, 16));\n const a = Number.parseFloat(color.split(', ')[1]);\n\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n if (color.startsWith('{') && color.split('.').length > 0 && color.endsWith('}')) {\n const path = color.substring(1, color.length - 1);\n const resolvedColor =\n getByPath(base as any, path)?.value ?? values[path.split('.').join('-')];\n if (!resolvedColor) {\n throw new Error(`Color ${color} was not found in base palette`);\n }\n return resolvedColor;\n }\n if (color.startsWith('$') && color.split('.').length > 0) {\n const path = color.substring(1);\n const resolvedColor =\n getByPath(base as any, path)?.value ?? values[path.split('.').join('-')];\n if (!resolvedColor) {\n throw new Error(`Color ${color} was not found`);\n }\n return resolvedColor;\n }\n if (color.startsWith('#')) {\n return color;\n }\n throw new Error(`Unable to process color ${color}`);\n };\n const resolveToken = (token: string): string => {\n if (token.includes('*')) {\n const [value, factor] = token.split('*');\n const resolvedValue = resolveToken(value);\n if (!resolvedValue.endsWith('px')) {\n throw new Error(`Unsupported expression ${token}`);\n }\n return `${Number.parseFloat(resolvedValue) * Number.parseFloat(factor)}px`;\n } else if (token.includes('{') && token.includes('}')) {\n const reference = token\n .substring(token.indexOf('{') + 1, token.indexOf('}'))\n .replace(/\\./g, '-');\n const resolvedToken =\n token.substring(0, token.indexOf('{')) +\n values[reference] +\n token.substring(token.indexOf('}') + 1);\n if (!resolvedToken || resolvedToken.includes('{')) {\n throw new Error(`On moment of resolving ${token}, ${resolvedToken} was not resolved yet`);\n }\n return resolvedToken;\n } else {\n return token;\n }\n };\n const replaceColors = (str: string) => {\n let result = '';\n for (let i = 0; i < str.length; i++) {\n if (str.substring(i, i + 'rgba('.length) === 'rgba(') {\n const start = i;\n while (str[i] !== undefined && str[i] !== ')') i++;\n result += resolveColor(str.substring(start, i + 1));\n } else {\n result += str[i];\n }\n }\n\n return result;\n };\n\n const rawValues = { ...values };\n\n for (const token in values) {\n if (types[token] === 'color') {\n values[token] = resolveColor(values[token]);\n } else if (types[token] === 'boxShadow') {\n values[token] = resolveToken(values[token].split('; ').map(replaceColors).join(', '));\n } else if (\n types[token] === 'sizing' ||\n types[token] === 'spacing' ||\n types[token] === 'borderRadius' ||\n types[token] === 'other'\n ) {\n values[token] = resolveToken(values[token]);\n }\n for (const modification of modifications[token] ?? []) {\n // refer to https://docs.tokens.studio/tokens/color-modifiers and https://github.com/tokens-studio/figma-plugin/tree/main/src/utils/color if extension is needed\n\n rawValues[token] = `${rawValues[token]} / ${modification.type}(${modification.value}) / ${modification.space}`;\n\n // array + regex to process gradients with several colors\n const colorRegex = /(#[0-9a-f]{6}|rgba\\([0-9., ]+\\))/gi;\n const colors = values[token].match(colorRegex) ?? [];\n\n for (const originalColor of colors) {\n let color = new Color(originalColor);\n\n if (modification.space === 'hsl') {\n if (modification.type === 'lighten') {\n const lightness = color.hsl.l;\n const difference = 100 - lightness;\n color.set('hsl.l', Math.min(100, lightness + difference * modification.value));\n } else {\n throw new Error(`Unsupported color modification ${modification.type} of token ${token}`);\n }\n } else {\n throw new Error(`Unsupported color space ${modification.space} of token ${token}`);\n }\n\n color = color.to('sRGB');\n let modifiedColor = '';\n\n if (color.alpha !== 1) {\n const r = Math.round(color.r * 255);\n const g = Math.round(color.g * 255);\n const b = Math.round(color.b * 255);\n const a = color.alpha;\n modifiedColor = `rgba(${r}, ${g}, ${b}, ${a})`;\n } else {\n modifiedColor = color.toString({ format: 'hex' });\n }\n\n values[token] = values[token].replace(originalColor, modifiedColor);\n }\n }\n }\n\n const processedTokens: { name: string; value: string; description: string }[] = [];\n const highlightsTokens: { name: string; value: string; description: string }[] = [];\n\n for (const token in values) {\n const isBase = basicTokens.has(token);\n (highlightTokens.has(token) ? highlightsTokens : processedTokens).push({\n name: isBase ? `--${token}` : `--${prefix}-${token}`,\n description: descriptions[token],\n value: values[token],\n });\n }\n\n return { processedTokens, highlightsTokens, values, types, rawValues, descriptions, basicTokens };\n};\n\nexport const tokensToCss = (\n tokens: { name: string; value: string; description: string }[],\n selector = ':root',\n) => {\n const cssLines: string[] = [];\n cssLines.push(`${selector} {`);\n for (const token of tokens) {\n if (token.description) cssLines.push(` /* ${token.description} */`);\n cssLines.push(` ${token.name}: ${token.value};`);\n }\n cssLines.push('}');\n return cssLines.join('\\n');\n};\nexport const tokensToJson = (tokens: { name: string; value: string; description: string }[]) => {\n const themeFile: Record<string, string> = {};\n for (const token of tokens) {\n themeFile[token.name] = token.value;\n }\n return JSON.stringify(themeFile, null, 2) + '\\n';\n};\nexport const tokensToJs = (tokens: { name: string; value: string; description: string }[]) => {\n const jsLines: string[] = [];\n jsLines.push('export default {');\n for (const token of tokens) {\n jsLines.push(` '${token.name}': '${token.value}',`);\n }\n jsLines.push('};\\n');\n return jsLines.join('\\n');\n};\n\nconst getByPath = (obj: any, path: string) => {\n const parts = path.split('.');\n let result = obj;\n for (const part of parts) {\n result = result?.[part];\n }\n return result;\n};\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAMC,KAAK,GAAGC,mBAAc;AAuBrB,IAAMC,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,SAAhBA,aAAaA,CAAIE,IAAiB,EAAEC,MAAmB,EAAEC,gBAA6B,EAAEC,MAAc,EAAK;EACtH,IAAMC,MAAuC,GAAG,CAAC,CAAC;EAClD,IAAMC,WAAW,GAAG,IAAIC,GAAG,CAAS,CAAC;EACrC,IAAMC,eAAe,GAAG,IAAID,GAAG,CAAS,CAAC;EACzC,IAAME,aAML,GAAG,CAAC,CAAC;EACN,IAAMC,KAAsC,GAAG,CAAC,CAAC;EACjD,IAAMC,YAA6C,GAAG,CAAC,CAAC;EACxD,IAAMC,MAAgB,GAAG,EAAE;EAsB3B,IAAMC,SAAQ,GAAG,SAAXA,QAAQA,CAAIC,IAAqB,EAAuD;IAAA,IAArDC,SAAmB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAA,IAAEG,QAAsB,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IACvF,KAAK,IAAME,GAAG,IAAIN,IAAI,EAAE;MACtB,IAAIM,GAAG,KAAK,MAAM,EAAE;MACpB,IAAIA,GAAG,KAAK,OAAO,EAAE;MACrB,IAAIA,GAAG,KAAK,aAAa,EAAE;MAC3B,IAAIA,GAAG,KAAK,aAAa,EAAE;MAC3BP,SAAQ,CAAEC,IAAI,CAASM,GAAG,CAAC,KAAAC,MAAA,KAAAC,mBAAA,aAAMP,SAAS,IAAEK,GAAG,IAAGD,QAAQ,CAAC;IAC7D;IACA,IAAI,MAAM,IAAIL,IAAI,IAAI,OAAOA,IAAI,CAACS,IAAI,KAAK,QAAQ,EAAE;MACnD,IAAMC,IAAI,GAAGT,SAAS,CAACU,IAAI,CAAC,GAAG,CAAC;MAChCf,KAAK,CAACc,IAAI,CAAC,GAAGV,IAAI,CAACS,IAAI;MACvB,IAAI,IAAAG,QAAA,aAAOZ,IAAI,CAACa,KAAK,MAAK,QAAQ,EAAE;QAClCf,MAAM,CAACgB,IAAI,CAACJ,IAAI,CAAC;QACjB;MACF;MACA,IAAInB,MAAM,CAACmB,IAAI,CAAC,EAAE;QAChB,MAAM,IAAIK,KAAK,8BAAAR,MAAA,CAA6BG,IAAI,OAAG,CAAC;MACtD;MACAnB,MAAM,CAACmB,IAAI,CAAC,GAAGV,IAAI,CAACa,KAAK;MACzBR,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEW,GAAG,CAACN,IAAI,CAAC;MAEnB,IAAI,OAAOV,IAAI,CAACiB,WAAW,KAAK,QAAQ,EAAEpB,YAAY,CAACa,IAAI,CAAC,GAAGV,IAAI,CAACiB,WAAW;MAC/E,IAAIjB,IAAI,CAACkB,WAAW,EAAE;QACpB,KAAK,IAAMC,SAAS,IAAInB,IAAI,CAACkB,WAAW,EAAE;UACxC,IAAIC,SAAS,KAAK,eAAe,EAAE;YAAA,IAAAC,mBAAA;YACjC,CAAAA,mBAAA,GAAAzB,aAAa,CAACe,IAAI,CAAC,cAAAU,mBAAA,cAAAA,mBAAA,GAAnBzB,aAAa,CAACe,IAAI,CAAC,GAAK,EAAE;YAC1Bf,aAAa,CAACe,IAAI,CAAC,CAACI,IAAI,CAAEd,IAAI,CAACkB,WAAW,CAAS,eAAe,CAAC,CAACG,MAAM,CAAC;UAC7E,CAAC,MAAM;YACL,MAAM,IAAIN,KAAK,4BAAAR,MAAA,CAA2BY,SAAS,4BAAAZ,MAAA,CAAuBG,IAAI,OAAG,CAAC;UACpF;QACF;MACF;IACF;EACF,CAAC;EAEDX,SAAQ,CAACZ,IAAI,EAAE,EAAE,EAAEK,WAAW,CAAC;EAC/BO,SAAQ,CAACX,MAAM,CAAC;EAChBW,SAAQ,CAACV,gBAAgB,EAAE,EAAE,EAAEK,eAAe,CAAC;EAE/C,IAAM4B,aAAY,GAAG,SAAfA,YAAYA,CAAIC,KAAa,EAAa;IAC9C,IAAIA,KAAK,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;MACrC,IAAID,KAAK,CAACC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC1B,OAAOC,aAAa,CAACF,KAAK,CAAC;MAC7B,CAAC,MAAM;QACL,OAAOA,KAAK,CAACG,OAAO,CAAC,iBAAiB,EAAEJ,aAAY,CAAC;MACvD;IACF;IACA,IAAIC,KAAK,CAACI,UAAU,CAAC,OAAO,CAAC,IAAIJ,KAAK,CAACK,QAAQ,CAAC,GAAG,CAAC,EAAE;MACpD,IAAMC,QAAQ,GAAGN,KAAK,CAACO,WAAW,CAAC,GAAG,CAAC;MACvC,IAAMC,KAAK,GAAGC,MAAM,CAACC,UAAU,CAACV,KAAK,CAACW,SAAS,CAACL,QAAQ,GAAG,CAAC,EAAEN,KAAK,CAACpB,MAAM,GAAG,CAAC,CAAC,CAAC;MAChF,IAAI6B,MAAM,CAACG,KAAK,CAACJ,KAAK,CAAC,EAAE;QACvB,MAAM,IAAIhB,KAAK,4BAAAR,MAAA,CAA4BgB,KAAK,CAAE,CAAC;MACrD;MACA,IAAIa,aAAa,GAAGb,KAAK,CAACW,SAAS,CAAC,OAAO,CAAC/B,MAAM,EAAE0B,QAAQ,CAAC;MAC7D,IAAIO,aAAa,CAACT,UAAU,CAAC,GAAG,CAAC,EAAES,aAAa,GAAGd,aAAY,CAACc,aAAa,CAAC;MAC9E,IAAIA,aAAa,CAACT,UAAU,CAAC,GAAG,CAAC,EAAES,aAAa,GAAGd,aAAY,CAACc,aAAa,CAAC;MAC9E,IAAIA,aAAa,CAACT,UAAU,CAAC,GAAG,CAAC,EAAE;QACjC,IAAIS,aAAa,CAACjC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;UAClCiC,aAAa,GAAG,CAACA,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CAAC,CACnEC,GAAG,CAAC,UAACC,GAAG;YAAA,OAAKN,MAAM,CAACO,QAAQ,CAACD,GAAG,EAAE,EAAE,CAAC;UAAA,EAAC,CACtC3B,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,MAAM,IAAIyB,aAAa,CAACjC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;UACzCiC,aAAa,GAAG,CACdA,aAAa,CAACF,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7BE,aAAa,CAACF,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7BE,aAAa,CAACF,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9B,CACEG,GAAG,CAAC,UAACC,GAAG;YAAA,OAAKN,MAAM,CAACO,QAAQ,CAACD,GAAG,EAAE,EAAE,CAAC;UAAA,EAAC,CACtC3B,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,MAAM;UACL,MAAM,IAAII,KAAK,0BAAAR,MAAA,CACYe,aAAY,yCAAAf,MAAA,CAAsCgB,KAAK,MAClF,CAAC;QACH;MACF;MAEA,IAAI,CAACa,aAAa,IAAIA,aAAa,CAACI,KAAK,CAAC,GAAG,CAAC,CAACrC,MAAM,KAAK,CAAC,EAAE;QAC3D,MAAM,IAAIY,KAAK,8BAAAR,MAAA,CAA8BgB,KAAK,yCAAsC,CAAC;MAC3F;MAEA,eAAAhB,MAAA,CAAe6B,aAAa,QAAA7B,MAAA,CAAKwB,KAAK;IACxC;IACA,IAAIR,KAAK,CAACiB,KAAK,CAAC,IAAI,CAAC,CAACrC,MAAM,KAAK,CAAC,EAAE;MAClC,IAAMsC,SAAS,GAAGnB,aAAY,CAACC,KAAK,CAACiB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD,IAAAE,IAAA,GAAkB,CAChBD,SAAS,CAACtC,MAAM,KAAK,CAAC,GAClB,CAACsC,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC,GAC1C,CAACA,SAAS,CAACP,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEO,SAAS,CAACP,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEO,SAAS,CAACP,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACrFG,GAAG,CAAC,UAACM,KAAK;UAAA,OAAKX,MAAM,CAACO,QAAQ,CAACI,KAAK,EAAE,EAAE,CAAC;QAAA,EAAC;QAAAC,KAAA,OAAAC,eAAA,aAAAH,IAAA;QAJrCI,CAAC,GAAAF,KAAA;QAAEG,CAAC,GAAAH,KAAA;QAAEI,CAAC,GAAAJ,KAAA;MAKd,IAAMK,CAAC,GAAGjB,MAAM,CAACC,UAAU,CAACV,KAAK,CAACiB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;MAEjD,eAAAjC,MAAA,CAAeuC,CAAC,QAAAvC,MAAA,CAAKwC,CAAC,QAAAxC,MAAA,CAAKyC,CAAC,QAAAzC,MAAA,CAAK0C,CAAC;IACpC;IACA,IAAI1B,KAAK,CAACI,UAAU,CAAC,GAAG,CAAC,IAAIJ,KAAK,CAACiB,KAAK,CAAC,GAAG,CAAC,CAACrC,MAAM,GAAG,CAAC,IAAIoB,KAAK,CAACK,QAAQ,CAAC,GAAG,CAAC,EAAE;MAAA,IAAAsB,gBAAA,EAAAC,UAAA;MAC/E,IAAMzC,IAAI,GAAGa,KAAK,CAACW,SAAS,CAAC,CAAC,EAAEX,KAAK,CAACpB,MAAM,GAAG,CAAC,CAAC;MACjD,IAAMiC,cAAa,IAAAc,gBAAA,IAAAC,UAAA,GACjBC,SAAS,CAACjE,IAAI,EAASuB,IAAI,CAAC,cAAAyC,UAAA,uBAA5BA,UAAA,CAA8BtC,KAAK,cAAAqC,gBAAA,cAAAA,gBAAA,GAAI3D,MAAM,CAACmB,IAAI,CAAC8B,KAAK,CAAC,GAAG,CAAC,CAAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;MAC1E,IAAI,CAACyB,cAAa,EAAE;QAClB,MAAM,IAAIrB,KAAK,UAAAR,MAAA,CAAUgB,KAAK,mCAAgC,CAAC;MACjE;MACA,OAAOa,cAAa;IACtB;IACA,IAAIb,KAAK,CAACI,UAAU,CAAC,GAAG,CAAC,IAAIJ,KAAK,CAACiB,KAAK,CAAC,GAAG,CAAC,CAACrC,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAkD,iBAAA,EAAAC,WAAA;MACxD,IAAM5C,KAAI,GAAGa,KAAK,CAACW,SAAS,CAAC,CAAC,CAAC;MAC/B,IAAME,eAAa,IAAAiB,iBAAA,IAAAC,WAAA,GACjBF,SAAS,CAACjE,IAAI,EAASuB,KAAI,CAAC,cAAA4C,WAAA,uBAA5BA,WAAA,CAA8BzC,KAAK,cAAAwC,iBAAA,cAAAA,iBAAA,GAAI9D,MAAM,CAACmB,KAAI,CAAC8B,KAAK,CAAC,GAAG,CAAC,CAAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;MAC1E,IAAI,CAACyB,eAAa,EAAE;QAClB,MAAM,IAAIrB,KAAK,UAAAR,MAAA,CAAUgB,KAAK,mBAAgB,CAAC;MACjD;MACA,OAAOa,eAAa;IACtB;IACA,IAAIb,KAAK,CAACI,UAAU,CAAC,GAAG,CAAC,EAAE;MACzB,OAAOJ,KAAK;IACd;IACA,MAAM,IAAIR,KAAK,4BAAAR,MAAA,CAA4BgB,KAAK,CAAE,CAAC;EACrD,CAAC;EACD,IAAMgC,aAAY,GAAG,SAAfA,YAAYA,CAAIC,KAAa,EAAa;IAC9C,IAAIA,KAAK,CAAChC,QAAQ,CAAC,GAAG,CAAC,EAAE;MACvB,IAAAiC,YAAA,GAAwBD,KAAK,CAAChB,KAAK,CAAC,GAAG,CAAC;QAAAkB,aAAA,OAAAb,eAAA,aAAAY,YAAA;QAAjC5C,KAAK,GAAA6C,aAAA;QAAEC,MAAM,GAAAD,aAAA;MACpB,IAAME,aAAa,GAAGL,aAAY,CAAC1C,KAAK,CAAC;MACzC,IAAI,CAAC+C,aAAa,CAAChC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACjC,MAAM,IAAIb,KAAK,2BAAAR,MAAA,CAA2BiD,KAAK,CAAE,CAAC;MACpD;MACA,UAAAjD,MAAA,CAAUyB,MAAM,CAACC,UAAU,CAAC2B,aAAa,CAAC,GAAG5B,MAAM,CAACC,UAAU,CAAC0B,MAAM,CAAC;IACxE,CAAC,MAAM,IAAIH,KAAK,CAAChC,QAAQ,CAAC,GAAG,CAAC,IAAIgC,KAAK,CAAChC,QAAQ,CAAC,GAAG,CAAC,EAAE;MACrD,IAAMqC,SAAS,GAAGL,KAAK,CACpBtB,SAAS,CAACsB,KAAK,CAACM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAEN,KAAK,CAACM,OAAO,CAAC,GAAG,CAAC,CAAC,CACrDpC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;MACtB,IAAMqC,aAAa,GACjBP,KAAK,CAACtB,SAAS,CAAC,CAAC,EAAEsB,KAAK,CAACM,OAAO,CAAC,GAAG,CAAC,CAAC,GACtCvE,MAAM,CAACsE,SAAS,CAAC,GACjBL,KAAK,CAACtB,SAAS,CAACsB,KAAK,CAACM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MACzC,IAAI,CAACC,aAAa,IAAIA,aAAa,CAACvC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACjD,MAAM,IAAIT,KAAK,2BAAAR,MAAA,CAA2BiD,KAAK,QAAAjD,MAAA,CAAKwD,aAAa,0BAAuB,CAAC;MAC3F;MACA,OAAOA,aAAa;IACtB,CAAC,MAAM;MACL,OAAOP,KAAK;IACd;EACF,CAAC;EACD,IAAM/B,aAAa,GAAG,SAAhBA,aAAaA,CAAIuC,GAAW,EAAK;IACrC,IAAIC,MAAM,GAAG,EAAE;IACf,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,CAAC7D,MAAM,EAAE+D,CAAC,EAAE,EAAE;MACnC,IAAIF,GAAG,CAAC9B,SAAS,CAACgC,CAAC,EAAEA,CAAC,GAAG,OAAO,CAAC/D,MAAM,CAAC,KAAK,OAAO,EAAE;QACpD,IAAMgE,KAAK,GAAGD,CAAC;QACf,OAAOF,GAAG,CAACE,CAAC,CAAC,KAAK9D,SAAS,IAAI4D,GAAG,CAACE,CAAC,CAAC,KAAK,GAAG,EAAEA,CAAC,EAAE;QAClDD,MAAM,IAAI3C,aAAY,CAAC0C,GAAG,CAAC9B,SAAS,CAACiC,KAAK,EAAED,CAAC,GAAG,CAAC,CAAC,CAAC;MACrD,CAAC,MAAM;QACLD,MAAM,IAAID,GAAG,CAACE,CAAC,CAAC;MAClB;IACF;IAEA,OAAOD,MAAM;EACf,CAAC;EAED,IAAMG,SAAS,OAAAC,cAAA,iBAAQ9E,MAAM,CAAE;EAE/B,KAAK,IAAMiE,KAAK,IAAIjE,MAAM,EAAE;IAAA,IAAA+E,oBAAA;IAC1B,IAAI1E,KAAK,CAAC4D,KAAK,CAAC,KAAK,OAAO,EAAE;MAC5BjE,MAAM,CAACiE,KAAK,CAAC,GAAGlC,aAAY,CAAC/B,MAAM,CAACiE,KAAK,CAAC,CAAC;IAC7C,CAAC,MAAM,IAAI5D,KAAK,CAAC4D,KAAK,CAAC,KAAK,WAAW,EAAE;MACvCjE,MAAM,CAACiE,KAAK,CAAC,GAAGD,aAAY,CAAChE,MAAM,CAACiE,KAAK,CAAC,CAAChB,KAAK,CAAC,IAAI,CAAC,CAACH,GAAG,CAACZ,aAAa,CAAC,CAACd,IAAI,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC,MAAM,IACLf,KAAK,CAAC4D,KAAK,CAAC,KAAK,QAAQ,IACzB5D,KAAK,CAAC4D,KAAK,CAAC,KAAK,SAAS,IAC1B5D,KAAK,CAAC4D,KAAK,CAAC,KAAK,cAAc,IAC/B5D,KAAK,CAAC4D,KAAK,CAAC,KAAK,OAAO,EACxB;MACAjE,MAAM,CAACiE,KAAK,CAAC,GAAGD,aAAY,CAAChE,MAAM,CAACiE,KAAK,CAAC,CAAC;IAC7C;IAAC,IAAAe,SAAA,OAAAC,2BAAA,cAAAF,oBAAA,GAC0B3E,aAAa,CAAC6D,KAAK,CAAC,cAAAc,oBAAA,cAAAA,oBAAA,GAAI,EAAE;MAAAG,KAAA;IAAA;MAArD,KAAAF,SAAA,CAAAG,CAAA,MAAAD,KAAA,GAAAF,SAAA,CAAAI,CAAA,IAAAC,IAAA,GAAuD;QAAA,IAAAC,mBAAA;QAAA,IAA5CC,YAAY,GAAAL,KAAA,CAAA5D,KAAA;QACrB;;QAEAuD,SAAS,CAACZ,KAAK,CAAC,MAAAjD,MAAA,CAAM6D,SAAS,CAACZ,KAAK,CAAC,SAAAjD,MAAA,CAAMuE,YAAY,CAACrE,IAAI,OAAAF,MAAA,CAAIuE,YAAY,CAACjE,KAAK,UAAAN,MAAA,CAAOuE,YAAY,CAACC,KAAK,CAAE;;QAE9G;QACA,IAAMC,UAAU,GAAG,oCAAoC;QACvD,IAAMC,MAAM,IAAAJ,mBAAA,GAAGtF,MAAM,CAACiE,KAAK,CAAC,CAAC0B,KAAK,CAACF,UAAU,CAAC,cAAAH,mBAAA,cAAAA,mBAAA,GAAI,EAAE;QAAC,IAAAM,UAAA,OAAAX,2BAAA,aAEzBS,MAAM;UAAAG,MAAA;QAAA;UAAlC,KAAAD,UAAA,CAAAT,CAAA,MAAAU,MAAA,GAAAD,UAAA,CAAAR,CAAA,IAAAC,IAAA,GAAoC;YAAA,IAAzBS,aAAa,GAAAD,MAAA,CAAAvE,KAAA;YACtB,IAAIU,KAAK,GAAG,IAAIxC,KAAK,CAACsG,aAAa,CAAC;YAEpC,IAAIP,YAAY,CAACC,KAAK,KAAK,KAAK,EAAE;cAChC,IAAID,YAAY,CAACrE,IAAI,KAAK,SAAS,EAAE;gBACnC,IAAM6E,SAAS,GAAG/D,KAAK,CAACgE,GAAG,CAACC,CAAC;gBAC7B,IAAMC,UAAU,GAAG,GAAG,GAAGH,SAAS;gBAClC/D,KAAK,CAACmE,GAAG,CAAC,OAAO,EAAEC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEN,SAAS,GAAGG,UAAU,GAAGX,YAAY,CAACjE,KAAK,CAAC,CAAC;cAChF,CAAC,MAAM;gBACL,MAAM,IAAIE,KAAK,mCAAAR,MAAA,CAAmCuE,YAAY,CAACrE,IAAI,gBAAAF,MAAA,CAAaiD,KAAK,CAAE,CAAC;cAC1F;YACF,CAAC,MAAM;cACL,MAAM,IAAIzC,KAAK,4BAAAR,MAAA,CAA4BuE,YAAY,CAACC,KAAK,gBAAAxE,MAAA,CAAaiD,KAAK,CAAE,CAAC;YACpF;YAEAjC,KAAK,GAAGA,KAAK,CAACsE,EAAE,CAAC,MAAM,CAAC;YACxB,IAAIC,aAAa,GAAG,EAAE;YAEtB,IAAIvE,KAAK,CAACQ,KAAK,KAAK,CAAC,EAAE;cACrB,IAAMe,CAAC,GAAG6C,IAAI,CAACI,KAAK,CAACxE,KAAK,CAACuB,CAAC,GAAG,GAAG,CAAC;cACnC,IAAMC,CAAC,GAAG4C,IAAI,CAACI,KAAK,CAACxE,KAAK,CAACwB,CAAC,GAAG,GAAG,CAAC;cACnC,IAAMC,CAAC,GAAG2C,IAAI,CAACI,KAAK,CAACxE,KAAK,CAACyB,CAAC,GAAG,GAAG,CAAC;cACnC,IAAMC,CAAC,GAAG1B,KAAK,CAACQ,KAAK;cACrB+D,aAAa,WAAAvF,MAAA,CAAWuC,CAAC,QAAAvC,MAAA,CAAKwC,CAAC,QAAAxC,MAAA,CAAKyC,CAAC,QAAAzC,MAAA,CAAK0C,CAAC,MAAG;YAChD,CAAC,MAAM;cACL6C,aAAa,GAAGvE,KAAK,CAACyE,QAAQ,CAAC;gBAAEC,MAAM,EAAE;cAAM,CAAC,CAAC;YACnD;YAEA1G,MAAM,CAACiE,KAAK,CAAC,GAAGjE,MAAM,CAACiE,KAAK,CAAC,CAAC9B,OAAO,CAAC2D,aAAa,EAAES,aAAa,CAAC;UACrE;QAAC,SAAAI,GAAA;UAAAf,UAAA,CAAAgB,CAAA,CAAAD,GAAA;QAAA;UAAAf,UAAA,CAAAiB,CAAA;QAAA;MACH;IAAC,SAAAF,GAAA;MAAA3B,SAAA,CAAA4B,CAAA,CAAAD,GAAA;IAAA;MAAA3B,SAAA,CAAA6B,CAAA;IAAA;EACH;EAEA,IAAMC,eAAuE,GAAG,EAAE;EAClF,IAAMC,gBAAwE,GAAG,EAAE;EAEnF,KAAK,IAAM9C,MAAK,IAAIjE,MAAM,EAAE;IAC1B,IAAMgH,MAAM,GAAG/G,WAAW,CAACgH,GAAG,CAAChD,MAAK,CAAC;IACrC,CAAC9D,eAAe,CAAC8G,GAAG,CAAChD,MAAK,CAAC,GAAG8C,gBAAgB,GAAGD,eAAe,EAAEvF,IAAI,CAAC;MACrE2F,IAAI,EAAEF,MAAM,QAAAhG,MAAA,CAAQiD,MAAK,SAAAjD,MAAA,CAAUjB,MAAM,OAAAiB,MAAA,CAAIiD,MAAK,CAAE;MACpDvC,WAAW,EAAEpB,YAAY,CAAC2D,MAAK,CAAC;MAChC3C,KAAK,EAAEtB,MAAM,CAACiE,MAAK;IACrB,CAAC,CAAC;EACJ;EAEA,OAAO;IAAE6C,eAAe,EAAfA,eAAe;IAAEC,gBAAgB,EAAhBA,gBAAgB;IAAE/G,MAAM,EAANA,MAAM;IAAEK,KAAK,EAALA,KAAK;IAAEwE,SAAS,EAATA,SAAS;IAAEvE,YAAY,EAAZA,YAAY;IAAEL,WAAW,EAAXA;EAAY,CAAC;AACnG,CAAC;AAEM,IAAMkH,WAAW,GAAAxH,OAAA,CAAAwH,WAAA,GAAG,SAAdA,WAAWA,CACtBtH,MAA8D,EAE3D;EAAA,IADHuH,QAAQ,GAAAzG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,OAAO;EAElB,IAAM0G,QAAkB,GAAG,EAAE;EAC7BA,QAAQ,CAAC9F,IAAI,IAAAP,MAAA,CAAIoG,QAAQ,OAAI,CAAC;EAAC,IAAAE,UAAA,OAAArC,2BAAA,aACXpF,MAAM;IAAA0H,MAAA;EAAA;IAA1B,KAAAD,UAAA,CAAAnC,CAAA,MAAAoC,MAAA,GAAAD,UAAA,CAAAlC,CAAA,IAAAC,IAAA,GAA4B;MAAA,IAAjBpB,KAAK,GAAAsD,MAAA,CAAAjG,KAAA;MACd,IAAI2C,KAAK,CAACvC,WAAW,EAAE2F,QAAQ,CAAC9F,IAAI,SAAAP,MAAA,CAASiD,KAAK,CAACvC,WAAW,QAAK,CAAC;MACpE2F,QAAQ,CAAC9F,IAAI,MAAAP,MAAA,CAAMiD,KAAK,CAACiD,IAAI,QAAAlG,MAAA,CAAKiD,KAAK,CAAC3C,KAAK,MAAG,CAAC;IACnD;EAAC,SAAAqF,GAAA;IAAAW,UAAA,CAAAV,CAAA,CAAAD,GAAA;EAAA;IAAAW,UAAA,CAAAT,CAAA;EAAA;EACDQ,QAAQ,CAAC9F,IAAI,CAAC,GAAG,CAAC;EAClB,OAAO8F,QAAQ,CAACjG,IAAI,CAAC,IAAI,CAAC;AAC5B,CAAC;AACM,IAAMoG,YAAY,GAAA7H,OAAA,CAAA6H,YAAA,GAAG,SAAfA,YAAYA,CAAI3H,MAA8D,EAAK;EAC9F,IAAM4H,SAAiC,GAAG,CAAC,CAAC;EAAC,IAAAC,UAAA,OAAAzC,2BAAA,aACzBpF,MAAM;IAAA8H,MAAA;EAAA;IAA1B,KAAAD,UAAA,CAAAvC,CAAA,MAAAwC,MAAA,GAAAD,UAAA,CAAAtC,CAAA,IAAAC,IAAA,GAA4B;MAAA,IAAjBpB,KAAK,GAAA0D,MAAA,CAAArG,KAAA;MACdmG,SAAS,CAACxD,KAAK,CAACiD,IAAI,CAAC,GAAGjD,KAAK,CAAC3C,KAAK;IACrC;EAAC,SAAAqF,GAAA;IAAAe,UAAA,CAAAd,CAAA,CAAAD,GAAA;EAAA;IAAAe,UAAA,CAAAb,CAAA;EAAA;EACD,OAAOe,IAAI,CAACC,SAAS,CAACJ,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;AAClD,CAAC;AACM,IAAMK,UAAU,GAAAnI,OAAA,CAAAmI,UAAA,GAAG,SAAbA,UAAUA,CAAIjI,MAA8D,EAAK;EAC5F,IAAMkI,OAAiB,GAAG,EAAE;EAC5BA,OAAO,CAACxG,IAAI,CAAC,kBAAkB,CAAC;EAAC,IAAAyG,UAAA,OAAA/C,2BAAA,aACbpF,MAAM;IAAAoI,MAAA;EAAA;IAA1B,KAAAD,UAAA,CAAA7C,CAAA,MAAA8C,MAAA,GAAAD,UAAA,CAAA5C,CAAA,IAAAC,IAAA,GAA4B;MAAA,IAAjBpB,KAAK,GAAAgE,MAAA,CAAA3G,KAAA;MACdyG,OAAO,CAACxG,IAAI,OAAAP,MAAA,CAAOiD,KAAK,CAACiD,IAAI,UAAAlG,MAAA,CAAOiD,KAAK,CAAC3C,KAAK,OAAI,CAAC;IACtD;EAAC,SAAAqF,GAAA;IAAAqB,UAAA,CAAApB,CAAA,CAAAD,GAAA;EAAA;IAAAqB,UAAA,CAAAnB,CAAA;EAAA;EACDkB,OAAO,CAACxG,IAAI,CAAC,MAAM,CAAC;EACpB,OAAOwG,OAAO,CAAC3G,IAAI,CAAC,IAAI,CAAC;AAC3B,CAAC;AAED,IAAMyC,SAAS,GAAG,SAAZA,SAASA,CAAIqE,GAAQ,EAAE/G,IAAY,EAAK;EAC5C,IAAMgH,KAAK,GAAGhH,IAAI,CAAC8B,KAAK,CAAC,GAAG,CAAC;EAC7B,IAAIyB,MAAM,GAAGwD,GAAG;EAAC,IAAAE,UAAA,OAAAnD,2BAAA,aACEkD,KAAK;IAAAE,MAAA;EAAA;IAAxB,KAAAD,UAAA,CAAAjD,CAAA,MAAAkD,MAAA,GAAAD,UAAA,CAAAhD,CAAA,IAAAC,IAAA,GAA0B;MAAA,IAAAiD,OAAA;MAAA,IAAfC,IAAI,GAAAF,MAAA,CAAA/G,KAAA;MACboD,MAAM,IAAA4D,OAAA,GAAG5D,MAAM,cAAA4D,OAAA,uBAANA,OAAA,CAASC,IAAI,CAAC;IACzB;EAAC,SAAA5B,GAAA;IAAAyB,UAAA,CAAAxB,CAAA,CAAAD,GAAA;EAAA;IAAAyB,UAAA,CAAAvB,CAAA;EAAA;EACD,OAAOnC,MAAM;AACf,CAAC","ignoreList":[]}
|