@openli1115/lowcode-edit-pro-table 1.0.68 → 1.0.71
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/build/docs/404.html +3 -3
- package/build/docs/_demos/:uuid +3 -3
- package/build/docs/colorful-button.html +3 -3
- package/build/docs/colorful-input.html +3 -3
- package/build/docs/index.html +3 -3
- package/build/docs/{umi.72fde1b7.js → umi.8af64e25.js} +1 -1
- package/build/docs/~demos/:uuid.html +3 -3
- package/build/docs/~demos/colorful-button-demo.html +3 -3
- package/build/docs/~demos/colorful-input-demo.html +3 -3
- package/build/lowcode/assets-daily.json +13 -13
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +13 -13
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.design.js +1 -1
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/preview.js +3 -3
- package/build/lowcode/render/default/view.js +8 -8
- package/build/lowcode/view.js +6 -6
- package/dist/BizComps.js +6 -6
- package/dist/BizComps.js.map +1 -1
- package/es/components/ProCascaderSelect/index.js +5 -21
- package/es/context/FormProvider.d.ts +0 -4
- package/es/context/FormProvider.js +12 -54
- package/lib/components/ProCascaderSelect/index.js +5 -21
- package/lib/context/FormProvider.d.ts +0 -4
- package/lib/context/FormProvider.js +12 -54
- package/lowcode_es/meta.js +1 -1
- package/lowcode_lib/meta.js +1 -1
- package/package.json +3 -3
|
@@ -8,8 +8,7 @@ import { useProBoundValue } from "../../context/useProBoundValue";
|
|
|
8
8
|
import { FORM_EMPTY_ARRAY } from "../../context/useComponentContext";
|
|
9
9
|
var _window$React = window.React,
|
|
10
10
|
createElement = _window$React.createElement,
|
|
11
|
-
useCallback = _window$React.useCallback
|
|
12
|
-
useMemo = _window$React.useMemo;
|
|
11
|
+
useCallback = _window$React.useCallback;
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* 按路径在树形 dataSource 上逐级匹配,取出每一层的 label(2 级、3 级…任意多级,长度由 pathValues 决定)。
|
|
@@ -97,8 +96,7 @@ var ProCascaderSelect = function ProCascaderSelect(props) {
|
|
|
97
96
|
disabledProp = props.disabled,
|
|
98
97
|
_schemaValue = props.value,
|
|
99
98
|
schemaOnChange = props.onChange,
|
|
100
|
-
defaultValue = props.defaultValue
|
|
101
|
-
multiple = props.multiple;
|
|
99
|
+
defaultValue = props.defaultValue;
|
|
102
100
|
var _resolveProScreenBind = resolveProScreenBinding({
|
|
103
101
|
screen_structure: screen_structure,
|
|
104
102
|
screen_structure_field: screen_structure_field,
|
|
@@ -116,26 +114,12 @@ var ProCascaderSelect = function ProCascaderSelect(props) {
|
|
|
116
114
|
commit(next);
|
|
117
115
|
schemaOnChange === null || schemaOnChange === void 0 ? void 0 : schemaOnChange(next, structureName, structureField);
|
|
118
116
|
};
|
|
119
|
-
|
|
120
|
-
/** 表单/接口:完整路径 string[],如 ['2974','2975'] */
|
|
121
117
|
var displayValue = normalizeCascaderPath(value);
|
|
122
118
|
|
|
123
119
|
/**
|
|
124
|
-
* Fusion
|
|
125
|
-
*
|
|
126
|
-
* 组件展示应传「叶子」单元素数组 [leaf],内部 getLabelPath(叶子节点) 会生成多级展示。
|
|
127
|
-
* 多选仍传 Fusion 所需的多个 value(与表单存值一致)。
|
|
120
|
+
* Fusion 单选 getSingleData 对数组 value 只会用 value[0] 查节点,输入框文案不完整。
|
|
121
|
+
* 表单存全路径 [省,市,区,...] 任意多级时,用 dataSource 拼「一级 / 二级 / …」。
|
|
128
122
|
*/
|
|
129
|
-
var valueForFusion = useMemo(function () {
|
|
130
|
-
var path = displayValue;
|
|
131
|
-
if (multiple) {
|
|
132
|
-
return path;
|
|
133
|
-
}
|
|
134
|
-
if (path.length === 0) return [];
|
|
135
|
-
return [path[path.length - 1]];
|
|
136
|
-
}, [displayValue, multiple]);
|
|
137
|
-
|
|
138
|
-
/** dataSource 未就绪或异步时,仍用自定义文案兜底 */
|
|
139
123
|
var schemaDisplayRender = props.displayRender;
|
|
140
124
|
var pathDisplayRender = useCallback(function (labels, data) {
|
|
141
125
|
var fullLabels = resolvePathLabels(dataSource, normalizeCascaderPath(value));
|
|
@@ -153,7 +137,7 @@ var ProCascaderSelect = function ProCascaderSelect(props) {
|
|
|
153
137
|
readOnly: disableEdit ? true : readOnlyProp,
|
|
154
138
|
disabled: disabledProp,
|
|
155
139
|
dataSource: dataSource,
|
|
156
|
-
value:
|
|
140
|
+
value: displayValue,
|
|
157
141
|
onChange: handleChange,
|
|
158
142
|
displayRender: pathDisplayRender
|
|
159
143
|
})));
|
|
@@ -4,9 +4,5 @@ export declare function getFormContext(): any;
|
|
|
4
4
|
export declare const FormProvider: React.FC<{
|
|
5
5
|
initialValues?: Record<string, any>;
|
|
6
6
|
onChange?: (values: Record<string, any>) => void;
|
|
7
|
-
/** 由 preview 传入:最后一次 onChange(newStructures) 的引用;若与 initialValues 全等则本次为 store 回灌,勿再 merge(根治 #185) */
|
|
8
|
-
lastOutboundStructuresRef?: {
|
|
9
|
-
current: any;
|
|
10
|
-
};
|
|
11
7
|
children: React.ReactNode;
|
|
12
8
|
}>;
|
|
@@ -33,7 +33,6 @@ export var FormProvider = function FormProvider(_ref) {
|
|
|
33
33
|
var _ref$initialValues = _ref.initialValues,
|
|
34
34
|
initialValues = _ref$initialValues === void 0 ? {} : _ref$initialValues,
|
|
35
35
|
onChange = _ref.onChange,
|
|
36
|
-
lastOutboundStructuresRef = _ref.lastOutboundStructuresRef,
|
|
37
36
|
children = _ref.children;
|
|
38
37
|
var FormContext = getFormContext();
|
|
39
38
|
|
|
@@ -43,51 +42,18 @@ export var FormProvider = function FormProvider(_ref) {
|
|
|
43
42
|
values = _useState[0],
|
|
44
43
|
setValues = _useState[1];
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
var valuesRef = useRef(values);
|
|
48
|
-
valuesRef.current = values;
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* store 每次 dispatch 都会给新的 screenStructures 引用;previewStore 直接把 onChange 的 payload 设为 state(同引用)。
|
|
52
|
-
* 若 initialValues === 上次 handleFormChange 推出去的对象,说明只是「表单 → store → props」回灌,禁止再 merge,否则大表 + Fusion #185。
|
|
53
|
-
* 逻辑流 / 接口改数会换对象引用,不会与 lastOutbound 全等。
|
|
54
|
-
* 另:setFieldValue 会在微任务里 onChange,回灌前 lastOutbound 已同步为深拷贝对象;若 store 又克隆导致引用不一致,需用深比较兜底。
|
|
55
|
-
*/
|
|
45
|
+
// 仅当 initialValues 引用变化时更新状态
|
|
56
46
|
useEffect(function () {
|
|
57
|
-
if (
|
|
58
|
-
|
|
59
|
-
if (typeof console !== 'undefined' && console.debug) {
|
|
60
|
-
console.debug('[FormProvider] skip merge (store ref === last outbound from form)');
|
|
61
|
-
}
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
if (lastOutboundStructuresRef !== null && lastOutboundStructuresRef !== void 0 && lastOutboundStructuresRef.current && isEqual(initialValues, lastOutboundStructuresRef.current)) {
|
|
65
|
-
initialValuesRef.current = initialValues;
|
|
66
|
-
if (typeof console !== 'undefined' && console.debug) {
|
|
67
|
-
console.debug('[FormProvider] skip merge (deep-equal to last outbound / store echo)');
|
|
68
|
-
}
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (isEqual(initialValues, valuesRef.current)) {
|
|
47
|
+
if (!isEqual(initialValues, initialValuesRef.current)) {
|
|
48
|
+
console.log('[FormProvider] 🔄 useEffect triggered - initialValues:', initialValues);
|
|
72
49
|
initialValuesRef.current = initialValues;
|
|
73
|
-
|
|
50
|
+
setValues(function (prev) {
|
|
51
|
+
return _extends({}, prev, initialValues);
|
|
52
|
+
});
|
|
74
53
|
}
|
|
75
|
-
if (isEqual(initialValues, initialValuesRef.current)) {
|
|
76
|
-
initialValuesRef.current = initialValues;
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
console.log('[FormProvider] 🔄 useEffect triggered - initialValues:', initialValues);
|
|
80
|
-
initialValuesRef.current = initialValues;
|
|
81
|
-
setValues(function (prev) {
|
|
82
|
-
var merged = _extends({}, prev, initialValues);
|
|
83
|
-
if (isEqual(prev, merged)) {
|
|
84
|
-
return prev;
|
|
85
|
-
}
|
|
86
|
-
return merged;
|
|
87
|
-
});
|
|
88
54
|
}, [initialValues]);
|
|
89
55
|
|
|
90
|
-
// 优化 setFieldValue
|
|
56
|
+
// 优化 setFieldValue
|
|
91
57
|
var setFieldValue = useCallback(function (path, value) {
|
|
92
58
|
setValues(function (prev) {
|
|
93
59
|
// 使用浅比较检查值是否实际变化
|
|
@@ -97,25 +63,17 @@ export var FormProvider = function FormProvider(_ref) {
|
|
|
97
63
|
var newValues = cloneDeep(prev);
|
|
98
64
|
set(newValues, path, value);
|
|
99
65
|
console.log("[FormProvider] \uD83D\uDCDD Set field '" + path + "' to:", value);
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
66
|
+
|
|
67
|
+
// 触发 onChange 回调,把新值通知给外部
|
|
103
68
|
if (onChange) {
|
|
69
|
+
// 使用微任务避免阻塞渲染
|
|
104
70
|
Promise.resolve().then(function () {
|
|
105
|
-
|
|
106
|
-
var run = function run() {
|
|
107
|
-
return onChange(newValues);
|
|
108
|
-
};
|
|
109
|
-
if (rd && typeof rd.unstable_batchedUpdates === 'function') {
|
|
110
|
-
rd.unstable_batchedUpdates(run);
|
|
111
|
-
} else {
|
|
112
|
-
run();
|
|
113
|
-
}
|
|
71
|
+
onChange(newValues);
|
|
114
72
|
});
|
|
115
73
|
}
|
|
116
74
|
return newValues;
|
|
117
75
|
});
|
|
118
|
-
}, [
|
|
76
|
+
}, []);
|
|
119
77
|
|
|
120
78
|
// 使用 useMemo 缓存 context 值
|
|
121
79
|
var contextValue = useMemo(function () {
|
|
@@ -13,8 +13,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
13
13
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
14
14
|
var _window$React = window.React,
|
|
15
15
|
createElement = _window$React.createElement,
|
|
16
|
-
useCallback = _window$React.useCallback
|
|
17
|
-
useMemo = _window$React.useMemo;
|
|
16
|
+
useCallback = _window$React.useCallback;
|
|
18
17
|
|
|
19
18
|
/**
|
|
20
19
|
* 按路径在树形 dataSource 上逐级匹配,取出每一层的 label(2 级、3 级…任意多级,长度由 pathValues 决定)。
|
|
@@ -102,8 +101,7 @@ var ProCascaderSelect = function ProCascaderSelect(props) {
|
|
|
102
101
|
disabledProp = props.disabled,
|
|
103
102
|
_schemaValue = props.value,
|
|
104
103
|
schemaOnChange = props.onChange,
|
|
105
|
-
defaultValue = props.defaultValue
|
|
106
|
-
multiple = props.multiple;
|
|
104
|
+
defaultValue = props.defaultValue;
|
|
107
105
|
var _resolveProScreenBind = (0, _utils.resolveProScreenBinding)({
|
|
108
106
|
screen_structure: screen_structure,
|
|
109
107
|
screen_structure_field: screen_structure_field,
|
|
@@ -121,26 +119,12 @@ var ProCascaderSelect = function ProCascaderSelect(props) {
|
|
|
121
119
|
commit(next);
|
|
122
120
|
schemaOnChange === null || schemaOnChange === void 0 ? void 0 : schemaOnChange(next, structureName, structureField);
|
|
123
121
|
};
|
|
124
|
-
|
|
125
|
-
/** 表单/接口:完整路径 string[],如 ['2974','2975'] */
|
|
126
122
|
var displayValue = normalizeCascaderPath(value);
|
|
127
123
|
|
|
128
124
|
/**
|
|
129
|
-
* Fusion
|
|
130
|
-
*
|
|
131
|
-
* 组件展示应传「叶子」单元素数组 [leaf],内部 getLabelPath(叶子节点) 会生成多级展示。
|
|
132
|
-
* 多选仍传 Fusion 所需的多个 value(与表单存值一致)。
|
|
125
|
+
* Fusion 单选 getSingleData 对数组 value 只会用 value[0] 查节点,输入框文案不完整。
|
|
126
|
+
* 表单存全路径 [省,市,区,...] 任意多级时,用 dataSource 拼「一级 / 二级 / …」。
|
|
133
127
|
*/
|
|
134
|
-
var valueForFusion = useMemo(function () {
|
|
135
|
-
var path = displayValue;
|
|
136
|
-
if (multiple) {
|
|
137
|
-
return path;
|
|
138
|
-
}
|
|
139
|
-
if (path.length === 0) return [];
|
|
140
|
-
return [path[path.length - 1]];
|
|
141
|
-
}, [displayValue, multiple]);
|
|
142
|
-
|
|
143
|
-
/** dataSource 未就绪或异步时,仍用自定义文案兜底 */
|
|
144
128
|
var schemaDisplayRender = props.displayRender;
|
|
145
129
|
var pathDisplayRender = useCallback(function (labels, data) {
|
|
146
130
|
var fullLabels = resolvePathLabels(dataSource, normalizeCascaderPath(value));
|
|
@@ -158,7 +142,7 @@ var ProCascaderSelect = function ProCascaderSelect(props) {
|
|
|
158
142
|
readOnly: disableEdit ? true : readOnlyProp,
|
|
159
143
|
disabled: disabledProp,
|
|
160
144
|
dataSource: dataSource,
|
|
161
|
-
value:
|
|
145
|
+
value: displayValue,
|
|
162
146
|
onChange: handleChange,
|
|
163
147
|
displayRender: pathDisplayRender
|
|
164
148
|
})));
|
|
@@ -4,9 +4,5 @@ export declare function getFormContext(): any;
|
|
|
4
4
|
export declare const FormProvider: React.FC<{
|
|
5
5
|
initialValues?: Record<string, any>;
|
|
6
6
|
onChange?: (values: Record<string, any>) => void;
|
|
7
|
-
/** 由 preview 传入:最后一次 onChange(newStructures) 的引用;若与 initialValues 全等则本次为 store 回灌,勿再 merge(根治 #185) */
|
|
8
|
-
lastOutboundStructuresRef?: {
|
|
9
|
-
current: any;
|
|
10
|
-
};
|
|
11
7
|
children: React.ReactNode;
|
|
12
8
|
}>;
|
|
@@ -39,7 +39,6 @@ var FormProvider = exports.FormProvider = function FormProvider(_ref) {
|
|
|
39
39
|
var _ref$initialValues = _ref.initialValues,
|
|
40
40
|
initialValues = _ref$initialValues === void 0 ? {} : _ref$initialValues,
|
|
41
41
|
onChange = _ref.onChange,
|
|
42
|
-
lastOutboundStructuresRef = _ref.lastOutboundStructuresRef,
|
|
43
42
|
children = _ref.children;
|
|
44
43
|
var FormContext = getFormContext();
|
|
45
44
|
|
|
@@ -49,51 +48,18 @@ var FormProvider = exports.FormProvider = function FormProvider(_ref) {
|
|
|
49
48
|
values = _useState[0],
|
|
50
49
|
setValues = _useState[1];
|
|
51
50
|
|
|
52
|
-
|
|
53
|
-
var valuesRef = useRef(values);
|
|
54
|
-
valuesRef.current = values;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* store 每次 dispatch 都会给新的 screenStructures 引用;previewStore 直接把 onChange 的 payload 设为 state(同引用)。
|
|
58
|
-
* 若 initialValues === 上次 handleFormChange 推出去的对象,说明只是「表单 → store → props」回灌,禁止再 merge,否则大表 + Fusion #185。
|
|
59
|
-
* 逻辑流 / 接口改数会换对象引用,不会与 lastOutbound 全等。
|
|
60
|
-
* 另:setFieldValue 会在微任务里 onChange,回灌前 lastOutbound 已同步为深拷贝对象;若 store 又克隆导致引用不一致,需用深比较兜底。
|
|
61
|
-
*/
|
|
51
|
+
// 仅当 initialValues 引用变化时更新状态
|
|
62
52
|
useEffect(function () {
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
if (typeof console !== 'undefined' && console.debug) {
|
|
66
|
-
console.debug('[FormProvider] skip merge (store ref === last outbound from form)');
|
|
67
|
-
}
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
if (lastOutboundStructuresRef !== null && lastOutboundStructuresRef !== void 0 && lastOutboundStructuresRef.current && (0, _lodash.isEqual)(initialValues, lastOutboundStructuresRef.current)) {
|
|
71
|
-
initialValuesRef.current = initialValues;
|
|
72
|
-
if (typeof console !== 'undefined' && console.debug) {
|
|
73
|
-
console.debug('[FormProvider] skip merge (deep-equal to last outbound / store echo)');
|
|
74
|
-
}
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if ((0, _lodash.isEqual)(initialValues, valuesRef.current)) {
|
|
53
|
+
if (!(0, _lodash.isEqual)(initialValues, initialValuesRef.current)) {
|
|
54
|
+
console.log('[FormProvider] 🔄 useEffect triggered - initialValues:', initialValues);
|
|
78
55
|
initialValuesRef.current = initialValues;
|
|
79
|
-
|
|
56
|
+
setValues(function (prev) {
|
|
57
|
+
return (0, _extends2["default"])({}, prev, initialValues);
|
|
58
|
+
});
|
|
80
59
|
}
|
|
81
|
-
if ((0, _lodash.isEqual)(initialValues, initialValuesRef.current)) {
|
|
82
|
-
initialValuesRef.current = initialValues;
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
console.log('[FormProvider] 🔄 useEffect triggered - initialValues:', initialValues);
|
|
86
|
-
initialValuesRef.current = initialValues;
|
|
87
|
-
setValues(function (prev) {
|
|
88
|
-
var merged = (0, _extends2["default"])({}, prev, initialValues);
|
|
89
|
-
if ((0, _lodash.isEqual)(prev, merged)) {
|
|
90
|
-
return prev;
|
|
91
|
-
}
|
|
92
|
-
return merged;
|
|
93
|
-
});
|
|
94
60
|
}, [initialValues]);
|
|
95
61
|
|
|
96
|
-
// 优化 setFieldValue
|
|
62
|
+
// 优化 setFieldValue
|
|
97
63
|
var setFieldValue = useCallback(function (path, value) {
|
|
98
64
|
setValues(function (prev) {
|
|
99
65
|
// 使用浅比较检查值是否实际变化
|
|
@@ -103,25 +69,17 @@ var FormProvider = exports.FormProvider = function FormProvider(_ref) {
|
|
|
103
69
|
var newValues = (0, _lodash.cloneDeep)(prev);
|
|
104
70
|
(0, _lodash.set)(newValues, path, value);
|
|
105
71
|
console.log("[FormProvider] \uD83D\uDCDD Set field '" + path + "' to:", value);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
72
|
+
|
|
73
|
+
// 触发 onChange 回调,把新值通知给外部
|
|
109
74
|
if (onChange) {
|
|
75
|
+
// 使用微任务避免阻塞渲染
|
|
110
76
|
Promise.resolve().then(function () {
|
|
111
|
-
|
|
112
|
-
var run = function run() {
|
|
113
|
-
return onChange(newValues);
|
|
114
|
-
};
|
|
115
|
-
if (rd && typeof rd.unstable_batchedUpdates === 'function') {
|
|
116
|
-
rd.unstable_batchedUpdates(run);
|
|
117
|
-
} else {
|
|
118
|
-
run();
|
|
119
|
-
}
|
|
77
|
+
onChange(newValues);
|
|
120
78
|
});
|
|
121
79
|
}
|
|
122
80
|
return newValues;
|
|
123
81
|
});
|
|
124
|
-
}, [
|
|
82
|
+
}, []);
|
|
125
83
|
|
|
126
84
|
// 使用 useMemo 缓存 context 值
|
|
127
85
|
var contextValue = useMemo(function () {
|
package/lowcode_es/meta.js
CHANGED
|
@@ -101,7 +101,7 @@ function fillRealVersion(meta, packageName, version, basicLibraryVersion) {
|
|
|
101
101
|
packageName = '@openli1115/lowcode-edit-pro-table';
|
|
102
102
|
}
|
|
103
103
|
if (version === void 0) {
|
|
104
|
-
version = '1.0.
|
|
104
|
+
version = '1.0.71';
|
|
105
105
|
}
|
|
106
106
|
if (basicLibraryVersion === void 0) {
|
|
107
107
|
basicLibraryVersion = {
|
package/lowcode_lib/meta.js
CHANGED
|
@@ -106,7 +106,7 @@ function fillRealVersion(meta, packageName, version, basicLibraryVersion) {
|
|
|
106
106
|
packageName = '@openli1115/lowcode-edit-pro-table';
|
|
107
107
|
}
|
|
108
108
|
if (version === void 0) {
|
|
109
|
-
version = '1.0.
|
|
109
|
+
version = '1.0.71';
|
|
110
110
|
}
|
|
111
111
|
if (basicLibraryVersion === void 0) {
|
|
112
112
|
basicLibraryVersion = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openli1115/lowcode-edit-pro-table",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.71",
|
|
4
4
|
"description": "@openli1115/lowcode-edit-pro-table",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -101,10 +101,10 @@
|
|
|
101
101
|
},
|
|
102
102
|
"componentConfig": {
|
|
103
103
|
"isComponentLibrary": true,
|
|
104
|
-
"materialSchema": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.
|
|
104
|
+
"materialSchema": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.71/build/lowcode/assets-prod.json"
|
|
105
105
|
},
|
|
106
106
|
"lcMeta": {
|
|
107
107
|
"type": "component"
|
|
108
108
|
},
|
|
109
|
-
"homepage": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.
|
|
109
|
+
"homepage": "https://unpkg.com/@openli1115/lowcode-edit-pro-table@1.0.71/build/index.html"
|
|
110
110
|
}
|