@synerise/ds-factors 1.4.5 → 1.5.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.5.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-factors@1.5.0...@synerise/ds-factors@1.5.1) (2025-08-14)
7
+
8
+ **Note:** Version bump only for package @synerise/ds-factors
9
+
10
+
11
+
12
+
13
+
14
+ # [1.5.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-factors@1.4.5...@synerise/ds-factors@1.5.0) (2025-07-24)
15
+
16
+
17
+ ### Features
18
+
19
+ * add uncontrolledComponent prop in factors ([1b40c36](https://github.com/Synerise/synerise-design/commit/1b40c36f8348b730bc8df924c039e4cb6be4c6b8))
20
+
21
+
22
+
23
+
24
+
6
25
  ## [1.4.5](https://github.com/Synerise/synerise-design/compare/@synerise/ds-factors@1.4.4...@synerise/ds-factors@1.4.5) (2025-07-24)
7
26
 
8
27
  **Note:** Version bump only for package @synerise/ds-factors
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { type FactorValueComponentProps } from '../../Factors.types';
3
- declare const DateInput: ({ value, onChange, texts, opened, onDeactivate, onActivate, error, allowClear, readOnly, getPopupContainerOverride, }: FactorValueComponentProps) => React.JSX.Element;
3
+ declare const DateInput: ({ value, onChange, texts, opened, onDeactivate, onActivate, error, allowClear, readOnly, getPopupContainerOverride, uncontrolledComponent, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default DateInput;
@@ -12,13 +12,16 @@ var DateInput = function DateInput(_ref) {
12
12
  allowClear = _ref.allowClear,
13
13
  _ref$readOnly = _ref.readOnly,
14
14
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
15
- getPopupContainerOverride = _ref.getPopupContainerOverride;
15
+ getPopupContainerOverride = _ref.getPopupContainerOverride,
16
+ uncontrolledComponent = _ref.uncontrolledComponent;
16
17
  var _useState = useState(value),
17
18
  localValue = _useState[0],
18
19
  setLocalValue = _useState[1];
19
20
  useEffect(function () {
20
- setLocalValue(value);
21
- }, [value]);
21
+ if (!uncontrolledComponent) {
22
+ setLocalValue(value);
23
+ }
24
+ }, [value, uncontrolledComponent]);
22
25
  var changeHandler = useCallback(function (date) {
23
26
  onChange(date);
24
27
  }, [onChange]);
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { type FactorValueComponentProps } from '../../Factors.types';
3
- declare const DynamicKey: ({ value, onChange, withoutTypeSelector, texts, opened, onDeactivate, error, factorValueExtraProps, readOnly, }: FactorValueComponentProps) => React.JSX.Element;
3
+ declare const DynamicKey: ({ value, onChange, withoutTypeSelector, texts, opened, onDeactivate, error, factorValueExtraProps, readOnly, uncontrolledComponent, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default DynamicKey;
@@ -12,10 +12,13 @@ var DynamicKey = function DynamicKey(_ref) {
12
12
  error = _ref.error,
13
13
  factorValueExtraProps = _ref.factorValueExtraProps,
14
14
  _ref$readOnly = _ref.readOnly,
15
- readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly;
16
- var _useState = useState({
17
- key: value.key,
18
- value: value.value
15
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
16
+ uncontrolledComponent = _ref.uncontrolledComponent;
17
+ var _useState = useState(function () {
18
+ return {
19
+ key: value.key,
20
+ value: value.value
21
+ };
19
22
  }),
20
23
  localValue = _useState[0],
21
24
  setLocalValue = _useState[1];
@@ -34,11 +37,13 @@ var DynamicKey = function DynamicKey(_ref) {
34
37
  }
35
38
  };
36
39
  useEffect(function () {
37
- setLocalValue({
38
- key: value.key,
39
- value: value.value
40
- });
41
- }, [value]);
40
+ if (!uncontrolledComponent) {
41
+ setLocalValue({
42
+ key: value.key,
43
+ value: value.value
44
+ });
45
+ }
46
+ }, [value, uncontrolledComponent]);
42
47
  var _ref2 = (factorValueExtraProps == null ? void 0 : factorValueExtraProps.dynamicKey) || {},
43
48
  _ref2$keyInputProps = _ref2.keyInputProps,
44
49
  keyInputProps = _ref2$keyInputProps === void 0 ? {} : _ref2$keyInputProps,
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { type FactorValueProps } from '../Factors.types';
3
- declare const FactorValue: ({ selectedFactorType, value, onChangeValue, onParamsClick, selectedFactor, textType, parameters, autocompleteText, withoutTypeSelector, texts, formulaEditor, opened, loading, factorKey, preventAutoloadData, getPopupContainerOverride, onActivate, onDeactivate, error, inputProps, allowClear, readOnly, getMenuEntryProps, relativeDateProps, arrayProps, factorValueExtraProps, }: FactorValueProps) => React.JSX.Element;
3
+ declare const FactorValue: ({ selectedFactorType, value, onChangeValue, onParamsClick, selectedFactor, textType, parameters, autocompleteText, withoutTypeSelector, texts, formulaEditor, opened, loading, factorKey, preventAutoloadData, getPopupContainerOverride, onActivate, onDeactivate, error, inputProps, allowClear, readOnly, getMenuEntryProps, relativeDateProps, arrayProps, factorValueExtraProps, uncontrolledComponent, }: FactorValueProps) => React.JSX.Element;
4
4
  export default FactorValue;
@@ -29,7 +29,8 @@ var FactorValue = function FactorValue(_ref) {
29
29
  getMenuEntryProps = _ref.getMenuEntryProps,
30
30
  relativeDateProps = _ref.relativeDateProps,
31
31
  arrayProps = _ref.arrayProps,
32
- factorValueExtraProps = _ref.factorValueExtraProps;
32
+ factorValueExtraProps = _ref.factorValueExtraProps,
33
+ uncontrolledComponent = _ref.uncontrolledComponent;
33
34
  var inputType = React.useMemo(function () {
34
35
  if (!selectedFactor) {
35
36
  return undefined;
@@ -62,8 +63,10 @@ var FactorValue = function FactorValue(_ref) {
62
63
  getMenuEntryProps: getMenuEntryProps,
63
64
  inputProps: inputProps,
64
65
  factorValueExtraProps: factorValueExtraProps
65
- }, relativeDateProps));
66
- }, [selectedFactor, factorKey, value, texts, onChangeValue, textType, selectedFactorType, autocompleteText, parameters, withoutTypeSelector, inputProps, arrayProps, formulaEditor, opened, loading, onParamsClick, preventAutoloadData, getPopupContainerOverride, onActivate, onDeactivate, error, allowClear, readOnly, getMenuEntryProps, relativeDateProps, factorValueExtraProps]);
66
+ }, relativeDateProps, {
67
+ uncontrolledComponent: uncontrolledComponent
68
+ }));
69
+ }, [selectedFactor, factorKey, value, texts, onChangeValue, textType, selectedFactorType, autocompleteText, parameters, withoutTypeSelector, inputProps, arrayProps, formulaEditor, opened, loading, onParamsClick, preventAutoloadData, getPopupContainerOverride, onActivate, onDeactivate, error, allowClear, readOnly, getMenuEntryProps, relativeDateProps, factorValueExtraProps, uncontrolledComponent]);
67
70
  return /*#__PURE__*/React.createElement(S.FactorInput, {
68
71
  inputType: selectedFactorType,
69
72
  inputTextType: textType,
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { type FactorValueComponentProps } from '../../Factors.types';
3
- declare const NumberInput: ({ error, value, onChange, texts, opened, onDeactivate, readOnly, }: FactorValueComponentProps) => React.JSX.Element;
3
+ declare const NumberInput: ({ error, value, onChange, texts, opened, onDeactivate, readOnly, uncontrolledComponent, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default NumberInput;
@@ -8,13 +8,18 @@ var NumberInput = function NumberInput(_ref) {
8
8
  opened = _ref.opened,
9
9
  onDeactivate = _ref.onDeactivate,
10
10
  _ref$readOnly = _ref.readOnly,
11
- readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly;
12
- var _useState = useState(value),
11
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
12
+ uncontrolledComponent = _ref.uncontrolledComponent;
13
+ var _useState = useState(function () {
14
+ return value;
15
+ }),
13
16
  localValue = _useState[0],
14
17
  setLocalValue = _useState[1];
15
18
  useEffect(function () {
16
- setLocalValue(value);
17
- }, [value]);
19
+ if (!uncontrolledComponent) {
20
+ setLocalValue(value);
21
+ }
22
+ }, [value, uncontrolledComponent]);
18
23
  var handleChange = function handleChange(val) {
19
24
  setLocalValue(val);
20
25
  onChange(val);
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { type FactorValueComponentProps } from '../../Factors.types';
3
- declare const RelativeDateInput: ({ value, onChange, texts: allTexts, opened, onDeactivate, onActivate, error, allowClear, readOnly, triggerValueFormatter, getPopupContainerOverride, availableUnits, }: FactorValueComponentProps) => React.JSX.Element;
3
+ declare const RelativeDateInput: ({ value, onChange, texts: allTexts, opened, onDeactivate, onActivate, error, allowClear, readOnly, triggerValueFormatter, getPopupContainerOverride, availableUnits, uncontrolledComponent, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default RelativeDateInput;
@@ -19,18 +19,23 @@ var RelativeDateInput = function RelativeDateInput(_ref) {
19
19
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
20
20
  triggerValueFormatter = _ref.triggerValueFormatter,
21
21
  getPopupContainerOverride = _ref.getPopupContainerOverride,
22
- availableUnits = _ref.availableUnits;
22
+ availableUnits = _ref.availableUnits,
23
+ uncontrolledComponent = _ref.uncontrolledComponent;
23
24
  var _useState = useState(opened),
24
25
  isOpen = _useState[0],
25
26
  setIsOpen = _useState[1];
26
- var _useState2 = useState(value),
27
+ var _useState2 = useState(function () {
28
+ return value;
29
+ }),
27
30
  localValue = _useState2[0],
28
31
  setLocalValue = _useState2[1];
29
32
  var theme = useTheme();
30
33
  var texts = allTexts.relativeDate;
31
34
  useEffect(function () {
32
- setLocalValue(value);
33
- }, [value]);
35
+ if (!uncontrolledComponent) {
36
+ setLocalValue(value);
37
+ }
38
+ }, [value, uncontrolledComponent]);
34
39
  var handleOpenChange = useCallback(function (open) {
35
40
  if (!open) {
36
41
  onDeactivate && onDeactivate();
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { type FactorValueComponentProps } from '../../Factors.types';
3
- declare const TextInput: ({ value, onChange, texts, textType, autocompleteText, factorType, opened, onDeactivate, onActivate, error, inputProps, getPopupContainerOverride, readOnly, factorValueExtraProps, }: FactorValueComponentProps) => React.JSX.Element;
3
+ declare const TextInput: ({ value, onChange, texts, textType, autocompleteText, factorType, opened, onDeactivate, onActivate, error, inputProps, getPopupContainerOverride, readOnly, factorValueExtraProps, uncontrolledComponent, }: FactorValueComponentProps) => React.JSX.Element;
4
4
  export default TextInput;
@@ -21,14 +21,17 @@ var TextInput = function TextInput(_ref) {
21
21
  getPopupContainerOverride = _ref.getPopupContainerOverride,
22
22
  _ref$readOnly = _ref.readOnly,
23
23
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
24
- factorValueExtraProps = _ref.factorValueExtraProps;
24
+ factorValueExtraProps = _ref.factorValueExtraProps,
25
+ uncontrolledComponent = _ref.uncontrolledComponent;
25
26
  var _useState = useState(false),
26
27
  openExpanseEditor = _useState[0],
27
28
  setOpenExpanseEditor = _useState[1];
28
29
  var _useState2 = useState(),
29
30
  inputRef = _useState2[0],
30
31
  setInputRef = _useState2[1];
31
- var _useState3 = useState(value),
32
+ var _useState3 = useState(function () {
33
+ return value;
34
+ }),
32
35
  localValue = _useState3[0],
33
36
  setLocalValue = _useState3[1];
34
37
  var _useState4 = useState(false),
@@ -59,8 +62,10 @@ var TextInput = function TextInput(_ref) {
59
62
  onChange(val);
60
63
  }, [onChange]);
61
64
  useEffect(function () {
62
- setLocalValue(value);
63
- }, [value]);
65
+ if (!uncontrolledComponent) {
66
+ setLocalValue(value);
67
+ }
68
+ }, [value, uncontrolledComponent]);
64
69
  var autocompleteOptions = useMemo(function () {
65
70
  return autocompleteText && autocompleteText.options.filter(function (option) {
66
71
  return option.toLowerCase().includes(String(localValue).toLowerCase());
package/dist/Factors.d.ts CHANGED
@@ -2,5 +2,5 @@ import React from 'react';
2
2
  import { type DefinedFactorTypes, type FactorsProps, type SelectedFactorType } from './Factors.types';
3
3
  export declare const DEFAULT_FACTOR_TYPE: DefinedFactorTypes;
4
4
  export declare const FACTOR_TYPE_MAPPING: Record<DefinedFactorTypes, SelectedFactorType>;
5
- declare const Factors: ({ selectedFactorType, setSelectedFactorType, onChangeValue, onParamsClick, value, defaultFactorType, textType, unavailableFactorTypes, availableFactorTypes, parameters, autocompleteText, allowClear, withoutTypeSelector, texts, formulaEditor, opened, loading, factorKey, preventAutoloadData, onActivate, onDeactivate, getPopupContainerOverride, customFactorValueComponents, error, inputProps, arrayProps, readOnly, factorValueExtraProps, getMenuEntryProps, }: FactorsProps) => React.JSX.Element;
5
+ declare const Factors: ({ selectedFactorType, setSelectedFactorType, onChangeValue, onParamsClick, value, defaultFactorType, textType, unavailableFactorTypes, availableFactorTypes, parameters, autocompleteText, allowClear, withoutTypeSelector, texts, formulaEditor, opened, loading, factorKey, preventAutoloadData, onActivate, onDeactivate, getPopupContainerOverride, customFactorValueComponents, error, inputProps, arrayProps, readOnly, factorValueExtraProps, getMenuEntryProps, uncontrolledComponent, }: FactorsProps) => React.JSX.Element;
6
6
  export default Factors;
package/dist/Factors.js CHANGED
@@ -105,7 +105,9 @@ var Factors = function Factors(_ref) {
105
105
  arrayProps = _ref.arrayProps,
106
106
  readOnly = _ref.readOnly,
107
107
  factorValueExtraProps = _ref.factorValueExtraProps,
108
- getMenuEntryProps = _ref.getMenuEntryProps;
108
+ getMenuEntryProps = _ref.getMenuEntryProps,
109
+ _ref$uncontrolledComp = _ref.uncontrolledComponent,
110
+ uncontrolledComponent = _ref$uncontrolledComp === void 0 ? false : _ref$uncontrolledComp;
109
111
  var allTexts = useTexts(texts);
110
112
  var factorType = useMemo(function () {
111
113
  return selectedFactorType || defaultFactorType;
@@ -166,7 +168,8 @@ var Factors = function Factors(_ref) {
166
168
  allowClear: allowClear,
167
169
  readOnly: readOnly,
168
170
  getMenuEntryProps: getMenuEntryProps,
169
- factorValueExtraProps: factorValueExtraProps
171
+ factorValueExtraProps: factorValueExtraProps,
172
+ uncontrolledComponent: uncontrolledComponent
170
173
  }));
171
174
  };
172
175
  export default Factors;
@@ -197,6 +197,7 @@ export type FactorsProps = {
197
197
  inputProps?: Partial<Omit<InputProps, 'handleInputRef' | 'defaultOpen' | 'placeholder' | 'value' | 'onChange' | 'onBlur' | 'error' | 'getPopupContainer' | 'readOnly' | 'allowClear'>>;
198
198
  readOnly?: boolean;
199
199
  getMenuEntryProps?: (arg?: ParameterValueType) => MenuItemProps;
200
+ uncontrolledComponent?: boolean;
200
201
  };
201
202
  export type FactorTypeSelectorProps = Pick<FactorsProps, 'unavailableFactorTypes' | 'availableFactorTypes' | 'selectedFactorType' | 'readOnly'> & {
202
203
  setSelectedFactorType: (factor: FactorType) => void;
@@ -206,11 +207,11 @@ export type FactorTypeSelectorProps = Pick<FactorsProps, 'unavailableFactorTypes
206
207
  [k in DefinedFactorTypes]: string;
207
208
  };
208
209
  };
209
- export type FactorValueProps = Pick<FactorsProps, 'onChangeValue' | 'onParamsClick' | 'value' | 'selectedFactorType' | 'parameters' | 'autocompleteText' | 'withoutTypeSelector' | 'textType' | 'formulaEditor' | 'opened' | 'loading' | 'factorKey' | 'preventAutoloadData' | 'getPopupContainerOverride' | 'onActivate' | 'onDeactivate' | 'error' | 'allowClear' | 'inputProps' | 'autoResize' | 'readOnly' | 'relativeDateProps' | 'arrayProps' | 'getMenuEntryProps' | 'factorValueExtraProps'> & {
210
+ export type FactorValueProps = Pick<FactorsProps, 'onChangeValue' | 'onParamsClick' | 'value' | 'selectedFactorType' | 'parameters' | 'autocompleteText' | 'withoutTypeSelector' | 'textType' | 'formulaEditor' | 'opened' | 'loading' | 'factorKey' | 'preventAutoloadData' | 'getPopupContainerOverride' | 'onActivate' | 'onDeactivate' | 'error' | 'allowClear' | 'inputProps' | 'autoResize' | 'readOnly' | 'relativeDateProps' | 'arrayProps' | 'getMenuEntryProps' | 'factorValueExtraProps' | 'uncontrolledComponent'> & {
210
211
  texts: FactorsTexts;
211
212
  selectedFactor: SelectedFactorType;
212
213
  };
213
- export type FactorValueComponentProps = Pick<FactorsProps, 'value' | 'parameters' | 'allowClear' | 'autocompleteText' | 'withoutTypeSelector' | 'textType' | 'opened' | 'getPopupContainerOverride' | 'onActivate' | 'onDeactivate' | 'error' | 'inputProps' | 'autoResize' | 'readOnly' | 'arrayProps' | 'getMenuEntryProps' | 'factorValueExtraProps'> & {
214
+ export type FactorValueComponentProps = Pick<FactorsProps, 'value' | 'parameters' | 'allowClear' | 'autocompleteText' | 'withoutTypeSelector' | 'textType' | 'opened' | 'getPopupContainerOverride' | 'onActivate' | 'onDeactivate' | 'error' | 'inputProps' | 'autoResize' | 'readOnly' | 'arrayProps' | 'getMenuEntryProps' | 'factorValueExtraProps' | 'uncontrolledComponent'> & {
214
215
  texts: FactorsTexts;
215
216
  onChange: (value: FactorValueType) => void;
216
217
  factorType: FactorType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-factors",
3
- "version": "1.4.5",
3
+ "version": "1.5.1",
4
4
  "description": "Factors UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -34,33 +34,33 @@
34
34
  ],
35
35
  "types": "dist/index.d.ts",
36
36
  "dependencies": {
37
- "@synerise/ds-alert": "^1.1.11",
38
- "@synerise/ds-autocomplete": "^1.2.4",
39
- "@synerise/ds-badge": "^1.0.17",
40
- "@synerise/ds-button": "^1.4.6",
41
- "@synerise/ds-button-group": "^1.1.10",
42
- "@synerise/ds-collector": "^1.3.5",
43
- "@synerise/ds-date-picker": "^1.2.2",
44
- "@synerise/ds-date-range-picker": "^1.3.16",
45
- "@synerise/ds-divider": "^1.0.17",
46
- "@synerise/ds-dropdown": "^1.0.19",
47
- "@synerise/ds-empty-states": "^1.0.15",
48
- "@synerise/ds-icon": "^1.6.2",
49
- "@synerise/ds-information-card": "^1.0.23",
50
- "@synerise/ds-inline-edit": "^1.0.22",
51
- "@synerise/ds-input": "^1.3.6",
52
- "@synerise/ds-input-number": "^1.2.7",
53
- "@synerise/ds-list-item": "^1.0.17",
54
- "@synerise/ds-menu": "^1.0.18",
55
- "@synerise/ds-modal": "^1.2.6",
56
- "@synerise/ds-result": "^1.0.18",
57
- "@synerise/ds-scrollbar": "^1.1.5",
58
- "@synerise/ds-search": "^1.2.6",
59
- "@synerise/ds-select": "^1.1.13",
60
- "@synerise/ds-skeleton": "^1.0.18",
61
- "@synerise/ds-tabs": "^1.0.20",
62
- "@synerise/ds-tag": "^1.1.15",
63
- "@synerise/ds-tooltip": "^1.1.15",
37
+ "@synerise/ds-alert": "^1.1.12",
38
+ "@synerise/ds-autocomplete": "^1.2.5",
39
+ "@synerise/ds-badge": "^1.0.18",
40
+ "@synerise/ds-button": "^1.4.7",
41
+ "@synerise/ds-button-group": "^1.1.11",
42
+ "@synerise/ds-collector": "^1.3.6",
43
+ "@synerise/ds-date-picker": "^1.2.3",
44
+ "@synerise/ds-date-range-picker": "^1.3.18",
45
+ "@synerise/ds-divider": "^1.0.18",
46
+ "@synerise/ds-dropdown": "^1.0.20",
47
+ "@synerise/ds-empty-states": "^1.0.16",
48
+ "@synerise/ds-icon": "^1.7.0",
49
+ "@synerise/ds-information-card": "^1.0.24",
50
+ "@synerise/ds-inline-edit": "^1.0.23",
51
+ "@synerise/ds-input": "^1.3.7",
52
+ "@synerise/ds-input-number": "^1.2.8",
53
+ "@synerise/ds-list-item": "^1.0.18",
54
+ "@synerise/ds-menu": "^1.0.19",
55
+ "@synerise/ds-modal": "^1.2.7",
56
+ "@synerise/ds-result": "^1.0.20",
57
+ "@synerise/ds-scrollbar": "^1.1.6",
58
+ "@synerise/ds-search": "^1.2.7",
59
+ "@synerise/ds-select": "^1.1.14",
60
+ "@synerise/ds-skeleton": "^1.0.19",
61
+ "@synerise/ds-tabs": "^1.0.21",
62
+ "@synerise/ds-tag": "^1.1.16",
63
+ "@synerise/ds-tooltip": "^1.1.16",
64
64
  "@synerise/ds-utils": "^1.4.0",
65
65
  "copy-to-clipboard": "^3.3.3",
66
66
  "lodash": "^4.17.21",
@@ -74,5 +74,5 @@
74
74
  "react-intl": ">=3.12.0 <= 6.8",
75
75
  "styled-components": "^5.3.3"
76
76
  },
77
- "gitHead": "b35b1875727156fe9f5b3bad55aed5ca447c8c8d"
77
+ "gitHead": "408d73cc145b6c8c61f3e70dce05badf3ad1ffde"
78
78
  }