@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.esm.js
CHANGED
|
@@ -444,7 +444,7 @@ function getLookupListView(refObjectConfig) {
|
|
|
444
444
|
* @Author: baozhoutao@steedos.com
|
|
445
445
|
* @Date: 2022-05-23 09:53:08
|
|
446
446
|
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
447
|
-
* @LastEditTime: 2023-
|
|
447
|
+
* @LastEditTime: 2023-09-19 14:38:39
|
|
448
448
|
* @Description:
|
|
449
449
|
*/
|
|
450
450
|
|
|
@@ -624,9 +624,13 @@ async function getLookupTpl(field, ctx){
|
|
|
624
624
|
}
|
|
625
625
|
|
|
626
626
|
function getSwitchTpl(field){
|
|
627
|
+
let fieldDataStrTpl = `data._display.${field.name}`;
|
|
628
|
+
if(field.isTableField){
|
|
629
|
+
fieldDataStrTpl = `data.${field.name}`;
|
|
630
|
+
}
|
|
627
631
|
return `<% if (data.${field.name}) { %>
|
|
628
|
-
<span class="slds-icon_container slds-icon-utility-check slds-current-color" title="
|
|
629
|
-
<span ><%=
|
|
632
|
+
<span class="slds-icon_container slds-icon-utility-check slds-current-color" title="<%=${fieldDataStrTpl}%>">
|
|
633
|
+
<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>
|
|
630
634
|
</span>
|
|
631
635
|
<% } %>`
|
|
632
636
|
}
|
|
@@ -7329,7 +7333,7 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
7329
7333
|
label: subField.label,
|
|
7330
7334
|
quickEdit: readonly ? false : gridSub
|
|
7331
7335
|
};
|
|
7332
|
-
if(subField.type
|
|
7336
|
+
if(["lookup", "boolean", "toggle"].indexOf(subField.type) > -1){
|
|
7333
7337
|
gridItemSchema.type = gridSub.type;
|
|
7334
7338
|
gridItemSchema.tpl = gridSub.tpl;
|
|
7335
7339
|
}
|
|
@@ -8295,11 +8299,10 @@ async function getTableOperation(ctx){
|
|
|
8295
8299
|
}
|
|
8296
8300
|
|
|
8297
8301
|
async function getTableSchema$1(fields, options){
|
|
8298
|
-
let isLookup = options && options.isLookup;
|
|
8299
|
-
let hiddenColumnOperation = options && options.hiddenColumnOperation;
|
|
8300
8302
|
if(!options){
|
|
8301
8303
|
options = {};
|
|
8302
8304
|
}
|
|
8305
|
+
let { isLookup, hiddenColumnOperation } = options;
|
|
8303
8306
|
let columns = [];
|
|
8304
8307
|
let useMobileColumns = options.formFactor === 'SMALL' || ["split"].indexOf(options.displayAs) > -1;
|
|
8305
8308
|
if(isLookup){
|
|
@@ -8311,6 +8314,7 @@ async function getTableSchema$1(fields, options){
|
|
|
8311
8314
|
}
|
|
8312
8315
|
else {
|
|
8313
8316
|
columns = await getTableColumns(fields, options);
|
|
8317
|
+
|
|
8314
8318
|
if(!isLookup && !hiddenColumnOperation){
|
|
8315
8319
|
columns.push(await getTableOperation(options));
|
|
8316
8320
|
}
|
|
@@ -9615,6 +9619,161 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
|
|
|
9615
9619
|
return amisSchema;
|
|
9616
9620
|
}
|
|
9617
9621
|
|
|
9622
|
+
/******************************************************************************
|
|
9623
|
+
Copyright (c) Microsoft Corporation.
|
|
9624
|
+
|
|
9625
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
9626
|
+
purpose with or without fee is hereby granted.
|
|
9627
|
+
|
|
9628
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
9629
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
9630
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
9631
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
9632
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
9633
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
9634
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
9635
|
+
***************************************************************************** */
|
|
9636
|
+
|
|
9637
|
+
var __assign = function() {
|
|
9638
|
+
__assign = Object.assign || function __assign(t) {
|
|
9639
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9640
|
+
s = arguments[i];
|
|
9641
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
9642
|
+
}
|
|
9643
|
+
return t;
|
|
9644
|
+
};
|
|
9645
|
+
return __assign.apply(this, arguments);
|
|
9646
|
+
};
|
|
9647
|
+
|
|
9648
|
+
/**
|
|
9649
|
+
* 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
|
|
9650
|
+
*
|
|
9651
|
+
* @param string 要转换的字符串
|
|
9652
|
+
*/
|
|
9653
|
+
var keyToPath = function (string) {
|
|
9654
|
+
var result = [];
|
|
9655
|
+
if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
|
|
9656
|
+
result.push('');
|
|
9657
|
+
}
|
|
9658
|
+
string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
|
|
9659
|
+
var key = match;
|
|
9660
|
+
if (quote) {
|
|
9661
|
+
key = subString.replace(/\\(\\)?/g, '$1');
|
|
9662
|
+
}
|
|
9663
|
+
else if (expression) {
|
|
9664
|
+
key = expression.trim();
|
|
9665
|
+
}
|
|
9666
|
+
result.push(key);
|
|
9667
|
+
return '';
|
|
9668
|
+
});
|
|
9669
|
+
return result;
|
|
9670
|
+
};
|
|
9671
|
+
|
|
9672
|
+
// 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
|
|
9673
|
+
function createObject(superProps, props, properties) {
|
|
9674
|
+
if (superProps && Object.isFrozen(superProps)) {
|
|
9675
|
+
superProps = cloneObject(superProps);
|
|
9676
|
+
}
|
|
9677
|
+
var obj = superProps
|
|
9678
|
+
? Object.create(superProps, __assign(__assign({}, properties), { __super: {
|
|
9679
|
+
value: superProps,
|
|
9680
|
+
writable: false,
|
|
9681
|
+
enumerable: false
|
|
9682
|
+
} }))
|
|
9683
|
+
: Object.create(Object.prototype, properties);
|
|
9684
|
+
props &&
|
|
9685
|
+
isObject(props) &&
|
|
9686
|
+
Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
|
|
9687
|
+
return obj;
|
|
9688
|
+
}
|
|
9689
|
+
function cloneObject(target, persistOwnProps) {
|
|
9690
|
+
if (persistOwnProps === void 0) { persistOwnProps = true; }
|
|
9691
|
+
var obj = target && target.__super
|
|
9692
|
+
? Object.create(target.__super, {
|
|
9693
|
+
__super: {
|
|
9694
|
+
value: target.__super,
|
|
9695
|
+
writable: false,
|
|
9696
|
+
enumerable: false
|
|
9697
|
+
}
|
|
9698
|
+
})
|
|
9699
|
+
: Object.create(Object.prototype);
|
|
9700
|
+
persistOwnProps &&
|
|
9701
|
+
target &&
|
|
9702
|
+
Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
|
|
9703
|
+
return obj;
|
|
9704
|
+
}
|
|
9705
|
+
function extendObject(target, src, persistOwnProps) {
|
|
9706
|
+
if (persistOwnProps === void 0) { persistOwnProps = true; }
|
|
9707
|
+
var obj = cloneObject(target, persistOwnProps);
|
|
9708
|
+
src && Object.keys(src).forEach(function (key) { return (obj[key] = src[key]); });
|
|
9709
|
+
return obj;
|
|
9710
|
+
}
|
|
9711
|
+
function isObject(obj) {
|
|
9712
|
+
var typename = typeof obj;
|
|
9713
|
+
return (obj &&
|
|
9714
|
+
typename !== 'string' &&
|
|
9715
|
+
typename !== 'number' &&
|
|
9716
|
+
typename !== 'boolean' &&
|
|
9717
|
+
typename !== 'function' &&
|
|
9718
|
+
!Array.isArray(obj));
|
|
9719
|
+
}
|
|
9720
|
+
function setVariable(data, key, value, convertKeyToPath) {
|
|
9721
|
+
data = data || {};
|
|
9722
|
+
if (key in data) {
|
|
9723
|
+
data[key] = value;
|
|
9724
|
+
return;
|
|
9725
|
+
}
|
|
9726
|
+
var parts = convertKeyToPath !== false ? keyToPath(key) : [key];
|
|
9727
|
+
var last = parts.pop();
|
|
9728
|
+
while (parts.length) {
|
|
9729
|
+
var key_1 = parts.shift();
|
|
9730
|
+
if (isPlainObject(data[key_1])) {
|
|
9731
|
+
data = data[key_1] = __assign({}, data[key_1]);
|
|
9732
|
+
}
|
|
9733
|
+
else if (Array.isArray(data[key_1])) {
|
|
9734
|
+
data[key_1] = data[key_1].concat();
|
|
9735
|
+
data = data[key_1];
|
|
9736
|
+
}
|
|
9737
|
+
else if (data[key_1]) {
|
|
9738
|
+
// throw new Error(`目标路径不是纯对象,不能覆盖`);
|
|
9739
|
+
// 强行转成对象
|
|
9740
|
+
data[key_1] = {};
|
|
9741
|
+
data = data[key_1];
|
|
9742
|
+
}
|
|
9743
|
+
else {
|
|
9744
|
+
data[key_1] = {};
|
|
9745
|
+
data = data[key_1];
|
|
9746
|
+
}
|
|
9747
|
+
}
|
|
9748
|
+
data[last] = value;
|
|
9749
|
+
}
|
|
9750
|
+
function deleteVariable(data, key) {
|
|
9751
|
+
if (!data) {
|
|
9752
|
+
return;
|
|
9753
|
+
}
|
|
9754
|
+
else if (data.hasOwnProperty(key)) {
|
|
9755
|
+
delete data[key];
|
|
9756
|
+
return;
|
|
9757
|
+
}
|
|
9758
|
+
var parts = keyToPath(key);
|
|
9759
|
+
var last = parts.pop();
|
|
9760
|
+
while (parts.length) {
|
|
9761
|
+
var key_2 = parts.shift();
|
|
9762
|
+
if (isPlainObject(data[key_2])) {
|
|
9763
|
+
data = data[key_2] = __assign({}, data[key_2]);
|
|
9764
|
+
}
|
|
9765
|
+
else if (data[key_2]) {
|
|
9766
|
+
throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
|
|
9767
|
+
}
|
|
9768
|
+
else {
|
|
9769
|
+
break;
|
|
9770
|
+
}
|
|
9771
|
+
}
|
|
9772
|
+
if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
|
|
9773
|
+
delete data[last];
|
|
9774
|
+
}
|
|
9775
|
+
}
|
|
9776
|
+
|
|
9618
9777
|
/*
|
|
9619
9778
|
* @Author: baozhoutao@steedos.com
|
|
9620
9779
|
* @Date: 2022-05-26 16:02:08
|
|
@@ -9855,9 +10014,30 @@ function getBulkActions(objectSchema){
|
|
|
9855
10014
|
]
|
|
9856
10015
|
}
|
|
9857
10016
|
|
|
10017
|
+
async function getCrudSchemaWithDataFilter(crud, options = {}){
|
|
10018
|
+
const { crudDataFilter, amisData, env } = options;
|
|
10019
|
+
let onCrudDataFilter = options.onCrudDataFilter;
|
|
10020
|
+
if (!onCrudDataFilter && typeof crudDataFilter === 'string') {
|
|
10021
|
+
onCrudDataFilter = new Function(
|
|
10022
|
+
'crud',
|
|
10023
|
+
'env',
|
|
10024
|
+
'data',
|
|
10025
|
+
crudDataFilter
|
|
10026
|
+
);
|
|
10027
|
+
}
|
|
10028
|
+
|
|
10029
|
+
try {
|
|
10030
|
+
onCrudDataFilter && (crud = await onCrudDataFilter(crud, env, amisData) || crud);
|
|
10031
|
+
} catch (e) {
|
|
10032
|
+
console.warn(e);
|
|
10033
|
+
}
|
|
10034
|
+
return crud;
|
|
10035
|
+
}
|
|
10036
|
+
|
|
9858
10037
|
async function getObjectCRUD(objectSchema, fields, options){
|
|
9859
10038
|
// console.time('getObjectCRUD');
|
|
9860
|
-
const { top, perPage, showDisplayAs = false, displayAs, crudClassName = ""
|
|
10039
|
+
const { top, perPage, showDisplayAs = false, displayAs, crudClassName = "",
|
|
10040
|
+
crudDataFilter, onCrudDataFilter, amisData, env } = options;
|
|
9861
10041
|
const nonpaged = objectSchema.paging && objectSchema.paging.enabled === false;
|
|
9862
10042
|
const isTreeObject = objectSchema.enable_tree;
|
|
9863
10043
|
const bulkActions = getBulkActions(objectSchema);
|
|
@@ -9898,6 +10078,14 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
9898
10078
|
filterVisible: options.filterVisible
|
|
9899
10079
|
});
|
|
9900
10080
|
|
|
10081
|
+
options.amisData = createObject(options.amisData, {
|
|
10082
|
+
objectName: objectSchema.name,
|
|
10083
|
+
// _id: null,
|
|
10084
|
+
recordPermissions: objectSchema.permissions,
|
|
10085
|
+
uiSchema: objectSchema,
|
|
10086
|
+
// loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
|
|
10087
|
+
});
|
|
10088
|
+
|
|
9901
10089
|
|
|
9902
10090
|
let body = null;
|
|
9903
10091
|
const id = `listview_${objectSchema.name}`;
|
|
@@ -9923,7 +10111,12 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
9923
10111
|
if(objectSchema.name === 'organizations'){
|
|
9924
10112
|
labelFieldName = 'name';
|
|
9925
10113
|
}
|
|
9926
|
-
|
|
10114
|
+
let tableOptions = Object.assign({
|
|
10115
|
+
idFieldName: objectSchema.idFieldName, labelFieldName: labelFieldName,
|
|
10116
|
+
permissions:objectSchema.permissions,enable_inline_edit:objectSchema.enable_inline_edit
|
|
10117
|
+
}, options);
|
|
10118
|
+
tableOptions.amisData = createObject(options.amisData || {}, {}).__super;
|
|
10119
|
+
const table = await getTableSchema$1(fields, tableOptions);
|
|
9927
10120
|
delete table.mode;
|
|
9928
10121
|
//image与avatar需要在提交修改时特别处理
|
|
9929
10122
|
const imageNames = ___default.compact(___default.map(___default.filter(fields, (field) => ["image","avatar"].includes(field.type)), 'name'));
|
|
@@ -9983,9 +10176,9 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
9983
10176
|
requestAdaptor: quickSaveApiRequestAdaptor,
|
|
9984
10177
|
},
|
|
9985
10178
|
rowClassNameExpr: options.rowClassNameExpr
|
|
9986
|
-
},
|
|
9987
|
-
|
|
9988
|
-
|
|
10179
|
+
}, bodyProps);
|
|
10180
|
+
|
|
10181
|
+
body = await getCrudSchemaWithDataFilter(body, { crudDataFilter, onCrudDataFilter, amisData, env });
|
|
9989
10182
|
}
|
|
9990
10183
|
|
|
9991
10184
|
const defaults = options.defaults;
|
|
@@ -10020,16 +10213,10 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
10020
10213
|
return {
|
|
10021
10214
|
type: 'service',
|
|
10022
10215
|
className: '',
|
|
10023
|
-
//目前crud的service层id不认用户自定义id,只支持默认规则id
|
|
10216
|
+
//目前crud的service层id不认用户自定义id,只支持默认规则id,许多地方的格式都写死了service_listview_${objectname}
|
|
10024
10217
|
id: `service_${id}`,
|
|
10025
10218
|
name: `page`,
|
|
10026
|
-
data:
|
|
10027
|
-
objectName: objectSchema.name,
|
|
10028
|
-
// _id: null,
|
|
10029
|
-
recordPermissions: objectSchema.permissions,
|
|
10030
|
-
uiSchema: objectSchema,
|
|
10031
|
-
// loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
|
|
10032
|
-
},
|
|
10219
|
+
data: options.amisData,
|
|
10033
10220
|
body: body
|
|
10034
10221
|
}
|
|
10035
10222
|
}
|
|
@@ -10681,7 +10868,7 @@ async function getRelatedListSchema(
|
|
|
10681
10868
|
* @Author: baozhoutao@steedos.com
|
|
10682
10869
|
* @Date: 2022-07-05 15:55:39
|
|
10683
10870
|
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
10684
|
-
* @LastEditTime: 2023-09-
|
|
10871
|
+
* @LastEditTime: 2023-09-15 09:04:49
|
|
10685
10872
|
* @Description:
|
|
10686
10873
|
*/
|
|
10687
10874
|
|
|
@@ -11014,7 +11201,9 @@ async function getListSchema(
|
|
|
11014
11201
|
"adaptor": listView.adaptor,
|
|
11015
11202
|
"headerToolbarItems": ctx.headerToolbarItems,
|
|
11016
11203
|
"filterVisible": ctx.filterVisible,
|
|
11017
|
-
"rowClassNameExpr": ctx.rowClassNameExpr
|
|
11204
|
+
"rowClassNameExpr": ctx.rowClassNameExpr,
|
|
11205
|
+
"crudDataFilter": ctx.crudDataFilter,
|
|
11206
|
+
"onCrudDataFilter": ctx.onCrudDataFilter
|
|
11018
11207
|
};
|
|
11019
11208
|
// console.log(`getListSchema===>`,amisSchema)
|
|
11020
11209
|
return {
|
|
@@ -11117,7 +11306,7 @@ async function getTableSchema(
|
|
|
11117
11306
|
fields = fields.concat(extraFields);
|
|
11118
11307
|
}
|
|
11119
11308
|
|
|
11120
|
-
|
|
11309
|
+
let crudOptions = {
|
|
11121
11310
|
tabId: objectName,
|
|
11122
11311
|
appId: appName,
|
|
11123
11312
|
objectName: objectName,
|
|
@@ -11126,8 +11315,9 @@ async function getTableSchema(
|
|
|
11126
11315
|
sort,
|
|
11127
11316
|
headerToolbarItems: ctx.headerToolbarItems,
|
|
11128
11317
|
buttons: await getListViewItemButtons(uiSchema, ctx)
|
|
11129
|
-
}
|
|
11130
|
-
|
|
11318
|
+
};
|
|
11319
|
+
crudOptions.amisData = createObject(ctx.amisData || {}, {}).__super;
|
|
11320
|
+
const amisSchema = await getObjectCRUD(uiSchema, fields, crudOptions);
|
|
11131
11321
|
// console.timeEnd('getTableSchema');
|
|
11132
11322
|
return {
|
|
11133
11323
|
uiSchema,
|
|
@@ -11911,161 +12101,6 @@ const registerRemoteAssets = async (assetUrls)=>{
|
|
|
11911
12101
|
}
|
|
11912
12102
|
};
|
|
11913
12103
|
|
|
11914
|
-
/******************************************************************************
|
|
11915
|
-
Copyright (c) Microsoft Corporation.
|
|
11916
|
-
|
|
11917
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
11918
|
-
purpose with or without fee is hereby granted.
|
|
11919
|
-
|
|
11920
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
11921
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11922
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
11923
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
11924
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
11925
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
11926
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
11927
|
-
***************************************************************************** */
|
|
11928
|
-
|
|
11929
|
-
var __assign = function() {
|
|
11930
|
-
__assign = Object.assign || function __assign(t) {
|
|
11931
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
11932
|
-
s = arguments[i];
|
|
11933
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
11934
|
-
}
|
|
11935
|
-
return t;
|
|
11936
|
-
};
|
|
11937
|
-
return __assign.apply(this, arguments);
|
|
11938
|
-
};
|
|
11939
|
-
|
|
11940
|
-
/**
|
|
11941
|
-
* 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
|
|
11942
|
-
*
|
|
11943
|
-
* @param string 要转换的字符串
|
|
11944
|
-
*/
|
|
11945
|
-
var keyToPath = function (string) {
|
|
11946
|
-
var result = [];
|
|
11947
|
-
if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
|
|
11948
|
-
result.push('');
|
|
11949
|
-
}
|
|
11950
|
-
string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
|
|
11951
|
-
var key = match;
|
|
11952
|
-
if (quote) {
|
|
11953
|
-
key = subString.replace(/\\(\\)?/g, '$1');
|
|
11954
|
-
}
|
|
11955
|
-
else if (expression) {
|
|
11956
|
-
key = expression.trim();
|
|
11957
|
-
}
|
|
11958
|
-
result.push(key);
|
|
11959
|
-
return '';
|
|
11960
|
-
});
|
|
11961
|
-
return result;
|
|
11962
|
-
};
|
|
11963
|
-
|
|
11964
|
-
// 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
|
|
11965
|
-
function createObject(superProps, props, properties) {
|
|
11966
|
-
if (superProps && Object.isFrozen(superProps)) {
|
|
11967
|
-
superProps = cloneObject(superProps);
|
|
11968
|
-
}
|
|
11969
|
-
var obj = superProps
|
|
11970
|
-
? Object.create(superProps, __assign(__assign({}, properties), { __super: {
|
|
11971
|
-
value: superProps,
|
|
11972
|
-
writable: false,
|
|
11973
|
-
enumerable: false
|
|
11974
|
-
} }))
|
|
11975
|
-
: Object.create(Object.prototype, properties);
|
|
11976
|
-
props &&
|
|
11977
|
-
isObject(props) &&
|
|
11978
|
-
Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
|
|
11979
|
-
return obj;
|
|
11980
|
-
}
|
|
11981
|
-
function cloneObject(target, persistOwnProps) {
|
|
11982
|
-
if (persistOwnProps === void 0) { persistOwnProps = true; }
|
|
11983
|
-
var obj = target && target.__super
|
|
11984
|
-
? Object.create(target.__super, {
|
|
11985
|
-
__super: {
|
|
11986
|
-
value: target.__super,
|
|
11987
|
-
writable: false,
|
|
11988
|
-
enumerable: false
|
|
11989
|
-
}
|
|
11990
|
-
})
|
|
11991
|
-
: Object.create(Object.prototype);
|
|
11992
|
-
persistOwnProps &&
|
|
11993
|
-
target &&
|
|
11994
|
-
Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
|
|
11995
|
-
return obj;
|
|
11996
|
-
}
|
|
11997
|
-
function extendObject(target, src, persistOwnProps) {
|
|
11998
|
-
if (persistOwnProps === void 0) { persistOwnProps = true; }
|
|
11999
|
-
var obj = cloneObject(target, persistOwnProps);
|
|
12000
|
-
src && Object.keys(src).forEach(function (key) { return (obj[key] = src[key]); });
|
|
12001
|
-
return obj;
|
|
12002
|
-
}
|
|
12003
|
-
function isObject(obj) {
|
|
12004
|
-
var typename = typeof obj;
|
|
12005
|
-
return (obj &&
|
|
12006
|
-
typename !== 'string' &&
|
|
12007
|
-
typename !== 'number' &&
|
|
12008
|
-
typename !== 'boolean' &&
|
|
12009
|
-
typename !== 'function' &&
|
|
12010
|
-
!Array.isArray(obj));
|
|
12011
|
-
}
|
|
12012
|
-
function setVariable(data, key, value, convertKeyToPath) {
|
|
12013
|
-
data = data || {};
|
|
12014
|
-
if (key in data) {
|
|
12015
|
-
data[key] = value;
|
|
12016
|
-
return;
|
|
12017
|
-
}
|
|
12018
|
-
var parts = convertKeyToPath !== false ? keyToPath(key) : [key];
|
|
12019
|
-
var last = parts.pop();
|
|
12020
|
-
while (parts.length) {
|
|
12021
|
-
var key_1 = parts.shift();
|
|
12022
|
-
if (isPlainObject(data[key_1])) {
|
|
12023
|
-
data = data[key_1] = __assign({}, data[key_1]);
|
|
12024
|
-
}
|
|
12025
|
-
else if (Array.isArray(data[key_1])) {
|
|
12026
|
-
data[key_1] = data[key_1].concat();
|
|
12027
|
-
data = data[key_1];
|
|
12028
|
-
}
|
|
12029
|
-
else if (data[key_1]) {
|
|
12030
|
-
// throw new Error(`目标路径不是纯对象,不能覆盖`);
|
|
12031
|
-
// 强行转成对象
|
|
12032
|
-
data[key_1] = {};
|
|
12033
|
-
data = data[key_1];
|
|
12034
|
-
}
|
|
12035
|
-
else {
|
|
12036
|
-
data[key_1] = {};
|
|
12037
|
-
data = data[key_1];
|
|
12038
|
-
}
|
|
12039
|
-
}
|
|
12040
|
-
data[last] = value;
|
|
12041
|
-
}
|
|
12042
|
-
function deleteVariable(data, key) {
|
|
12043
|
-
if (!data) {
|
|
12044
|
-
return;
|
|
12045
|
-
}
|
|
12046
|
-
else if (data.hasOwnProperty(key)) {
|
|
12047
|
-
delete data[key];
|
|
12048
|
-
return;
|
|
12049
|
-
}
|
|
12050
|
-
var parts = keyToPath(key);
|
|
12051
|
-
var last = parts.pop();
|
|
12052
|
-
while (parts.length) {
|
|
12053
|
-
var key_2 = parts.shift();
|
|
12054
|
-
if (isPlainObject(data[key_2])) {
|
|
12055
|
-
data = data[key_2] = __assign({}, data[key_2]);
|
|
12056
|
-
}
|
|
12057
|
-
else if (data[key_2]) {
|
|
12058
|
-
throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
|
|
12059
|
-
}
|
|
12060
|
-
else {
|
|
12061
|
-
break;
|
|
12062
|
-
}
|
|
12063
|
-
}
|
|
12064
|
-
if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
|
|
12065
|
-
delete data[last];
|
|
12066
|
-
}
|
|
12067
|
-
}
|
|
12068
|
-
|
|
12069
12104
|
/*
|
|
12070
12105
|
* @Author: baozhoutao@steedos.com
|
|
12071
12106
|
* @Date: 2022-12-17 17:03:40
|