@steedos-widgets/amis-lib 1.3.3 → 1.3.4-beta.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/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/index.cjs.js +214 -179
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +214 -179
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +102 -103
- package/dist/index.umd.js.map +1 -1
- package/dist/types/lib/converter/amis/index.d.ts +2 -6
- package/dist/types/lib/objects.d.ts +6 -6
- package/package.json +2 -2
package/dist/index.cjs.js
CHANGED
|
@@ -471,7 +471,7 @@ function getLookupListView(refObjectConfig) {
|
|
|
471
471
|
* @Author: baozhoutao@steedos.com
|
|
472
472
|
* @Date: 2022-05-23 09:53:08
|
|
473
473
|
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
474
|
-
* @LastEditTime: 2023-
|
|
474
|
+
* @LastEditTime: 2023-09-19 14:38:39
|
|
475
475
|
* @Description:
|
|
476
476
|
*/
|
|
477
477
|
|
|
@@ -651,9 +651,13 @@ async function getLookupTpl(field, ctx){
|
|
|
651
651
|
}
|
|
652
652
|
|
|
653
653
|
function getSwitchTpl(field){
|
|
654
|
+
let fieldDataStrTpl = `data._display.${field.name}`;
|
|
655
|
+
if(field.isTableField){
|
|
656
|
+
fieldDataStrTpl = `data.${field.name}`;
|
|
657
|
+
}
|
|
654
658
|
return `<% if (data.${field.name}) { %>
|
|
655
|
-
<span class="slds-icon_container slds-icon-utility-check slds-current-color" title="
|
|
656
|
-
<span ><%=
|
|
659
|
+
<span class="slds-icon_container slds-icon-utility-check slds-current-color" title="<%=${fieldDataStrTpl}%>">
|
|
660
|
+
<span ><%= ${fieldDataStrTpl} === "√" ? "<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-4 h-4'><path stroke-linecap='round' stroke-linejoin='round' d='M4.5 12.75l6 6 9-13.5' /></svg>" : ${fieldDataStrTpl} %></span>
|
|
657
661
|
</span>
|
|
658
662
|
<% } %>`
|
|
659
663
|
}
|
|
@@ -7356,7 +7360,7 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
7356
7360
|
label: subField.label,
|
|
7357
7361
|
quickEdit: readonly ? false : gridSub
|
|
7358
7362
|
};
|
|
7359
|
-
if(subField.type
|
|
7363
|
+
if(["lookup", "boolean", "toggle"].indexOf(subField.type) > -1){
|
|
7360
7364
|
gridItemSchema.type = gridSub.type;
|
|
7361
7365
|
gridItemSchema.tpl = gridSub.tpl;
|
|
7362
7366
|
}
|
|
@@ -8322,11 +8326,10 @@ async function getTableOperation(ctx){
|
|
|
8322
8326
|
}
|
|
8323
8327
|
|
|
8324
8328
|
async function getTableSchema$1(fields, options){
|
|
8325
|
-
let isLookup = options && options.isLookup;
|
|
8326
|
-
let hiddenColumnOperation = options && options.hiddenColumnOperation;
|
|
8327
8329
|
if(!options){
|
|
8328
8330
|
options = {};
|
|
8329
8331
|
}
|
|
8332
|
+
let { isLookup, hiddenColumnOperation } = options;
|
|
8330
8333
|
let columns = [];
|
|
8331
8334
|
let useMobileColumns = options.formFactor === 'SMALL' || ["split"].indexOf(options.displayAs) > -1;
|
|
8332
8335
|
if(isLookup){
|
|
@@ -8338,6 +8341,7 @@ async function getTableSchema$1(fields, options){
|
|
|
8338
8341
|
}
|
|
8339
8342
|
else {
|
|
8340
8343
|
columns = await getTableColumns(fields, options);
|
|
8344
|
+
|
|
8341
8345
|
if(!isLookup && !hiddenColumnOperation){
|
|
8342
8346
|
columns.push(await getTableOperation(options));
|
|
8343
8347
|
}
|
|
@@ -9642,6 +9646,161 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
|
|
|
9642
9646
|
return amisSchema;
|
|
9643
9647
|
}
|
|
9644
9648
|
|
|
9649
|
+
/******************************************************************************
|
|
9650
|
+
Copyright (c) Microsoft Corporation.
|
|
9651
|
+
|
|
9652
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
9653
|
+
purpose with or without fee is hereby granted.
|
|
9654
|
+
|
|
9655
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
9656
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
9657
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
9658
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
9659
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
9660
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
9661
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
9662
|
+
***************************************************************************** */
|
|
9663
|
+
|
|
9664
|
+
var __assign = function() {
|
|
9665
|
+
__assign = Object.assign || function __assign(t) {
|
|
9666
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9667
|
+
s = arguments[i];
|
|
9668
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
9669
|
+
}
|
|
9670
|
+
return t;
|
|
9671
|
+
};
|
|
9672
|
+
return __assign.apply(this, arguments);
|
|
9673
|
+
};
|
|
9674
|
+
|
|
9675
|
+
/**
|
|
9676
|
+
* 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
|
|
9677
|
+
*
|
|
9678
|
+
* @param string 要转换的字符串
|
|
9679
|
+
*/
|
|
9680
|
+
var keyToPath = function (string) {
|
|
9681
|
+
var result = [];
|
|
9682
|
+
if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
|
|
9683
|
+
result.push('');
|
|
9684
|
+
}
|
|
9685
|
+
string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
|
|
9686
|
+
var key = match;
|
|
9687
|
+
if (quote) {
|
|
9688
|
+
key = subString.replace(/\\(\\)?/g, '$1');
|
|
9689
|
+
}
|
|
9690
|
+
else if (expression) {
|
|
9691
|
+
key = expression.trim();
|
|
9692
|
+
}
|
|
9693
|
+
result.push(key);
|
|
9694
|
+
return '';
|
|
9695
|
+
});
|
|
9696
|
+
return result;
|
|
9697
|
+
};
|
|
9698
|
+
|
|
9699
|
+
// 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
|
|
9700
|
+
function createObject(superProps, props, properties) {
|
|
9701
|
+
if (superProps && Object.isFrozen(superProps)) {
|
|
9702
|
+
superProps = cloneObject(superProps);
|
|
9703
|
+
}
|
|
9704
|
+
var obj = superProps
|
|
9705
|
+
? Object.create(superProps, __assign(__assign({}, properties), { __super: {
|
|
9706
|
+
value: superProps,
|
|
9707
|
+
writable: false,
|
|
9708
|
+
enumerable: false
|
|
9709
|
+
} }))
|
|
9710
|
+
: Object.create(Object.prototype, properties);
|
|
9711
|
+
props &&
|
|
9712
|
+
isObject(props) &&
|
|
9713
|
+
Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
|
|
9714
|
+
return obj;
|
|
9715
|
+
}
|
|
9716
|
+
function cloneObject(target, persistOwnProps) {
|
|
9717
|
+
if (persistOwnProps === void 0) { persistOwnProps = true; }
|
|
9718
|
+
var obj = target && target.__super
|
|
9719
|
+
? Object.create(target.__super, {
|
|
9720
|
+
__super: {
|
|
9721
|
+
value: target.__super,
|
|
9722
|
+
writable: false,
|
|
9723
|
+
enumerable: false
|
|
9724
|
+
}
|
|
9725
|
+
})
|
|
9726
|
+
: Object.create(Object.prototype);
|
|
9727
|
+
persistOwnProps &&
|
|
9728
|
+
target &&
|
|
9729
|
+
Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
|
|
9730
|
+
return obj;
|
|
9731
|
+
}
|
|
9732
|
+
function extendObject(target, src, persistOwnProps) {
|
|
9733
|
+
if (persistOwnProps === void 0) { persistOwnProps = true; }
|
|
9734
|
+
var obj = cloneObject(target, persistOwnProps);
|
|
9735
|
+
src && Object.keys(src).forEach(function (key) { return (obj[key] = src[key]); });
|
|
9736
|
+
return obj;
|
|
9737
|
+
}
|
|
9738
|
+
function isObject(obj) {
|
|
9739
|
+
var typename = typeof obj;
|
|
9740
|
+
return (obj &&
|
|
9741
|
+
typename !== 'string' &&
|
|
9742
|
+
typename !== 'number' &&
|
|
9743
|
+
typename !== 'boolean' &&
|
|
9744
|
+
typename !== 'function' &&
|
|
9745
|
+
!Array.isArray(obj));
|
|
9746
|
+
}
|
|
9747
|
+
function setVariable(data, key, value, convertKeyToPath) {
|
|
9748
|
+
data = data || {};
|
|
9749
|
+
if (key in data) {
|
|
9750
|
+
data[key] = value;
|
|
9751
|
+
return;
|
|
9752
|
+
}
|
|
9753
|
+
var parts = convertKeyToPath !== false ? keyToPath(key) : [key];
|
|
9754
|
+
var last = parts.pop();
|
|
9755
|
+
while (parts.length) {
|
|
9756
|
+
var key_1 = parts.shift();
|
|
9757
|
+
if (isPlainObject__default["default"](data[key_1])) {
|
|
9758
|
+
data = data[key_1] = __assign({}, data[key_1]);
|
|
9759
|
+
}
|
|
9760
|
+
else if (Array.isArray(data[key_1])) {
|
|
9761
|
+
data[key_1] = data[key_1].concat();
|
|
9762
|
+
data = data[key_1];
|
|
9763
|
+
}
|
|
9764
|
+
else if (data[key_1]) {
|
|
9765
|
+
// throw new Error(`目标路径不是纯对象,不能覆盖`);
|
|
9766
|
+
// 强行转成对象
|
|
9767
|
+
data[key_1] = {};
|
|
9768
|
+
data = data[key_1];
|
|
9769
|
+
}
|
|
9770
|
+
else {
|
|
9771
|
+
data[key_1] = {};
|
|
9772
|
+
data = data[key_1];
|
|
9773
|
+
}
|
|
9774
|
+
}
|
|
9775
|
+
data[last] = value;
|
|
9776
|
+
}
|
|
9777
|
+
function deleteVariable(data, key) {
|
|
9778
|
+
if (!data) {
|
|
9779
|
+
return;
|
|
9780
|
+
}
|
|
9781
|
+
else if (data.hasOwnProperty(key)) {
|
|
9782
|
+
delete data[key];
|
|
9783
|
+
return;
|
|
9784
|
+
}
|
|
9785
|
+
var parts = keyToPath(key);
|
|
9786
|
+
var last = parts.pop();
|
|
9787
|
+
while (parts.length) {
|
|
9788
|
+
var key_2 = parts.shift();
|
|
9789
|
+
if (isPlainObject__default["default"](data[key_2])) {
|
|
9790
|
+
data = data[key_2] = __assign({}, data[key_2]);
|
|
9791
|
+
}
|
|
9792
|
+
else if (data[key_2]) {
|
|
9793
|
+
throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
|
|
9794
|
+
}
|
|
9795
|
+
else {
|
|
9796
|
+
break;
|
|
9797
|
+
}
|
|
9798
|
+
}
|
|
9799
|
+
if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
|
|
9800
|
+
delete data[last];
|
|
9801
|
+
}
|
|
9802
|
+
}
|
|
9803
|
+
|
|
9645
9804
|
/*
|
|
9646
9805
|
* @Author: baozhoutao@steedos.com
|
|
9647
9806
|
* @Date: 2022-05-26 16:02:08
|
|
@@ -9882,9 +10041,30 @@ function getBulkActions(objectSchema){
|
|
|
9882
10041
|
]
|
|
9883
10042
|
}
|
|
9884
10043
|
|
|
10044
|
+
async function getCrudSchemaWithDataFilter(crud, options = {}){
|
|
10045
|
+
const { crudDataFilter, amisData, env } = options;
|
|
10046
|
+
let onCrudDataFilter = options.onCrudDataFilter;
|
|
10047
|
+
if (!onCrudDataFilter && typeof crudDataFilter === 'string') {
|
|
10048
|
+
onCrudDataFilter = new Function(
|
|
10049
|
+
'crud',
|
|
10050
|
+
'env',
|
|
10051
|
+
'data',
|
|
10052
|
+
crudDataFilter
|
|
10053
|
+
);
|
|
10054
|
+
}
|
|
10055
|
+
|
|
10056
|
+
try {
|
|
10057
|
+
onCrudDataFilter && (crud = await onCrudDataFilter(crud, env, amisData) || crud);
|
|
10058
|
+
} catch (e) {
|
|
10059
|
+
console.warn(e);
|
|
10060
|
+
}
|
|
10061
|
+
return crud;
|
|
10062
|
+
}
|
|
10063
|
+
|
|
9885
10064
|
async function getObjectCRUD(objectSchema, fields, options){
|
|
9886
10065
|
// console.time('getObjectCRUD');
|
|
9887
|
-
const { top, perPage, showDisplayAs = false, displayAs, crudClassName = ""
|
|
10066
|
+
const { top, perPage, showDisplayAs = false, displayAs, crudClassName = "",
|
|
10067
|
+
crudDataFilter, onCrudDataFilter, amisData, env } = options;
|
|
9888
10068
|
const nonpaged = objectSchema.paging && objectSchema.paging.enabled === false;
|
|
9889
10069
|
const isTreeObject = objectSchema.enable_tree;
|
|
9890
10070
|
const bulkActions = getBulkActions(objectSchema);
|
|
@@ -9925,6 +10105,14 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
9925
10105
|
filterVisible: options.filterVisible
|
|
9926
10106
|
});
|
|
9927
10107
|
|
|
10108
|
+
options.amisData = createObject(options.amisData, {
|
|
10109
|
+
objectName: objectSchema.name,
|
|
10110
|
+
// _id: null,
|
|
10111
|
+
recordPermissions: objectSchema.permissions,
|
|
10112
|
+
uiSchema: objectSchema,
|
|
10113
|
+
// loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
|
|
10114
|
+
});
|
|
10115
|
+
|
|
9928
10116
|
|
|
9929
10117
|
let body = null;
|
|
9930
10118
|
const id = `listview_${objectSchema.name}`;
|
|
@@ -9950,7 +10138,12 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
9950
10138
|
if(objectSchema.name === 'organizations'){
|
|
9951
10139
|
labelFieldName = 'name';
|
|
9952
10140
|
}
|
|
9953
|
-
|
|
10141
|
+
let tableOptions = Object.assign({
|
|
10142
|
+
idFieldName: objectSchema.idFieldName, labelFieldName: labelFieldName,
|
|
10143
|
+
permissions:objectSchema.permissions,enable_inline_edit:objectSchema.enable_inline_edit
|
|
10144
|
+
}, options);
|
|
10145
|
+
tableOptions.amisData = createObject(options.amisData || {}, {}).__super;
|
|
10146
|
+
const table = await getTableSchema$1(fields, tableOptions);
|
|
9954
10147
|
delete table.mode;
|
|
9955
10148
|
//image与avatar需要在提交修改时特别处理
|
|
9956
10149
|
const imageNames = ___default["default"].compact(___default["default"].map(___default["default"].filter(fields, (field) => ["image","avatar"].includes(field.type)), 'name'));
|
|
@@ -10010,9 +10203,9 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
10010
10203
|
requestAdaptor: quickSaveApiRequestAdaptor,
|
|
10011
10204
|
},
|
|
10012
10205
|
rowClassNameExpr: options.rowClassNameExpr
|
|
10013
|
-
},
|
|
10014
|
-
|
|
10015
|
-
|
|
10206
|
+
}, bodyProps);
|
|
10207
|
+
|
|
10208
|
+
body = await getCrudSchemaWithDataFilter(body, { crudDataFilter, onCrudDataFilter, amisData, env });
|
|
10016
10209
|
}
|
|
10017
10210
|
|
|
10018
10211
|
const defaults = options.defaults;
|
|
@@ -10047,16 +10240,10 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
10047
10240
|
return {
|
|
10048
10241
|
type: 'service',
|
|
10049
10242
|
className: '',
|
|
10050
|
-
//目前crud的service层id不认用户自定义id,只支持默认规则id
|
|
10243
|
+
//目前crud的service层id不认用户自定义id,只支持默认规则id,许多地方的格式都写死了service_listview_${objectname}
|
|
10051
10244
|
id: `service_${id}`,
|
|
10052
10245
|
name: `page`,
|
|
10053
|
-
data:
|
|
10054
|
-
objectName: objectSchema.name,
|
|
10055
|
-
// _id: null,
|
|
10056
|
-
recordPermissions: objectSchema.permissions,
|
|
10057
|
-
uiSchema: objectSchema,
|
|
10058
|
-
// loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
|
|
10059
|
-
},
|
|
10246
|
+
data: options.amisData,
|
|
10060
10247
|
body: body
|
|
10061
10248
|
}
|
|
10062
10249
|
}
|
|
@@ -10708,7 +10895,7 @@ async function getRelatedListSchema(
|
|
|
10708
10895
|
* @Author: baozhoutao@steedos.com
|
|
10709
10896
|
* @Date: 2022-07-05 15:55:39
|
|
10710
10897
|
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
10711
|
-
* @LastEditTime: 2023-09-
|
|
10898
|
+
* @LastEditTime: 2023-09-15 09:04:49
|
|
10712
10899
|
* @Description:
|
|
10713
10900
|
*/
|
|
10714
10901
|
|
|
@@ -11041,7 +11228,9 @@ async function getListSchema(
|
|
|
11041
11228
|
"adaptor": listView.adaptor,
|
|
11042
11229
|
"headerToolbarItems": ctx.headerToolbarItems,
|
|
11043
11230
|
"filterVisible": ctx.filterVisible,
|
|
11044
|
-
"rowClassNameExpr": ctx.rowClassNameExpr
|
|
11231
|
+
"rowClassNameExpr": ctx.rowClassNameExpr,
|
|
11232
|
+
"crudDataFilter": ctx.crudDataFilter,
|
|
11233
|
+
"onCrudDataFilter": ctx.onCrudDataFilter
|
|
11045
11234
|
};
|
|
11046
11235
|
// console.log(`getListSchema===>`,amisSchema)
|
|
11047
11236
|
return {
|
|
@@ -11144,7 +11333,7 @@ async function getTableSchema(
|
|
|
11144
11333
|
fields = fields.concat(extraFields);
|
|
11145
11334
|
}
|
|
11146
11335
|
|
|
11147
|
-
|
|
11336
|
+
let crudOptions = {
|
|
11148
11337
|
tabId: objectName,
|
|
11149
11338
|
appId: appName,
|
|
11150
11339
|
objectName: objectName,
|
|
@@ -11153,8 +11342,9 @@ async function getTableSchema(
|
|
|
11153
11342
|
sort,
|
|
11154
11343
|
headerToolbarItems: ctx.headerToolbarItems,
|
|
11155
11344
|
buttons: await getListViewItemButtons(uiSchema, ctx)
|
|
11156
|
-
}
|
|
11157
|
-
|
|
11345
|
+
};
|
|
11346
|
+
crudOptions.amisData = createObject(ctx.amisData || {}, {}).__super;
|
|
11347
|
+
const amisSchema = await getObjectCRUD(uiSchema, fields, crudOptions);
|
|
11158
11348
|
// console.timeEnd('getTableSchema');
|
|
11159
11349
|
return {
|
|
11160
11350
|
uiSchema,
|
|
@@ -11938,161 +12128,6 @@ const registerRemoteAssets = async (assetUrls)=>{
|
|
|
11938
12128
|
}
|
|
11939
12129
|
};
|
|
11940
12130
|
|
|
11941
|
-
/******************************************************************************
|
|
11942
|
-
Copyright (c) Microsoft Corporation.
|
|
11943
|
-
|
|
11944
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
11945
|
-
purpose with or without fee is hereby granted.
|
|
11946
|
-
|
|
11947
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
11948
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11949
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
11950
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
11951
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
11952
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
11953
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
11954
|
-
***************************************************************************** */
|
|
11955
|
-
|
|
11956
|
-
var __assign = function() {
|
|
11957
|
-
__assign = Object.assign || function __assign(t) {
|
|
11958
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
11959
|
-
s = arguments[i];
|
|
11960
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
11961
|
-
}
|
|
11962
|
-
return t;
|
|
11963
|
-
};
|
|
11964
|
-
return __assign.apply(this, arguments);
|
|
11965
|
-
};
|
|
11966
|
-
|
|
11967
|
-
/**
|
|
11968
|
-
* 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
|
|
11969
|
-
*
|
|
11970
|
-
* @param string 要转换的字符串
|
|
11971
|
-
*/
|
|
11972
|
-
var keyToPath = function (string) {
|
|
11973
|
-
var result = [];
|
|
11974
|
-
if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
|
|
11975
|
-
result.push('');
|
|
11976
|
-
}
|
|
11977
|
-
string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
|
|
11978
|
-
var key = match;
|
|
11979
|
-
if (quote) {
|
|
11980
|
-
key = subString.replace(/\\(\\)?/g, '$1');
|
|
11981
|
-
}
|
|
11982
|
-
else if (expression) {
|
|
11983
|
-
key = expression.trim();
|
|
11984
|
-
}
|
|
11985
|
-
result.push(key);
|
|
11986
|
-
return '';
|
|
11987
|
-
});
|
|
11988
|
-
return result;
|
|
11989
|
-
};
|
|
11990
|
-
|
|
11991
|
-
// 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
|
|
11992
|
-
function createObject(superProps, props, properties) {
|
|
11993
|
-
if (superProps && Object.isFrozen(superProps)) {
|
|
11994
|
-
superProps = cloneObject(superProps);
|
|
11995
|
-
}
|
|
11996
|
-
var obj = superProps
|
|
11997
|
-
? Object.create(superProps, __assign(__assign({}, properties), { __super: {
|
|
11998
|
-
value: superProps,
|
|
11999
|
-
writable: false,
|
|
12000
|
-
enumerable: false
|
|
12001
|
-
} }))
|
|
12002
|
-
: Object.create(Object.prototype, properties);
|
|
12003
|
-
props &&
|
|
12004
|
-
isObject(props) &&
|
|
12005
|
-
Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
|
|
12006
|
-
return obj;
|
|
12007
|
-
}
|
|
12008
|
-
function cloneObject(target, persistOwnProps) {
|
|
12009
|
-
if (persistOwnProps === void 0) { persistOwnProps = true; }
|
|
12010
|
-
var obj = target && target.__super
|
|
12011
|
-
? Object.create(target.__super, {
|
|
12012
|
-
__super: {
|
|
12013
|
-
value: target.__super,
|
|
12014
|
-
writable: false,
|
|
12015
|
-
enumerable: false
|
|
12016
|
-
}
|
|
12017
|
-
})
|
|
12018
|
-
: Object.create(Object.prototype);
|
|
12019
|
-
persistOwnProps &&
|
|
12020
|
-
target &&
|
|
12021
|
-
Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
|
|
12022
|
-
return obj;
|
|
12023
|
-
}
|
|
12024
|
-
function extendObject(target, src, persistOwnProps) {
|
|
12025
|
-
if (persistOwnProps === void 0) { persistOwnProps = true; }
|
|
12026
|
-
var obj = cloneObject(target, persistOwnProps);
|
|
12027
|
-
src && Object.keys(src).forEach(function (key) { return (obj[key] = src[key]); });
|
|
12028
|
-
return obj;
|
|
12029
|
-
}
|
|
12030
|
-
function isObject(obj) {
|
|
12031
|
-
var typename = typeof obj;
|
|
12032
|
-
return (obj &&
|
|
12033
|
-
typename !== 'string' &&
|
|
12034
|
-
typename !== 'number' &&
|
|
12035
|
-
typename !== 'boolean' &&
|
|
12036
|
-
typename !== 'function' &&
|
|
12037
|
-
!Array.isArray(obj));
|
|
12038
|
-
}
|
|
12039
|
-
function setVariable(data, key, value, convertKeyToPath) {
|
|
12040
|
-
data = data || {};
|
|
12041
|
-
if (key in data) {
|
|
12042
|
-
data[key] = value;
|
|
12043
|
-
return;
|
|
12044
|
-
}
|
|
12045
|
-
var parts = convertKeyToPath !== false ? keyToPath(key) : [key];
|
|
12046
|
-
var last = parts.pop();
|
|
12047
|
-
while (parts.length) {
|
|
12048
|
-
var key_1 = parts.shift();
|
|
12049
|
-
if (isPlainObject__default["default"](data[key_1])) {
|
|
12050
|
-
data = data[key_1] = __assign({}, data[key_1]);
|
|
12051
|
-
}
|
|
12052
|
-
else if (Array.isArray(data[key_1])) {
|
|
12053
|
-
data[key_1] = data[key_1].concat();
|
|
12054
|
-
data = data[key_1];
|
|
12055
|
-
}
|
|
12056
|
-
else if (data[key_1]) {
|
|
12057
|
-
// throw new Error(`目标路径不是纯对象,不能覆盖`);
|
|
12058
|
-
// 强行转成对象
|
|
12059
|
-
data[key_1] = {};
|
|
12060
|
-
data = data[key_1];
|
|
12061
|
-
}
|
|
12062
|
-
else {
|
|
12063
|
-
data[key_1] = {};
|
|
12064
|
-
data = data[key_1];
|
|
12065
|
-
}
|
|
12066
|
-
}
|
|
12067
|
-
data[last] = value;
|
|
12068
|
-
}
|
|
12069
|
-
function deleteVariable(data, key) {
|
|
12070
|
-
if (!data) {
|
|
12071
|
-
return;
|
|
12072
|
-
}
|
|
12073
|
-
else if (data.hasOwnProperty(key)) {
|
|
12074
|
-
delete data[key];
|
|
12075
|
-
return;
|
|
12076
|
-
}
|
|
12077
|
-
var parts = keyToPath(key);
|
|
12078
|
-
var last = parts.pop();
|
|
12079
|
-
while (parts.length) {
|
|
12080
|
-
var key_2 = parts.shift();
|
|
12081
|
-
if (isPlainObject__default["default"](data[key_2])) {
|
|
12082
|
-
data = data[key_2] = __assign({}, data[key_2]);
|
|
12083
|
-
}
|
|
12084
|
-
else if (data[key_2]) {
|
|
12085
|
-
throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
|
|
12086
|
-
}
|
|
12087
|
-
else {
|
|
12088
|
-
break;
|
|
12089
|
-
}
|
|
12090
|
-
}
|
|
12091
|
-
if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
|
|
12092
|
-
delete data[last];
|
|
12093
|
-
}
|
|
12094
|
-
}
|
|
12095
|
-
|
|
12096
12131
|
/*
|
|
12097
12132
|
* @Author: baozhoutao@steedos.com
|
|
12098
12133
|
* @Date: 2022-12-17 17:03:40
|