@react-typed-forms/schemas 11.11.1 → 11.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/createDefaultRenderers.d.ts +1 -0
- package/lib/hooks.d.ts +1 -1
- package/lib/index.js +104 -27
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +8 -2
- package/package.json +1 -1
|
@@ -70,5 +70,6 @@ interface DefaultLabelRendererOptions {
|
|
|
70
70
|
labelContainer?: (children: ReactElement) => ReactElement;
|
|
71
71
|
}
|
|
72
72
|
export declare function createDefaultLabelRenderer(options?: DefaultLabelRendererOptions): LabelRendererRegistration;
|
|
73
|
+
export declare function createNullToggleRenderer(): DataRendererRegistration;
|
|
73
74
|
export declare function createDefaultRenderers(options?: DefaultRendererOptions): DefaultRenderers;
|
|
74
75
|
export {};
|
package/lib/hooks.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export declare function useEvalVisibilityHook(useEvalExpressionHook: UseEvalExpr
|
|
|
8
8
|
export declare function useEvalReadonlyHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<boolean>;
|
|
9
9
|
export declare function useEvalStyleHook(useEvalExpressionHook: UseEvalExpressionHook, property: DynamicPropertyType, definition: ControlDefinition): EvalExpressionHook<React.CSSProperties>;
|
|
10
10
|
export declare function useEvalAllowedOptionsHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<any[]>;
|
|
11
|
-
export declare function useEvalDisabledHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<boolean>;
|
|
11
|
+
export declare function useEvalDisabledHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition, fieldPath?: SchemaField[]): EvalExpressionHook<boolean>;
|
|
12
12
|
export declare function useEvalDisplayHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): DynamicHookGenerator<Control<string | undefined> | undefined, ControlDataContext>;
|
|
13
13
|
export declare function useEvalDefaultValueHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition, schemaField: SchemaField | undefined, element: boolean): EvalExpressionHook;
|
|
14
14
|
export declare function defaultEvalHooks(expr: EntityExpression, context: ControlDataContext, coerce: (v: any) => any): Control<any>;
|
package/lib/index.js
CHANGED
|
@@ -58,6 +58,7 @@ exports.ExpressionType = void 0;
|
|
|
58
58
|
ExpressionType["Data"] = "Data";
|
|
59
59
|
ExpressionType["DataMatch"] = "FieldValue";
|
|
60
60
|
ExpressionType["UserMatch"] = "UserMatch";
|
|
61
|
+
ExpressionType["NotEmpty"] = "NotEmpty";
|
|
61
62
|
})(exports.ExpressionType || (exports.ExpressionType = {}));
|
|
62
63
|
exports.AdornmentPlacement = void 0;
|
|
63
64
|
(function (AdornmentPlacement) {
|
|
@@ -89,6 +90,7 @@ exports.DataRenderType = void 0;
|
|
|
89
90
|
DataRenderType["Dropdown"] = "Dropdown";
|
|
90
91
|
DataRenderType["DisplayOnly"] = "DisplayOnly";
|
|
91
92
|
DataRenderType["Group"] = "Group";
|
|
93
|
+
DataRenderType["NullToggle"] = "NullToggle";
|
|
92
94
|
})(exports.DataRenderType || (exports.DataRenderType = {}));
|
|
93
95
|
exports.SyncTextType = void 0;
|
|
94
96
|
(function (SyncTextType) {
|
|
@@ -197,7 +199,7 @@ function _objectWithoutPropertiesLoose(r, e) {
|
|
|
197
199
|
if (null == r) return {};
|
|
198
200
|
var t = {};
|
|
199
201
|
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
200
|
-
if (e.
|
|
202
|
+
if (e.includes(n)) continue;
|
|
201
203
|
t[n] = r[n];
|
|
202
204
|
}
|
|
203
205
|
return t;
|
|
@@ -998,27 +1000,33 @@ function useEvalAllowedOptionsHook(useEvalExpressionHook, definition) {
|
|
|
998
1000
|
return core.useControl([]);
|
|
999
1001
|
}, undefined);
|
|
1000
1002
|
}
|
|
1001
|
-
function useEvalDisabledHook(useEvalExpressionHook, definition) {
|
|
1003
|
+
function useEvalDisabledHook(useEvalExpressionHook, definition, fieldPath) {
|
|
1002
1004
|
var dynamicDisabled = useEvalDynamicBoolHook(definition, exports.DynamicPropertyType.Disabled, useEvalExpressionHook);
|
|
1003
|
-
return makeDynamicPropertyHook(dynamicDisabled, function () {
|
|
1005
|
+
return makeDynamicPropertyHook(dynamicDisabled, function (ctx, _ref3) {
|
|
1006
|
+
var fieldPath = _ref3.fieldPath;
|
|
1004
1007
|
return core.useComputed(function () {
|
|
1005
|
-
|
|
1008
|
+
var _dataControl$meta$nul;
|
|
1009
|
+
var dataControl = fieldPath && lookupChildControl(ctx, fieldPath);
|
|
1010
|
+
var setToNull = (dataControl == null || (_dataControl$meta$nul = dataControl.meta["nullControl"]) == null ? void 0 : _dataControl$meta$nul.value) === false;
|
|
1011
|
+
return setToNull || isControlDisabled(definition);
|
|
1006
1012
|
});
|
|
1007
|
-
},
|
|
1013
|
+
}, {
|
|
1014
|
+
fieldPath: fieldPath
|
|
1015
|
+
});
|
|
1008
1016
|
}
|
|
1009
1017
|
function useEvalDisplayHook(useEvalExpressionHook, definition) {
|
|
1010
1018
|
return useEvalDynamicHook(definition, exports.DynamicPropertyType.Display, useEvalExpressionHook);
|
|
1011
1019
|
}
|
|
1012
1020
|
function useEvalDefaultValueHook(useEvalExpressionHook, definition, schemaField, element) {
|
|
1013
1021
|
var dynamicValue = useEvalDynamicHook(definition, exports.DynamicPropertyType.DefaultValue, useEvalExpressionHook);
|
|
1014
|
-
return makeDynamicPropertyHook(dynamicValue, function (ctx,
|
|
1015
|
-
var definition =
|
|
1016
|
-
schemaField =
|
|
1022
|
+
return makeDynamicPropertyHook(dynamicValue, function (ctx, _ref4) {
|
|
1023
|
+
var definition = _ref4.definition,
|
|
1024
|
+
schemaField = _ref4.schemaField;
|
|
1017
1025
|
return core.useComputed(calcDefault);
|
|
1018
1026
|
function calcDefault() {
|
|
1019
|
-
var
|
|
1020
|
-
required =
|
|
1021
|
-
dcv =
|
|
1027
|
+
var _ref5 = isDataControlDefinition(definition) ? [definition.required, definition.defaultValue] : [false, undefined],
|
|
1028
|
+
required = _ref5[0],
|
|
1029
|
+
dcv = _ref5[1];
|
|
1022
1030
|
return dcv != null ? dcv : schemaField ? element ? elementValueForField(schemaField) : defaultValueForField(schemaField, required, true) : undefined;
|
|
1023
1031
|
}
|
|
1024
1032
|
}, {
|
|
@@ -1051,6 +1059,20 @@ function useDataMatchExpression(fvExpr, fields, data, coerce) {
|
|
|
1051
1059
|
return coerce(Array.isArray(fv) ? fv.includes(fvExpr.value) : fv === fvExpr.value);
|
|
1052
1060
|
});
|
|
1053
1061
|
}
|
|
1062
|
+
function useNotEmptyExpression(fvExpr, fields, schemaInterface, data, coerce) {
|
|
1063
|
+
if (coerce === void 0) {
|
|
1064
|
+
coerce = function coerce(x) {
|
|
1065
|
+
return x;
|
|
1066
|
+
};
|
|
1067
|
+
}
|
|
1068
|
+
var refField = findFieldPath(fields, fvExpr.field);
|
|
1069
|
+
var otherField = refField ? lookupChildControl(data, refField) : undefined;
|
|
1070
|
+
return core.useCalculatedControl(function () {
|
|
1071
|
+
var fv = otherField == null ? void 0 : otherField.value;
|
|
1072
|
+
var field = refField == null ? void 0 : refField.at(-1);
|
|
1073
|
+
return coerce(field && !schemaInterface.isEmptyValue(field, fv));
|
|
1074
|
+
});
|
|
1075
|
+
}
|
|
1054
1076
|
function defaultEvalHooks(expr, context, coerce) {
|
|
1055
1077
|
switch (expr.type) {
|
|
1056
1078
|
case exports.ExpressionType.Jsonata:
|
|
@@ -1059,6 +1081,8 @@ function defaultEvalHooks(expr, context, coerce) {
|
|
|
1059
1081
|
return useDataExpression(expr, context.fields, context, coerce);
|
|
1060
1082
|
case exports.ExpressionType.DataMatch:
|
|
1061
1083
|
return useDataMatchExpression(expr, context.fields, context, coerce);
|
|
1084
|
+
case exports.ExpressionType.NotEmpty:
|
|
1085
|
+
return useNotEmptyExpression(expr, context.fields, context.schemaInterface, context, coerce);
|
|
1062
1086
|
default:
|
|
1063
1087
|
return core.useControl(undefined);
|
|
1064
1088
|
}
|
|
@@ -1373,7 +1397,7 @@ var DefaultSchemaInterface = /*#__PURE__*/function () {
|
|
|
1373
1397
|
}();
|
|
1374
1398
|
var defaultSchemaInterface = new DefaultSchemaInterface();
|
|
1375
1399
|
|
|
1376
|
-
var _excluded$
|
|
1400
|
+
var _excluded$4 = ["definition", "field", "control", "formOptions", "style", "allowedOptions", "schemaInterface"];
|
|
1377
1401
|
var AppendAdornmentPriority = 0;
|
|
1378
1402
|
var WrapAdornmentPriority = 1000;
|
|
1379
1403
|
exports.LabelType = void 0;
|
|
@@ -1398,7 +1422,7 @@ function useControlRenderer(definition, fields, renderer, options) {
|
|
|
1398
1422
|
defaultValueControl: useEvalDefaultValueHook(useExpr, definition, schemaField, elementIndex != null),
|
|
1399
1423
|
visibleControl: useEvalVisibilityHook(useExpr, definition, fieldPath),
|
|
1400
1424
|
readonlyControl: useEvalReadonlyHook(useExpr, definition),
|
|
1401
|
-
disabledControl: useEvalDisabledHook(useExpr, definition),
|
|
1425
|
+
disabledControl: useEvalDisabledHook(useExpr, definition, fieldPath),
|
|
1402
1426
|
allowedOptions: useEvalAllowedOptionsHook(useExpr, definition),
|
|
1403
1427
|
labelText: useEvalLabelText(useExpr, definition),
|
|
1404
1428
|
actionData: useEvalActionHook(useExpr, definition),
|
|
@@ -1466,15 +1490,17 @@ function useControlRenderer(definition, fields, renderer, options) {
|
|
|
1466
1490
|
control = _getControlData[1],
|
|
1467
1491
|
controlDataContext = _getControlData[2];
|
|
1468
1492
|
core.useControlEffect(function () {
|
|
1469
|
-
|
|
1493
|
+
var _definition$renderOpt;
|
|
1494
|
+
return [visibility.value, defaultValueControl.value, control == null ? void 0 : control.isNull, isDataControlDefinition(definition) && definition.dontClearHidden, isDataControlDefinition(definition) && ((_definition$renderOpt = definition.renderOptions) == null ? void 0 : _definition$renderOpt.type) == exports.DataRenderType.NullToggle, parentControl.isNull, _options.hidden, readonlyControl.value];
|
|
1470
1495
|
}, function (_ref2) {
|
|
1471
1496
|
var vc = _ref2[0],
|
|
1472
1497
|
dv = _ref2[1],
|
|
1473
1498
|
_ = _ref2[2],
|
|
1474
1499
|
dontClear = _ref2[3],
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1500
|
+
dontDefault = _ref2[4],
|
|
1501
|
+
parentNull = _ref2[5],
|
|
1502
|
+
hidden = _ref2[6],
|
|
1503
|
+
ro = _ref2[7];
|
|
1478
1504
|
if (!ro) {
|
|
1479
1505
|
if (control) {
|
|
1480
1506
|
if (vc && vc.visible === vc.showing) {
|
|
@@ -1482,7 +1508,7 @@ function useControlRenderer(definition, fields, renderer, options) {
|
|
|
1482
1508
|
if (_options.clearHidden && !dontClear) {
|
|
1483
1509
|
control.value = undefined;
|
|
1484
1510
|
}
|
|
1485
|
-
} else control.setValue(function (x) {
|
|
1511
|
+
} else if (!dontDefault) control.setValue(function (x) {
|
|
1486
1512
|
return x != null ? x : dv;
|
|
1487
1513
|
});
|
|
1488
1514
|
}
|
|
@@ -1635,7 +1661,7 @@ function ControlRenderer(_ref3) {
|
|
|
1635
1661
|
}
|
|
1636
1662
|
}
|
|
1637
1663
|
function defaultDataProps(_ref4) {
|
|
1638
|
-
var _definition$validator, _allowedOptions$value, _definition$children, _definition$
|
|
1664
|
+
var _definition$validator, _allowedOptions$value, _definition$children, _definition$renderOpt2;
|
|
1639
1665
|
var definition = _ref4.definition,
|
|
1640
1666
|
field = _ref4.field,
|
|
1641
1667
|
control = _ref4.control,
|
|
@@ -1644,7 +1670,7 @@ function defaultDataProps(_ref4) {
|
|
|
1644
1670
|
allowedOptions = _ref4.allowedOptions,
|
|
1645
1671
|
_ref4$schemaInterface = _ref4.schemaInterface,
|
|
1646
1672
|
schemaInterface = _ref4$schemaInterface === void 0 ? defaultSchemaInterface : _ref4$schemaInterface,
|
|
1647
|
-
props = _objectWithoutPropertiesLoose(_ref4, _excluded$
|
|
1673
|
+
props = _objectWithoutPropertiesLoose(_ref4, _excluded$4);
|
|
1648
1674
|
var lengthVal = (_definition$validator = definition.validators) == null ? void 0 : _definition$validator.find(function (x) {
|
|
1649
1675
|
return x.type === exports.ValidatorType.Length;
|
|
1650
1676
|
});
|
|
@@ -1669,7 +1695,7 @@ function defaultDataProps(_ref4) {
|
|
|
1669
1695
|
};
|
|
1670
1696
|
}) : fieldOptions,
|
|
1671
1697
|
readonly: !!formOptions.readonly,
|
|
1672
|
-
renderOptions: (_definition$
|
|
1698
|
+
renderOptions: (_definition$renderOpt2 = definition.renderOptions) != null ? _definition$renderOpt2 : {
|
|
1673
1699
|
type: "Standard"
|
|
1674
1700
|
},
|
|
1675
1701
|
required: required,
|
|
@@ -2015,7 +2041,7 @@ var defaultTailwindTheme = {
|
|
|
2015
2041
|
}
|
|
2016
2042
|
};
|
|
2017
2043
|
|
|
2018
|
-
var _excluded$
|
|
2044
|
+
var _excluded$3 = ["data", "display", "className", "style"];
|
|
2019
2045
|
function createDefaultDisplayRenderer(options) {
|
|
2020
2046
|
if (options === void 0) {
|
|
2021
2047
|
options = {};
|
|
@@ -2035,7 +2061,7 @@ function DefaultDisplay(_ref) {
|
|
|
2035
2061
|
display = _ref.display,
|
|
2036
2062
|
className = _ref.className,
|
|
2037
2063
|
style = _ref.style,
|
|
2038
|
-
options = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
2064
|
+
options = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
2039
2065
|
switch (data.type) {
|
|
2040
2066
|
case exports.DisplayDataType.Icon:
|
|
2041
2067
|
return /*#__PURE__*/React__default["default"].createElement("i", {
|
|
@@ -2121,7 +2147,7 @@ function DefaultVisibility(_ref) {
|
|
|
2121
2147
|
}
|
|
2122
2148
|
}
|
|
2123
2149
|
|
|
2124
|
-
var _excluded$
|
|
2150
|
+
var _excluded$2 = ["state", "options", "className", "convert", "required", "emptyText", "requiredText", "readonly"];
|
|
2125
2151
|
function createSelectRenderer(options) {
|
|
2126
2152
|
if (options === void 0) {
|
|
2127
2153
|
options = {};
|
|
@@ -2156,7 +2182,7 @@ function SelectDataRenderer(_ref) {
|
|
|
2156
2182
|
_ref$requiredText = _ref.requiredText,
|
|
2157
2183
|
requiredText = _ref$requiredText === void 0 ? "<please select>" : _ref$requiredText,
|
|
2158
2184
|
readonly = _ref.readonly,
|
|
2159
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
2185
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
2160
2186
|
var value = state.value,
|
|
2161
2187
|
disabled = state.disabled;
|
|
2162
2188
|
var _useState = React.useState(!required || value == null),
|
|
@@ -2223,7 +2249,7 @@ function DefaultDisplayOnly(_ref) {
|
|
|
2223
2249
|
}
|
|
2224
2250
|
}
|
|
2225
2251
|
|
|
2226
|
-
var _excluded = ["control", "convert"],
|
|
2252
|
+
var _excluded$1 = ["control", "convert"],
|
|
2227
2253
|
_excluded2 = ["errorText", "value", "onChange"];
|
|
2228
2254
|
function ControlInput(_ref) {
|
|
2229
2255
|
var _effect = core.useComponentTracking();
|
|
@@ -2233,7 +2259,7 @@ function ControlInput(_ref) {
|
|
|
2233
2259
|
};
|
|
2234
2260
|
var control = _ref.control,
|
|
2235
2261
|
convert = _ref.convert,
|
|
2236
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
2262
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
2237
2263
|
var _formControlProps = core.formControlProps(control),
|
|
2238
2264
|
errorText = _formControlProps.errorText,
|
|
2239
2265
|
value = _formControlProps.value,
|
|
@@ -2534,6 +2560,7 @@ function DefaultAccordion(_ref) {
|
|
|
2534
2560
|
}
|
|
2535
2561
|
}
|
|
2536
2562
|
|
|
2563
|
+
var _excluded = ["control", "field", "renderOptions"];
|
|
2537
2564
|
function createButtonActionRenderer(actionId, options) {
|
|
2538
2565
|
if (options === void 0) {
|
|
2539
2566
|
options = {};
|
|
@@ -2622,6 +2649,7 @@ function createDefaultDataRenderer(options) {
|
|
|
2622
2649
|
if (options === void 0) {
|
|
2623
2650
|
options = {};
|
|
2624
2651
|
}
|
|
2652
|
+
var nullToggler = createNullToggleRenderer();
|
|
2625
2653
|
var checkboxRenderer = createCheckboxRenderer((_options$checkOptions = options.checkOptions) != null ? _options$checkOptions : options.checkboxOptions);
|
|
2626
2654
|
var selectRenderer = createSelectRenderer(options.selectOptions);
|
|
2627
2655
|
var radioRenderer = createRadioRenderer((_options$radioOptions = options.radioOptions) != null ? _options$radioOptions : options.checkOptions);
|
|
@@ -2679,6 +2707,8 @@ function createDefaultDataRenderer(options) {
|
|
|
2679
2707
|
return optionRenderer.render(props, renderers);
|
|
2680
2708
|
}
|
|
2681
2709
|
switch (renderType) {
|
|
2710
|
+
case exports.DataRenderType.NullToggle:
|
|
2711
|
+
return nullToggler.render(props, renderers);
|
|
2682
2712
|
case exports.DataRenderType.CheckList:
|
|
2683
2713
|
return checkListRenderer.render(props, renderers);
|
|
2684
2714
|
case exports.DataRenderType.Dropdown:
|
|
@@ -2779,6 +2809,52 @@ function createDefaultLabelRenderer(options) {
|
|
|
2779
2809
|
type: "label"
|
|
2780
2810
|
};
|
|
2781
2811
|
}
|
|
2812
|
+
function createNullToggleRenderer() {
|
|
2813
|
+
return createDataRenderer(function (_ref7, renderers) {
|
|
2814
|
+
var _control$meta, _nullControl, _control$meta$_nullCo;
|
|
2815
|
+
var control = _ref7.control,
|
|
2816
|
+
field = _ref7.field,
|
|
2817
|
+
props = _objectWithoutPropertiesLoose(_ref7, _excluded);
|
|
2818
|
+
var nullControl = (_control$meta$_nullCo = (_control$meta = control.meta)[_nullControl = "nullControl"]) != null ? _control$meta$_nullCo : _control$meta[_nullControl] = core.newControl(control.current.value != null);
|
|
2819
|
+
return function (layout) {
|
|
2820
|
+
var newLayout = renderers.renderData(_extends({}, props, {
|
|
2821
|
+
control: nullControl,
|
|
2822
|
+
field: _extends({}, field, {
|
|
2823
|
+
type: exports.FieldType.Bool
|
|
2824
|
+
}),
|
|
2825
|
+
renderOptions: {
|
|
2826
|
+
type: exports.DataRenderType.Checkbox
|
|
2827
|
+
}
|
|
2828
|
+
}))(layout);
|
|
2829
|
+
return _extends({}, newLayout, {
|
|
2830
|
+
children: /*#__PURE__*/React__default["default"].createElement(NullWrapper, {
|
|
2831
|
+
control: control,
|
|
2832
|
+
nullControl: nullControl,
|
|
2833
|
+
children: newLayout.children,
|
|
2834
|
+
defaultValue: props.definition.defaultValue
|
|
2835
|
+
})
|
|
2836
|
+
});
|
|
2837
|
+
};
|
|
2838
|
+
});
|
|
2839
|
+
}
|
|
2840
|
+
function NullWrapper(_ref8) {
|
|
2841
|
+
var children = _ref8.children,
|
|
2842
|
+
nullControl = _ref8.nullControl,
|
|
2843
|
+
control = _ref8.control,
|
|
2844
|
+
defaultValue = _ref8.defaultValue;
|
|
2845
|
+
core.useControlEffect(function () {
|
|
2846
|
+
return nullControl.value;
|
|
2847
|
+
}, function (e) {
|
|
2848
|
+
if (e) {
|
|
2849
|
+
var _nullControl$meta$non;
|
|
2850
|
+
control.value = (_nullControl$meta$non = nullControl.meta["nonNullValue"]) != null ? _nullControl$meta$non : defaultValue;
|
|
2851
|
+
} else {
|
|
2852
|
+
nullControl.meta["nonNullValue"] = control.value;
|
|
2853
|
+
control.value = null;
|
|
2854
|
+
}
|
|
2855
|
+
});
|
|
2856
|
+
return children;
|
|
2857
|
+
}
|
|
2782
2858
|
function createDefaultRenderers(options) {
|
|
2783
2859
|
if (options === void 0) {
|
|
2784
2860
|
options = {};
|
|
@@ -3008,6 +3084,7 @@ exports.createGroupRenderer = createGroupRenderer;
|
|
|
3008
3084
|
exports.createInputConversion = createInputConversion;
|
|
3009
3085
|
exports.createLabelRenderer = createLabelRenderer;
|
|
3010
3086
|
exports.createLayoutRenderer = createLayoutRenderer;
|
|
3087
|
+
exports.createNullToggleRenderer = createNullToggleRenderer;
|
|
3011
3088
|
exports.createRadioRenderer = createRadioRenderer;
|
|
3012
3089
|
exports.createSelectConversion = createSelectConversion;
|
|
3013
3090
|
exports.createSelectRenderer = createSelectRenderer;
|