@sheinx/hooks 3.9.11-beta.1 → 3.9.11-beta.11

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.
@@ -5,7 +5,7 @@ export * from './use-form-flow';
5
5
  export * from './use-form-context';
6
6
  export * from './use-form-schema';
7
7
  export { default, default as useForm } from './use-form';
8
- export { useFormConfig } from './form-config-context';
8
+ export { useFormConfig, FormConfigContext } from './form-config-context';
9
9
  export { useFormFunc } from './form-func-context';
10
10
  export { useFormSchema } from './form-schema-context';
11
11
  export type { BaseFormProps, FormCommonConfig, FormLabelConfig } from './use-form.type';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -7,9 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  var _exportNames = {
8
8
  useForm: true,
9
9
  useFormConfig: true,
10
+ FormConfigContext: true,
10
11
  useFormFunc: true,
11
12
  useFormSchema: true
12
13
  };
14
+ Object.defineProperty(exports, "FormConfigContext", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _formConfigContext.FormConfigContext;
18
+ }
19
+ });
13
20
  Object.defineProperty(exports, "default", {
14
21
  enumerable: true,
15
22
  get: function get() {
@@ -1 +1 @@
1
- {"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB;;;;;;;;CA0J/C,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB;;;;;;;;CAwL/C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -38,7 +38,8 @@ var useNumberFormat = function useNumberFormat(props) {
38
38
  step = _props$step === void 0 ? 1 : _props$step,
39
39
  cancelBlurChange = props.cancelBlurChange,
40
40
  disabled = props.disabled,
41
- coin = props.coin;
41
+ coin = props.coin,
42
+ defaultValue = props.defaultValue;
42
43
  var getStringValue = function getStringValue(value) {
43
44
  if (value === undefined) return value;
44
45
  if (typeof value === 'number') {
@@ -51,8 +52,11 @@ var useNumberFormat = function useNumberFormat(props) {
51
52
  _React$useState2 = _slicedToArray(_React$useState, 2),
52
53
  inernalInputValue = _React$useState2[0],
53
54
  setInternalInputValue = _React$useState2[1];
55
+ var focusedRef = _react.default.useRef(false);
54
56
  (0, _react.useEffect)(function () {
55
- if (props.value !== inernalInputValue) {
57
+ // 聚焦编辑期间不同步外部值,避免 form 回填 defaultValue 覆盖用户输入
58
+ // 但当外部值被清空时(如 clearable 触发),即使聚焦也需要同步
59
+ if (props.value !== inernalInputValue && (!focusedRef.current || props.value == null || props.value === '')) {
56
60
  setInternalInputValue(getStringValue(props.value));
57
61
  }
58
62
  }, [props.value]);
@@ -79,8 +83,10 @@ var useNumberFormat = function useNumberFormat(props) {
79
83
  if (val.endsWith('.') || val.includes('.') && val.endsWith('0')) return;
80
84
  var num = parseFloat(val);
81
85
  if (val === '') {
82
- // 如果允许空值,则返回 null,否则返回 undefined
83
- onChange === null || onChange === void 0 || onChange(allowNull ? null : undefined);
86
+ // 聚焦编辑期间清空发送 null 而非 undefined
87
+ // 因为 form 层的 defaultValue 回填仅检查 value === undefined
88
+ // 发送 null 可以让 form 数据跟随更新,同时避免触发回填
89
+ onChange === null || onChange === void 0 || onChange(focusedRef.current ? null : allowNull ? null : undefined);
84
90
  return;
85
91
  }
86
92
  if (isNaN(num)) return;
@@ -91,9 +97,27 @@ var useNumberFormat = function useNumberFormat(props) {
91
97
  ;
92
98
  });
93
99
  var onNumberBlur = (0, _usePersistFn.default)(function (e) {
100
+ focusedRef.current = false;
94
101
  var target = e.target;
95
102
  var newValue = target.value;
96
103
 
104
+ // 输入为空且有 defaultValue 时,失焦恢复为 defaultValue
105
+ if (newValue === '' && defaultValue != null) {
106
+ var _num = typeof defaultValue === 'number' ? defaultValue : parseFloat(String(defaultValue));
107
+ if (isNaN(_num)) _num = 0;
108
+ if (typeof digits === 'number') {
109
+ _num = parseFloat(_num.toFixed(digits));
110
+ }
111
+ _num = commonFormat(_num);
112
+ setInternalInputValue(getStringValue(_num));
113
+ if (_num !== value) {
114
+ target.value = String(_num);
115
+ if (!cancelBlurChange) onInnerChange(_num);
116
+ }
117
+ onBlur === null || onBlur === void 0 || onBlur(e);
118
+ return;
119
+ }
120
+
97
121
  // 没有输入值
98
122
  if (newValue === '' && value === undefined) {
99
123
  onBlur === null || onBlur === void 0 || onBlur(e);
@@ -124,6 +148,11 @@ var useNumberFormat = function useNumberFormat(props) {
124
148
  }
125
149
  onBlur === null || onBlur === void 0 || onBlur(e);
126
150
  });
151
+ var onNumberFocus = (0, _usePersistFn.default)(function (e) {
152
+ var _props$onFocus;
153
+ focusedRef.current = true;
154
+ (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, e);
155
+ });
127
156
  var onNumberChange = (0, _usePersistFn.default)(function (value) {
128
157
  var result = value;
129
158
  onInnerChange(result);
@@ -160,7 +189,7 @@ var useNumberFormat = function useNumberFormat(props) {
160
189
  coin: coin,
161
190
  onChange: onNumberChange,
162
191
  onBlur: onNumberBlur,
163
- onFocus: props.onFocus,
192
+ onFocus: onNumberFocus,
164
193
  cancelBlurChange: true
165
194
  })), {}, {
166
195
  onPlus: handlePlus,
@@ -3,6 +3,11 @@ export type NumberValue = string | number | undefined | null;
3
3
  export interface InputNumberProps extends Omit<InputFormatProps, 'value' | 'onChange' | 'autoFix' | 'trim' | 'type'> {
4
4
  value: NumberValue;
5
5
  onChange: (value: NumberValue) => void | undefined;
6
+ /**
7
+ * @en default value, restore on blur when input is empty
8
+ * @cn 默认值,输入为空失焦时恢复
9
+ */
10
+ defaultValue?: NumberValue;
6
11
  /**
7
12
  * @en Minimum value
8
13
  * @cn 最小值
@@ -1 +1 @@
1
- {"version":3,"file":"use-input-number.type.d.ts","sourceRoot":"","sources":["use-input-number.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC7D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"use-input-number.type.d.ts","sourceRoot":"","sources":["use-input-number.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC7D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -5,7 +5,7 @@ export * from './use-form-flow';
5
5
  export * from './use-form-context';
6
6
  export * from './use-form-schema';
7
7
  export { default, default as useForm } from './use-form';
8
- export { useFormConfig } from './form-config-context';
8
+ export { useFormConfig, FormConfigContext } from './form-config-context';
9
9
  export { useFormFunc } from './form-func-context';
10
10
  export { useFormSchema } from './form-schema-context';
11
11
  export type { BaseFormProps, FormCommonConfig, FormLabelConfig } from './use-form.type';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -6,6 +6,6 @@ export * from "./use-form-flow";
6
6
  export * from "./use-form-context";
7
7
  export * from "./use-form-schema";
8
8
  export { default, default as useForm } from "./use-form";
9
- export { useFormConfig } from "./form-config-context";
9
+ export { useFormConfig, FormConfigContext } from "./form-config-context";
10
10
  export { useFormFunc } from "./form-func-context";
11
11
  export { useFormSchema } from "./form-schema-context";
@@ -1 +1 @@
1
- {"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB;;;;;;;;CA0J/C,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB;;;;;;;;CAwL/C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -29,7 +29,8 @@ var useNumberFormat = function useNumberFormat(props) {
29
29
  step = _props$step === void 0 ? 1 : _props$step,
30
30
  cancelBlurChange = props.cancelBlurChange,
31
31
  disabled = props.disabled,
32
- coin = props.coin;
32
+ coin = props.coin,
33
+ defaultValue = props.defaultValue;
33
34
  var getStringValue = function getStringValue(value) {
34
35
  if (value === undefined) return value;
35
36
  if (typeof value === 'number') {
@@ -42,8 +43,11 @@ var useNumberFormat = function useNumberFormat(props) {
42
43
  _React$useState2 = _slicedToArray(_React$useState, 2),
43
44
  inernalInputValue = _React$useState2[0],
44
45
  setInternalInputValue = _React$useState2[1];
46
+ var focusedRef = React.useRef(false);
45
47
  useEffect(function () {
46
- if (props.value !== inernalInputValue) {
48
+ // 聚焦编辑期间不同步外部值,避免 form 回填 defaultValue 覆盖用户输入
49
+ // 但当外部值被清空时(如 clearable 触发),即使聚焦也需要同步
50
+ if (props.value !== inernalInputValue && (!focusedRef.current || props.value == null || props.value === '')) {
47
51
  setInternalInputValue(getStringValue(props.value));
48
52
  }
49
53
  }, [props.value]);
@@ -70,8 +74,10 @@ var useNumberFormat = function useNumberFormat(props) {
70
74
  if (val.endsWith('.') || val.includes('.') && val.endsWith('0')) return;
71
75
  var num = parseFloat(val);
72
76
  if (val === '') {
73
- // 如果允许空值,则返回 null,否则返回 undefined
74
- onChange === null || onChange === void 0 || onChange(allowNull ? null : undefined);
77
+ // 聚焦编辑期间清空发送 null 而非 undefined
78
+ // 因为 form 层的 defaultValue 回填仅检查 value === undefined
79
+ // 发送 null 可以让 form 数据跟随更新,同时避免触发回填
80
+ onChange === null || onChange === void 0 || onChange(focusedRef.current ? null : allowNull ? null : undefined);
75
81
  return;
76
82
  }
77
83
  if (isNaN(num)) return;
@@ -82,9 +88,27 @@ var useNumberFormat = function useNumberFormat(props) {
82
88
  ;
83
89
  });
84
90
  var onNumberBlur = usePersistFn(function (e) {
91
+ focusedRef.current = false;
85
92
  var target = e.target;
86
93
  var newValue = target.value;
87
94
 
95
+ // 输入为空且有 defaultValue 时,失焦恢复为 defaultValue
96
+ if (newValue === '' && defaultValue != null) {
97
+ var _num = typeof defaultValue === 'number' ? defaultValue : parseFloat(String(defaultValue));
98
+ if (isNaN(_num)) _num = 0;
99
+ if (typeof digits === 'number') {
100
+ _num = parseFloat(_num.toFixed(digits));
101
+ }
102
+ _num = commonFormat(_num);
103
+ setInternalInputValue(getStringValue(_num));
104
+ if (_num !== value) {
105
+ target.value = String(_num);
106
+ if (!cancelBlurChange) onInnerChange(_num);
107
+ }
108
+ onBlur === null || onBlur === void 0 || onBlur(e);
109
+ return;
110
+ }
111
+
88
112
  // 没有输入值
89
113
  if (newValue === '' && value === undefined) {
90
114
  onBlur === null || onBlur === void 0 || onBlur(e);
@@ -115,6 +139,11 @@ var useNumberFormat = function useNumberFormat(props) {
115
139
  }
116
140
  onBlur === null || onBlur === void 0 || onBlur(e);
117
141
  });
142
+ var onNumberFocus = usePersistFn(function (e) {
143
+ var _props$onFocus;
144
+ focusedRef.current = true;
145
+ (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, e);
146
+ });
118
147
  var onNumberChange = usePersistFn(function (value) {
119
148
  var result = value;
120
149
  onInnerChange(result);
@@ -151,7 +180,7 @@ var useNumberFormat = function useNumberFormat(props) {
151
180
  coin: coin,
152
181
  onChange: onNumberChange,
153
182
  onBlur: onNumberBlur,
154
- onFocus: props.onFocus,
183
+ onFocus: onNumberFocus,
155
184
  cancelBlurChange: true
156
185
  })), {}, {
157
186
  onPlus: handlePlus,
@@ -3,6 +3,11 @@ export type NumberValue = string | number | undefined | null;
3
3
  export interface InputNumberProps extends Omit<InputFormatProps, 'value' | 'onChange' | 'autoFix' | 'trim' | 'type'> {
4
4
  value: NumberValue;
5
5
  onChange: (value: NumberValue) => void | undefined;
6
+ /**
7
+ * @en default value, restore on blur when input is empty
8
+ * @cn 默认值,输入为空失焦时恢复
9
+ */
10
+ defaultValue?: NumberValue;
6
11
  /**
7
12
  * @en Minimum value
8
13
  * @cn 最小值
@@ -1 +1 @@
1
- {"version":3,"file":"use-input-number.type.d.ts","sourceRoot":"","sources":["use-input-number.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC7D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"use-input-number.type.d.ts","sourceRoot":"","sources":["use-input-number.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC7D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.9.11-beta.1",
3
+ "version": "3.9.11-beta.11",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",