@wibetter/json-utils 1.2.29 → 1.3.2

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/README.md CHANGED
@@ -7,10 +7,12 @@
7
7
 
8
8
  ## json工具集合 / json工具方法清单
9
9
 
10
- ### 7个通用的json工具方法
10
+ ### 8个通用的json工具方法
11
11
  - getJsonDataByKeyRoute([使用示例](https://github.com/wibetter/json-utils/blob/master/docs/getJsonDataByKeyRoute.md)): 根据key值路径获取对应的json数值对象(比如用于获取json数据中'data-user-name'对应的数据)
12
- - getSchemaByIndexRoute([使用示例](https://github.com/wibetter/json-utils/blob/master/docs/getSchemaByIndexRoute.md)): 根据index索引路径获取对应的schema数据对象(比如通过'2-1'获取schema中第3个子对象中的第2个字段对应的数据)
13
- - indexRoute2keyRoute([使用示例](https://github.com/wibetter/json-utils/blob/master/docs/indexRoute2keyRoute.md)): 根据index索引路径转换对应的key值路径
12
+ - getSchemaByIndexRoute([使用示例](https://github.com/wibetter/json-utils/blob/master/docs/getSchemaByIndexRoute.md)): schema工具方法,根据index索引路径获取对应的schema数据对象(比如通过'2-1'获取schema中第3个子对象中的第2个字段对应的数据)
13
+ - getSchemaByKeyRoute: schema工具方法,根据key路径获取对应的schema数据对象(比如通过'style-padding'获取schema数据)
14
+ - indexRoute2keyRoute([使用示例](https://github.com/wibetter/json-utils/blob/master/docs/indexRoute2keyRoute.md)): schema工具方法,根据index索引路径转换对应的key值路径
15
+ - keyRoute2indexRoute:schema工具方法,根据key值路径获取对应的index索引路径
14
16
  - json2schema([使用示例](https://github.com/wibetter/json-utils/blob/master/docs/json2schema.md)): 根据json数据内容生成对应的schema数据
15
17
  - schema2json([使用示例](https://github.com/wibetter/json-utils/blob/master/docs/schema2json.md)): 根据schema结构数据生成一份对应的json数据内容
16
18
  - json2treeData([使用示例](https://github.com/wibetter/json-utils/blob/master/docs/json2treeData.md)): 根据当前的json生成对应的treeData(供antd的TreeSelect等使用)
package/dist/index.esm.js CHANGED
@@ -99,6 +99,38 @@ function getSchemaByIndexRoute(indexRoute, targetJsonSchemaObj, useObjClone) {
99
99
  return curJsonSchemaObj;
100
100
  }
101
101
 
102
+ /**
103
+ * getSchemaByKeyRoute: 根据key值路径获取对应的schema数据
104
+ * 【方法参数说明】
105
+ * keyRoute: key值路径
106
+ * targetJsonSchemaObj: schema数据对象
107
+ * useObjClone: 是否进行深拷贝,避免影响原有数据。(默认不进行深拷贝)
108
+ */
109
+
110
+ function getSchemaByKeyRoute(keyRoute, targetJsonSchemaObj, useObjClone) {
111
+ var curJsonSchemaObj = targetJsonSchemaObj;
112
+
113
+ if (useObjClone) {
114
+ curJsonSchemaObj = objClone(targetJsonSchemaObj); // 进行深拷贝,避免影响原有数据
115
+ }
116
+
117
+ if (keyRoute && curJsonSchemaObj) {
118
+ var keyRouteArr = keyRoute.split('-');
119
+
120
+ for (var index = 0, size = keyRouteArr.length; index < size; index++) {
121
+ // 获取指定路径的json数据对象,需要按以下步骤(备注:确保是符合规则的json格式数据)
122
+ var curKey = keyRouteArr[index];
123
+
124
+ if (curKey && curJsonSchemaObj.properties) {
125
+ // 根据key值获取对应的json数据对象
126
+ curJsonSchemaObj = curJsonSchemaObj.properties[curKey];
127
+ }
128
+ }
129
+ }
130
+
131
+ return curJsonSchemaObj;
132
+ }
133
+
102
134
  /**
103
135
  * indexRoute2keyRoute:根据index索引路径获取对应的key值路径
104
136
  * 【方法参数说明】
@@ -140,6 +172,47 @@ function indexRoute2keyRoute(indexRoute, targetJsonSchemaObj) {
140
172
  return curKeyRoute;
141
173
  }
142
174
 
175
+ /**
176
+ * keyRoute2indexRoute:根据key值路径获取对应的index索引路径
177
+ * 【方法参数说明】
178
+ * keyRoute: key值路径
179
+ * targetJsonSchemaObj: schema数据对象
180
+ * */
181
+ function keyRoute2indexRoute(keyRoute, targetJsonSchemaObj) {
182
+ var curJsonSchemaObj = targetJsonSchemaObj;
183
+ var curIndexRoute = '';
184
+ var keyRouteArr = keyRoute.split('-');
185
+
186
+ for (var index = 0, size = keyRouteArr.length; index < size; index++) {
187
+ var curKey = keyRouteArr[index];
188
+
189
+ if (curKey) {
190
+ // 1、先根据路径值获取key值
191
+ var curIndex = -1; // 1、先根据路径值获取key值
192
+
193
+ if (curJsonSchemaObj.propertyOrder) {
194
+ curIndex = curJsonSchemaObj.propertyOrder.indexOf(curKey); // 2、根据key值获取对应的json数据对象
195
+
196
+ curJsonSchemaObj = curJsonSchemaObj.properties[curKey]; // 对象类型数据引用
197
+ } else if (curJsonSchemaObj.properties) {
198
+ var propertyOrder = Object.keys(curJsonSchemaObj.properties);
199
+ curIndex = propertyOrder.indexOf(curKey); // 2、根据key值获取对应的json数据对象
200
+
201
+ curJsonSchemaObj = curJsonSchemaObj.properties[curKey]; // 对象类型数据引用
202
+ } else if (curJsonSchemaObj.items) {
203
+ // 兼容数组类型
204
+ curIndex = 0; // curKey;
205
+
206
+ curJsonSchemaObj = curJsonSchemaObj.items; // 对象类型数据引用
207
+ }
208
+
209
+ curIndexRoute = curIndexRoute ? curIndexRoute + "-" + curIndex : curIndex.toString();
210
+ }
211
+ }
212
+
213
+ return curIndexRoute;
214
+ }
215
+
143
216
  /** 新版JSONSchema一级字段项
144
217
  * 【字段属性说明】
145
218
  * type:用于标识字段项的基本数据类型(object、array、string、boolean、number)
@@ -1583,14 +1656,14 @@ function isBoxSchemaData(format) {
1583
1656
  return isBoxSchema;
1584
1657
  }
1585
1658
  /** 根据format判断是否是一级类型字段
1586
- * 一级类型字段:func、style、data
1659
+ * 一级类型字段:func、style、data、props、event-schema、widgets
1587
1660
  * 备注:一级类型字段不允许拖拽和复制
1588
1661
  * */
1589
1662
 
1590
1663
  function isFirstSchemaData(format) {
1591
1664
  var isFirstSchema = false;
1592
1665
 
1593
- if (format === 'func' || format === 'style' || format === 'data' || format === 'event-schema' || format === 'widgets') {
1666
+ if (format === 'func' || format === 'style' || format === 'data' || format === 'props' || format === 'event-schema' || format === 'widgets') {
1594
1667
  isFirstSchema = true;
1595
1668
  }
1596
1669
 
@@ -1735,7 +1808,7 @@ function moveBackward(curIndexRoute) {
1735
1808
  * Object类型的schema元数据分析
1736
1809
  * */
1737
1810
 
1738
- function objectSchema2JsonData(jsonSchema, analyzerResult) {
1811
+ function objectSchema2JsonData$1(jsonSchema, analyzerResult) {
1739
1812
  var curAnalyzerResult = analyzerResult || {};
1740
1813
 
1741
1814
  if (isObject(jsonSchema) && jsonSchema.type === 'object' && jsonSchema.properties) {
@@ -1774,7 +1847,7 @@ function metaElemAnalyzer(curJsonSchemaObj, analyzerResult) {
1774
1847
  curAnalyzerResult['object'] = 1;
1775
1848
  }
1776
1849
 
1777
- curAnalyzerResult = objectSchema2JsonData(curJsonSchemaObj, curAnalyzerResult);
1850
+ curAnalyzerResult = objectSchema2JsonData$1(curJsonSchemaObj, curAnalyzerResult);
1778
1851
  } else if (curFormat === 'array') {
1779
1852
  // 最外层的schema类型不进行统计
1780
1853
  if (!isFirstAnalyzer && curAnalyzerResult['array']) {
@@ -1784,7 +1857,7 @@ function metaElemAnalyzer(curJsonSchemaObj, analyzerResult) {
1784
1857
  }
1785
1858
 
1786
1859
  curJsonSchemaObj = curJsonSchemaObj.items;
1787
- curAnalyzerResult = objectSchema2JsonData(curJsonSchemaObj, curAnalyzerResult);
1860
+ curAnalyzerResult = objectSchema2JsonData$1(curJsonSchemaObj, curAnalyzerResult);
1788
1861
  } else {
1789
1862
  if (!isFirstAnalyzer && curAnalyzerResult[curFormat]) {
1790
1863
  curAnalyzerResult[curFormat] += 1;
@@ -2014,7 +2087,7 @@ function baseSchema2JsonData(jsonSchema, jsonData) {
2014
2087
  * */
2015
2088
 
2016
2089
 
2017
- function objectSchema2JsonData$1(jsonSchema, jsonData) {
2090
+ function objectSchema2JsonData(jsonSchema, jsonData) {
2018
2091
  var curJsonData = {};
2019
2092
  var curType = getCurrentFormat(jsonSchema);
2020
2093
 
@@ -2149,7 +2222,7 @@ function objectSchema2JsonData$1(jsonSchema, jsonData) {
2149
2222
 
2150
2223
  case 'object':
2151
2224
  // 普通对象类型
2152
- curJsonData[jsonKey] = objectSchema2JsonData$1(curJsonItem, curOldValue);
2225
+ curJsonData[jsonKey] = objectSchema2JsonData(curJsonItem, curOldValue);
2153
2226
  break;
2154
2227
 
2155
2228
  default:
@@ -2188,10 +2261,10 @@ function arraySchema2JsonData(jsonSchema, jsonData) {
2188
2261
  if (jsonSchema.format === 'array') {
2189
2262
  if (isArray(curValue)) {
2190
2263
  curValue.map(function (arrItem) {
2191
- curJsonData.push(objectSchema2JsonData$1(jsonSchema.items, arrItem));
2264
+ curJsonData.push(objectSchema2JsonData(jsonSchema.items, arrItem));
2192
2265
  });
2193
2266
  } else {
2194
- var childItems = objectSchema2JsonData$1(jsonSchema.items, curValue);
2267
+ var childItems = objectSchema2JsonData(jsonSchema.items, curValue);
2195
2268
  curJsonData.push(childItems);
2196
2269
  }
2197
2270
  } else {
@@ -2212,7 +2285,7 @@ function schema2json(jsonSchema, jsonData) {
2212
2285
  var curJsonData = {};
2213
2286
 
2214
2287
  if (jsonSchema.type === 'object') {
2215
- curJsonData = objectSchema2JsonData$1(jsonSchema, jsonData);
2288
+ curJsonData = objectSchema2JsonData(jsonSchema, jsonData);
2216
2289
  } else if (jsonSchema.type === 'array') {
2217
2290
  curJsonData = arraySchema2JsonData(jsonSchema, jsonData);
2218
2291
  } else {
@@ -2463,4 +2536,4 @@ function getParentKeyRoute_CurKey(curKeyRoute) {
2463
2536
  // JSONSchema关键字清单
2464
2537
  var KeyWordList = ['key', 'enum', 'enumextra', 'items', 'input', 'boolean', 'number', 'color', 'url', 'textarea', 'text-editor', 'radio', 'single-select', 'select', 'date', 'date-time', 'time', 'json', 'codearea', 'htmlarea', 'quantity', 'box-style', 'dynamic-data', 'datasource', 'event', 'array', 'object', 'widget', 'widgets', 'widgetUUID', 'embedWidgetList'];
2465
2538
 
2466
- export { DataSourceTypeList, EventTypeDataList, KeyWordList, TypeDataList, dataRoute2dataPath, dynamicDataAnalyzer, exitPropertie, getCurPosition, getCurrentFormat, getJsonDataByKeyRoute, getNextIndexRoute, getParentIndexRoute, getParentIndexRoute_CurIndex, getParentKeyRoute, getParentKeyRoute_CurKey, getSchemaByIndexRoute, indexRoute2keyRoute, isArray, isBoolean, isBoxSchemaData, isColor, isDateStr, isDateTimeStr, isEmptySchema, isEmptyWidgetSchema, isEqual, isFirstSchemaData, isFunction, isNewSchemaData, isNumber, isObject, isQuantity, isSameParent, isSelect, isString, isStructuredSchema, isTimeStr, isURL, isUsedToWidgetConfig, json2schema, json2treeData, metaElemAnalyzer, moveBackward, moveForward, objClone, oldSchemaToNewSchema, schema2json, schemaMetaList };
2539
+ export { DataSourceTypeList, EventTypeDataList, KeyWordList, TypeDataList, dataRoute2dataPath, dynamicDataAnalyzer, exitPropertie, getCurPosition, getCurrentFormat, getJsonDataByKeyRoute, getNextIndexRoute, getParentIndexRoute, getParentIndexRoute_CurIndex, getParentKeyRoute, getParentKeyRoute_CurKey, getSchemaByIndexRoute, getSchemaByKeyRoute, indexRoute2keyRoute, isArray, isBoolean, isBoxSchemaData, isColor, isDateStr, isDateTimeStr, isEmptySchema, isEmptyWidgetSchema, isEqual, isFirstSchemaData, isFunction, isNewSchemaData, isNumber, isObject, isQuantity, isSameParent, isSelect, isString, isStructuredSchema, isTimeStr, isURL, isUsedToWidgetConfig, json2schema, json2treeData, keyRoute2indexRoute, metaElemAnalyzer, moveBackward, moveForward, objClone, oldSchemaToNewSchema, schema2json, schemaMetaList };
@@ -1 +1 @@
1
- function e(e){var t=JSON.stringify(e);return JSON.parse(t)}function t(e,t){return JSON.stringify(e)===JSON.stringify(t)}function r(e){var t=!1;return null!=e&&(t=!0),t}function i(t,r,i){var a=r;if(i&&(a=e(r)),t)for(var n=t.split("-"),o=0,p=n.length;o<p;o++){var l=n[o];l&&(a=a&&a[l])}return a}function a(t,r,i){var a=r;if(i&&(a=e(r)),t)for(var n=t.split("-"),o=0,p=n.length;o<p;o++){var l=n[o];if("0"!==l||"array"!==a.format&&"radio"!==a.format&&"single-select"!==a.format&&"select"!==a.format||!a.items){if(l){var d="0";if(a.propertyOrder)d=a.propertyOrder[l];else if(a.properties){d=Object.keys(a.properties)[l]}a=a.properties[d]}}else a=a.items}return a}function n(e,t){for(var r=t,i="",a=e.split("-"),n=0,o=a.length;n<o;n++){var p=a[n];if("0"===p&&r.items)r=r.items,i=i?i+"-items":"items";else if(p){var l="0";if(r.propertyOrder)l=r.propertyOrder[p];else if(r.properties){l=Object.keys(r.properties)[p]}r=r.properties[l],i=i?i+"-"+l:l}}return i}var o={type:"object",format:"event",title:"事件",isRequired:!1,readOnly:!1,properties:{type:{type:"string",default:"emit",format:"typeSelect",enum:["on","emit"],enumextra:["on","emit"],title:"事件类型",isRequired:!1,readOnly:!1},trigger:{type:"string",format:"input",default:"eventName",title:"触发事件",description:"用于输入触发事件的名称",placeholder:"请输入触发事件的名称",isRequired:!1,readOnly:!1},eventData:{type:"string",title:"事件数据",format:"json",default:"{}",description:"传递给触发事件的数据对象",isRequired:!1,readOnly:!1}},required:["type","trigger","eventData"],propertyOrder:["type","trigger","eventData"]},p={type:"object",format:"datasource",title:"数据源",readOnly:!1,properties:{type:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["local","remote"],title:"数据源类型"},data:{type:"string",title:"本地json数据",placeholder:"请输入静态json数据",format:"json",default:"{}",description:"用于设置本地的静态json数据",isRequired:!0},filter:{type:"string",title:"过滤器",format:"codearea",default:"() => {}",description:"用于定义过滤当前数据的函数",isRequired:!0}},required:["type","data","filter"],propertyOrder:["type","data","filter"]},l={type:"local",config:{dataName:"",body:{},filter:"return data;"},data:"{}",localFilter:"return data;"},d={jsonschema:{type:"object",title:"jsonSchemaObject",properties:{func:{type:"object",format:"func",title:"功能设置",readOnly:!0,properties:{a:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["a"],propertyOrder:["a"]},style:{type:"object",format:"style",title:"样式设置",readOnly:!0,properties:{b:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["b"],propertyOrder:["b"]},data:{type:"object",format:"data",title:"数据设置",readOnly:!0,properties:{c:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["c"],propertyOrder:["c"]}},required:["func","style","data"],propertyOrder:["func","style","data"]},input:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},boolean:{type:"boolean",title:"布尔值",format:"boolean",default:!1,description:"",isRequired:!1,readOnly:!1},object:{type:"object",format:"object",title:"对象Object",description:"",isRequired:!1,readOnly:!1,properties:{a:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["a"],propertyOrder:["a"]},array:{type:"array",format:"array",title:"数组Array",description:"",isRequired:!1,readOnly:!1,items:{type:"object",format:"object",title:"数组项",description:"",isRequired:!1,readOnly:!1,properties:{name:{type:"string",format:"input",title:"名字",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["name"],propertyOrder:["name"]}},"empty-array":{type:"array",format:"array",title:"数组Array",description:"",items:{type:"object",format:"object",title:"数组项",description:"",properties:{}}},"empty-object":{type:"object",format:"object",title:"对象Object",description:"",properties:{}},url:{type:"string",title:"链接地址url",format:"url",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},textarea:{type:"string",title:"多行文本框",format:"textarea",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},color:{type:"string",title:"颜色color",format:"color",default:"#ffffff",description:"",isRequired:!1,readOnly:!1},image:{type:"string",title:"图片",format:"image",default:"",description:"上传图片",imgWidth:200,imgHeight:200,imgRatioReadOnly:!0,templateId:"",isRequired:!1},number:{type:"number",title:"数量number",format:"number",default:1,minimum:0,maximum:1e3,description:"",isRequired:!1,readOnly:!1},json:{type:"string",title:"json数据",format:"json",default:"{}",description:"",isRequired:!1,readOnly:!1},codearea:{type:"string",title:"函数类型",format:"codearea",placeholder:"请输入函数方法",default:'function func() { console.log("hello, world!"); }',description:"用于定义函数方法",isRequired:!1,readOnly:!1},htmlarea:{type:"string",title:"富文本",format:"htmlarea",placeholder:"请输入html代码片段",default:"<p>hello,world!</p>",description:"用于放置html代码片段",isRequired:!1,readOnly:!1},"text-editor":{type:"string",title:"富文本",format:"text-editor",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},date:{type:"string",title:"日期Date",format:"date",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},"date-time":{type:"string",title:"日期时间",format:"date-time",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},time:{type:"string",title:"时间Time",format:"time",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},quantity:{type:"object",format:"quantity",title:"单位计量",isRequired:!1,readOnly:!1,properties:{unit:{type:"number",title:"单位数值",format:"number",default:50,minimum:0,maximum:1e3,description:"",isRequired:!1,readOnly:!1},quantity:{type:"string",format:"typeSelect",default:"px",enum:["px","rem","em","%"],enumextra:["px","rem","em","%"],title:"单位类型",isRequired:!1,readOnly:!1}},required:["unit","quantity"],propertyOrder:["unit","quantity"]},"box-style":{type:"object",format:"box-style",title:"盒子模型",isRequired:!1,readOnly:!1,properties:{unit:{type:"string",title:"单位数值",format:"string",default:"0",description:"",isRequired:!1,readOnly:!1},quantity:{type:"string",format:"typeSelect",default:"px",enum:["px","rem","em","%"],enumextra:["px","rem","em","%"],title:"单位类型",isRequired:!1,readOnly:!1}},required:["unit","quantity"],propertyOrder:["unit","quantity"]},radio:{type:"string",title:"单选",format:"radio",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},"single-select":{type:"string",title:"下拉单选",format:"single-select",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},select:{type:"array",title:"多选",format:"select",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},"dynamic-data":{type:"object",format:"dynamic-data",title:"动态数据源",readOnly:!1,properties:{type:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["本地数据","接口数据"],title:"数据类型"},config:{type:"object",title:"接口配置",format:"object",description:"用于存放接口的配置数据(url、请求参数等)",isRequired:!0,properties:{dataName:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["本地数据","接口数据"],title:"数据类型"},body:{type:"object",title:"请求参数配置",format:"object",description:"用于配置当前接口的请求参数数值",isRequired:!0},filter:{type:"string",title:"过滤器函数体",format:"codearea",default:"return data;",description:"用于定义过滤接口数据",isRequired:!0}},required:["dataName","body","filter"],propertyOrder:["dataName","body","filter"]},data:{type:"string",title:"数据内容",format:"json",default:"{}",description:"用于存放DynamicData的数据内容",isRequired:!0},localFilter:{type:"string",title:"过滤器",format:"codearea",default:"return data;",description:"用于定义过滤本地数据",isRequired:!0}},required:["type","config","data","localFilter"],propertyOrder:["type","config","data","localFilter"]},datasource:p,event:o,widget:{type:"string",title:"内嵌组件数据",format:"widget",default:"{}",description:"用于存放内嵌组件的渲染相关数据",isRequired:!1,readOnly:!0}},u={on:{type:"object",format:"event",title:"事件",isRequired:!1,readOnly:!1,properties:{type:{type:"string",default:"on",format:"typeSelect",enum:["on","emit"],enumextra:["on","emit"],title:"事件类型",isRequired:!1,readOnly:!1},register:{type:"string",format:"input",default:"eventName",title:"注册事件",description:"用于输入注册事件的名称",placeholder:"请输入注册事件的名称",isRequired:!1,readOnly:!1},actionFunc:{type:"string",title:"执行函数",format:"codearea",default:"() => {}",description:"",isRequired:!1,readOnly:!1}},required:["type","register","actionFunc"],propertyOrder:["type","register","actionFunc"]},emit:o},s={local:p,remote:{type:"object",format:"datasource",title:"数据源",readOnly:!1,properties:{type:{type:"string",default:"remote",format:"typeSelect",enum:["local","remote"],enumextra:["local","remote"],title:"数据源类型"},data:{type:"string",title:"远程json数据",placeholder:"请输入远程json数据源地址",format:"url",default:"http://xxx",isRequired:!0,description:"用于设置获取元素数据的请求地址"},filter:{type:"string",title:"过滤器",format:"codearea",default:"() => {}",description:"用于定义过滤当前数据的函数",isRequired:!0}},required:["type","data","filter"],propertyOrder:["type","data","filter"]}};function f(e){return/^http[s]?:\/\/.*/.test(e)}function c(e){return"String"===Object.prototype.toString.call(e).slice(8,-1)}function y(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function m(e){return"Boolean"===Object.prototype.toString.call(e).slice(8,-1)}function g(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)}function O(e){return/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/.test(e)||/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/.test(e)}function b(e){return/^\d{2}:\d{2}:\d{2}$/.test(e)||/^\d{2}:\d{2}$/.test(e)}function v(e){var t=!1;return"Array"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function j(e){if(!v(e))return!1;for(var t=0,r=e.length;t<r;t++){if(!c(e[t]))return!1}return!0}function q(e){var t=!1;return"Object"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function h(e){var t=!1;return d.quantity.properties.quantity.enum.indexOf(e)>=0&&(t=!0),t}function x(e){return/^#[0-9a-f]{6}$/.test(e)||/^#[0-9a-f]{3}$/.test(e)}function R(e){var t=!1;return"Function"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function N(t){return t&&q(t)?function(t){var r;if(q(t)){var i=Object.keys(t);t.data&&t.filter&&2===i.length?r=v(t.data)||q(t.data)?e(s.local):e(s.remote):t.trigger&&t.eventData&&2===i.length?r=e(u.emit):t.register&&t.actionFunc&&2===i.length?r=e(u.on):t.quantity&&h(t.quantity)&&2===i.length?r=e(d.quantity):(r=e(d["empty-object"]),Object.keys(t).map((function(e){var i=t[e];r.properties[e]=N(i)})))}return r}(t):t&&v(t)?function(t){var r;if(t&&v(t))if(j(t)){(r=e(d.select)).items.enum=t;var i=r.items.enumextra.length,a=t.length;if(a>i)for(var n=i,o=a;n<o;n++)r.items.enumextra.push("选项"+t(n))}else{r=e(d["empty-array"]);var p=N(t[0]);r.items.properties=p.properties}return r}(t):function(t){var r="";if(m(t))r=e(d.boolean);else if(y(t))r=e(d.number);else if(f(t))r=e(d.url);else if(g(t))r=e(d.date);else if(O(t))r=e(d["date-time"]);else if(b(t))r=e(d.time);else if(x(t))r=e(d.color);else try{r=y(JSON.parse(t))?e(d.input):e(d.json)}catch(i){r=t&&t.length>30?e(d.textarea):e(d.input)}return r}(t)}function S(e){var t=e&&e.format;return t||(t=e&&e.type?e.type:"input"),t}function F(e){var t=!0;if(!e)return t;var r=S(e);return("object"===r&&e.properties&&e.propertyOrder&&e.propertyOrder.length>0||"array"===r&&e.items&&e.items.properties&&e.items.propertyOrder&&e.items.propertyOrder.length>0||e.type&&"array"!==e.type&&"object"!==e.type||e.format)&&(t=!1),t}function k(e){var t=!0;if(e&&("object"===S(e)&&e.properties&&e.propertyOrder&&e.propertyOrder.length>0)){var r=e.properties.func||{},i=e.properties.style||{},a=e.properties.data||{};(r.propertyOrder&&r.propertyOrder.length>0||i.propertyOrder&&i.propertyOrder.length>0||a.propertyOrder&&a.propertyOrder.length>0)&&(t=!1)}return t}function D(e){var t=!1;e&&("object"===S(e)&&e.properties&&e.propertyOrder&&e.properties.func&&e.properties.style&&e.properties.data&&(t=!0));return t}function w(e){var t=!1,r=e.lastUpdateTime,i=new Date("2020-07-29T07:30:00.691Z").getTime();return r&&new Date(r).getTime()>=i&&(t=!0),t}function J(e){var t=!1;return"object"!==e&&"func"!==e&&"style"!==e&&"data"!==e&&"widgets"!==e&&"func-schema"!==e&&"style-schema"!==e&&"data-schema"!==e&&"event-schema"!==e&&"widgets-schema"!==e||(t=!0),t}function $(e){var t=!1;return"func"!==e&&"style"!==e&&"data"!==e&&"event-schema"!==e&&"widgets"!==e||(t=!0),t}function T(e){var t=!0;return"object"===(e.type||S(e))&&e.propertyOrder&&e.properties?e.propertyOrder.map((function(r){var i=e.properties[r];"object"===(e.type||S(i))&&i.propertyOrder&&i.properties||(t=!1)})):t=!1,t}function A(e,t){var r=e.split("-"),i=t.split("-");return r.pop(),i.pop(),r.join("-")===i.join("-")}function U(e,t){for(var r=e.split("-"),i=t.split("-"),a="before",n=0,o=(r.length>i.length?i:r).length;n<o;n+=1){Number(r[n])>Number(i[n])&&(a="after")}return a}function I(e){var t=e.split("-");return t.pop(),t.join("-")}function W(e){var t=e.split("-"),r=t.pop(),i=Number(r)+1;return t.push(""+i),t.join("-")}function B(e){var t=e.split("-"),r=t.pop();return[t.join("-"),r]}function H(e){var t=e.split("-"),r=t.pop();return t.push(Number(r)-1),t.join("-")}function L(e){var t=e.split("-"),r=t.pop();return t.push(Number(r)+1),t.join("-")}function Z(e,t){var r=t||{};if(q(e)&&"object"===e.type&&e.properties){(e.propertyOrder?e.propertyOrder:Object.keys(e.properties)).map((function(t){var i=e.properties[t];r=z(i,r)}))}return r}function z(e,t){var r=!t,i=t||{};if(e&&"{}"!==JSON.stringify(e)){var a=S(e);"object"===a||"func"===a||"style"===a||"data"===a?(!r&&i.object?i.object+=1:r||(i.object=1),i=Z(e,i)):"array"===a?(!r&&i.array?i.array+=1:r||(i.array=1),i=Z(e=e.items,i)):!r&&i[a]?i[a]+=1:r||(i[a]=1)}return i}function C(t){var i=e(t);if(!i.title&&i.description&&(i.title=i.description),i.format||(i.format=S(i)),"quantity"!==i.format&&"array"!==i.format&&"datasource"!==i.format&&"event"!==i.format&&"object"!==i.format&&"radio"!==i.format&&"select"!==i.format||!r(i.default)||delete i.default,"radio"===i.format&&(i.type="string",i.enum&&i.enumextra&&(i.items={type:"string",enum:e(i.enum),enumextra:e(i.enumextra)},delete i.enum,delete i.enumextra)),"quantity"===i.format){var a=i.properties,n=e(d.quantity);if(a.quantity&&q(a.quantity)&&a.quantity.default){var o=a.quantity.default;n.properties.quantity.default="percent"===o?"%":o}i=n}if("datasource"===i.format){var p=i.properties,l=p.type&&p.type.default,f=p.data&&p.data.default,c=p.filter&&p.filter.default;"local"===l?(i=e(s.local)).properties.data.default=f?e(f):"{}":(i=e(s.remote)).properties.data.default=f?e(f):"http://xxx",i.properties.filter.default=c?e(c):"() => {}"}if("event"===i.format){var y=i.properties,m=y.type&&y.type.default;if("in"===m||"on"===m){var g=y.filter&&y.filter.default||"() => {}";i=e(u.on),y.actionFunc&&q(y.actionFunc)&&(i.properties.actionFunc.default=y.actionFunc.default||e(g))}else{var O=y.filter&&y.filter.default||"{}";i=e(u.emit),y.eventData&&q(y.eventData)&&(i.properties.eventData.default=y.eventData.default||e(O))}}return i.properties&&(i.required=Object.keys(i.properties),i.propertyOrder||(i.propertyOrder=i.required),i.propertyOrder.map((function(e){i.properties[e]=C(i.properties[e])}))),i.items&&(i.items=C(i.items)),i}function E(e,t){var i="",a=t;r(a)&&r(e.default)&&typeof a!=typeof e.default&&(a=void 0);var n=r(a)?a:e.default;switch(e.type){case"string":if("typeSelect"===e.format)i=e.default;else if("color"===e.format)"#fff"!==n&&"#FFF"!==n||(n="#ffffff"),i=n||"#ffffff";else if("json"===e.format||"widget"===e.format){var o="";if(q(t)||v(t))o=t;else if(R(t)||""===t)o={};else try{o=JSON.parse(t)}catch(e){o={}}i=o}else i=r(n)?n:"";break;case"boolean":i=!!r(n)&&n;break;case"number":i=r(n)?n:1;break;default:i=r(n)?n:""}return i}function G(t,i){var a={},n=S(t);if(q(t)&&"object"===t.type){var o=t,p=i;r(p)&&r(o.default)&&typeof p!=typeof o.default&&(p=void 0);var d=r(p)?p:o.default;if("dynamic-data"===n)a=e(l),d&&q(d)&&"{}"!==JSON.stringify(d)&&(a=Object.assign(a,d));else if("datasource"===n)o.properties&&o.properties.type&&o.properties.type.default&&"local"===o.properties.type.default?(a={data:"{}",filter:"() => {}"},d&&d.data&&(a.data=d.data),d&&d.filter&&(a.filter=d.filter),"http://xxx"===a.data&&(a.data="{}")):(a={data:"http://xxx",filter:"() => {}"},d&&d.data&&(a.data=d.data),d&&d.filter&&(a.filter=d.filter),"{}"===a.data&&(a.data="http://xxx"));else if("event"===n)o.properties&&o.properties.type&&o.properties.type.default&&"emit"===o.properties.type.default?d&&"out"===d.type?a={trigger:d&&d.filter||"eventName",eventData:"{}"}:(a={trigger:"eventName",eventData:"{}"},d&&d.trigger&&(a.trigger=d.trigger),d&&d.eventData&&(a.eventData=d.eventData)):d&&"in"===d.type?a={register:"eventName",actionFunc:d&&d.filter||"() => {}"}:(a={register:"eventName",actionFunc:"() => {}"},d&&d.register&&(a.register=d.register),d&&d.actionFunc&&(a.actionFunc=d.actionFunc));else if(t.properties){(t.propertyOrder?t.propertyOrder:Object.keys(t.properties)).map((function(e){var r=t.properties[e],n=i&&i[e];switch(r.type){case"array":a[e]=K(r,n);break;case"object":a[e]=G(r,n);break;default:a[e]=E(r,n)}}))}}return a}function K(e,t){var i=[];if(e&&"array"===e.type){var a=t;r(a)&&r(e.default)&&typeof a!=typeof e.default&&(a=void 0);var n=r(a)?a:e.default;if("array"===e.format)if(v(n))n.map((function(t){i.push(G(e.items,t))}));else{var o=G(e.items,n);i.push(o)}else i=r(n)?n:[]}return i}function M(e,t){return"object"===e.type?G(e,t):"array"===e.type?K(e,t):E(e,t)}var P=d;function Q(e,t){var i=t||[];if(e&&"{}"!==JSON.stringify(e))if(q(e))if(e.type&&"remote"===e.type&&e.config&&q(e.config)&&e.config.dataName&&r(e.localFilter)&&r(e.data)){var a=e.config.body;if(a&&!q(a))try{a=JSON.parse(a)}catch(e){a={}}i.push({id:e.config.id,dataName:e.config.dataName,body:a})}else{Object.keys(e).map((function(t){Q(e[t],i)}))}else v(e)&&e.map((function(e){Q(e,i)}));return i}function V(e,t){var r=t||"data";return e.split("-").map((function(e){r=/^\d+$/.test(e)?r+"["+e+"]":r+"."+e})),r}function X(e,t){var r=[];q(e)?Object.keys(e).map((function(i){var a=e[i],n=t?t+"-"+i:i;q(a)||v(a)?r.push({title:i,value:n,key:n,children:X(a,n)}):r.push({title:i,value:n,key:n})})):v(e)&&e.map((function(e,i){var a=i.toString(),n=t?t+"-"+i:a;q(e)||v(e)?r.push({title:a,value:n,key:n,children:X(e,n)}):r.push({title:a,value:n,key:n})}));return r}function Y(e){var t=e.split("-");return t.pop(),t.join("-")}function _(e){var t=e.split("-"),r=t.pop();return[t.join("-"),r]}var ee=["key","enum","enumextra","items","input","boolean","number","color","url","textarea","text-editor","radio","single-select","select","date","date-time","time","json","codearea","htmlarea","quantity","box-style","dynamic-data","datasource","event","array","object","widget","widgets","widgetUUID","embedWidgetList"];export{s as DataSourceTypeList,u as EventTypeDataList,ee as KeyWordList,d as TypeDataList,V as dataRoute2dataPath,Q as dynamicDataAnalyzer,r as exitPropertie,U as getCurPosition,S as getCurrentFormat,i as getJsonDataByKeyRoute,W as getNextIndexRoute,I as getParentIndexRoute,B as getParentIndexRoute_CurIndex,Y as getParentKeyRoute,_ as getParentKeyRoute_CurKey,a as getSchemaByIndexRoute,n as indexRoute2keyRoute,v as isArray,m as isBoolean,J as isBoxSchemaData,x as isColor,g as isDateStr,O as isDateTimeStr,F as isEmptySchema,k as isEmptyWidgetSchema,t as isEqual,$ as isFirstSchemaData,R as isFunction,w as isNewSchemaData,y as isNumber,q as isObject,h as isQuantity,A as isSameParent,j as isSelect,c as isString,T as isStructuredSchema,b as isTimeStr,f as isURL,D as isUsedToWidgetConfig,N as json2schema,X as json2treeData,z as metaElemAnalyzer,L as moveBackward,H as moveForward,e as objClone,C as oldSchemaToNewSchema,M as schema2json,P as schemaMetaList};
1
+ function e(e){var t=JSON.stringify(e);return JSON.parse(t)}function t(e,t){return JSON.stringify(e)===JSON.stringify(t)}function r(e){var t=!1;return null!=e&&(t=!0),t}function i(t,r,i){var a=r;if(i&&(a=e(r)),t)for(var n=t.split("-"),o=0,p=n.length;o<p;o++){var l=n[o];l&&(a=a&&a[l])}return a}function a(t,r,i){var a=r;if(i&&(a=e(r)),t)for(var n=t.split("-"),o=0,p=n.length;o<p;o++){var l=n[o];if("0"!==l||"array"!==a.format&&"radio"!==a.format&&"single-select"!==a.format&&"select"!==a.format||!a.items){if(l){var d="0";if(a.propertyOrder)d=a.propertyOrder[l];else if(a.properties){d=Object.keys(a.properties)[l]}a=a.properties[d]}}else a=a.items}return a}function n(t,r,i){var a=r;if(i&&(a=e(r)),t&&a)for(var n=t.split("-"),o=0,p=n.length;o<p;o++){var l=n[o];l&&a.properties&&(a=a.properties[l])}return a}function o(e,t){for(var r=t,i="",a=e.split("-"),n=0,o=a.length;n<o;n++){var p=a[n];if("0"===p&&r.items)r=r.items,i=i?i+"-items":"items";else if(p){var l="0";if(r.propertyOrder)l=r.propertyOrder[p];else if(r.properties){l=Object.keys(r.properties)[p]}r=r.properties[l],i=i?i+"-"+l:l}}return i}function p(e,t){for(var r=t,i="",a=e.split("-"),n=0,o=a.length;n<o;n++){var p=a[n];if(p){var l=-1;if(r.propertyOrder)l=r.propertyOrder.indexOf(p),r=r.properties[p];else if(r.properties){l=Object.keys(r.properties).indexOf(p),r=r.properties[p]}else r.items&&(l=0,r=r.items);i=i?i+"-"+l:l.toString()}}return i}var l={type:"object",format:"event",title:"事件",isRequired:!1,readOnly:!1,properties:{type:{type:"string",default:"emit",format:"typeSelect",enum:["on","emit"],enumextra:["on","emit"],title:"事件类型",isRequired:!1,readOnly:!1},trigger:{type:"string",format:"input",default:"eventName",title:"触发事件",description:"用于输入触发事件的名称",placeholder:"请输入触发事件的名称",isRequired:!1,readOnly:!1},eventData:{type:"string",title:"事件数据",format:"json",default:"{}",description:"传递给触发事件的数据对象",isRequired:!1,readOnly:!1}},required:["type","trigger","eventData"],propertyOrder:["type","trigger","eventData"]},d={type:"object",format:"datasource",title:"数据源",readOnly:!1,properties:{type:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["local","remote"],title:"数据源类型"},data:{type:"string",title:"本地json数据",placeholder:"请输入静态json数据",format:"json",default:"{}",description:"用于设置本地的静态json数据",isRequired:!0},filter:{type:"string",title:"过滤器",format:"codearea",default:"() => {}",description:"用于定义过滤当前数据的函数",isRequired:!0}},required:["type","data","filter"],propertyOrder:["type","data","filter"]},s={type:"local",config:{dataName:"",body:{},filter:"return data;"},data:"{}",localFilter:"return data;"},u={jsonschema:{type:"object",title:"jsonSchemaObject",properties:{func:{type:"object",format:"func",title:"功能设置",readOnly:!0,properties:{a:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["a"],propertyOrder:["a"]},style:{type:"object",format:"style",title:"样式设置",readOnly:!0,properties:{b:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["b"],propertyOrder:["b"]},data:{type:"object",format:"data",title:"数据设置",readOnly:!0,properties:{c:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["c"],propertyOrder:["c"]}},required:["func","style","data"],propertyOrder:["func","style","data"]},input:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},boolean:{type:"boolean",title:"布尔值",format:"boolean",default:!1,description:"",isRequired:!1,readOnly:!1},object:{type:"object",format:"object",title:"对象Object",description:"",isRequired:!1,readOnly:!1,properties:{a:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["a"],propertyOrder:["a"]},array:{type:"array",format:"array",title:"数组Array",description:"",isRequired:!1,readOnly:!1,items:{type:"object",format:"object",title:"数组项",description:"",isRequired:!1,readOnly:!1,properties:{name:{type:"string",format:"input",title:"名字",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["name"],propertyOrder:["name"]}},"empty-array":{type:"array",format:"array",title:"数组Array",description:"",items:{type:"object",format:"object",title:"数组项",description:"",properties:{}}},"empty-object":{type:"object",format:"object",title:"对象Object",description:"",properties:{}},url:{type:"string",title:"链接地址url",format:"url",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},textarea:{type:"string",title:"多行文本框",format:"textarea",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},color:{type:"string",title:"颜色color",format:"color",default:"#ffffff",description:"",isRequired:!1,readOnly:!1},image:{type:"string",title:"图片",format:"image",default:"",description:"上传图片",imgWidth:200,imgHeight:200,imgRatioReadOnly:!0,templateId:"",isRequired:!1},number:{type:"number",title:"数量number",format:"number",default:1,minimum:0,maximum:1e3,description:"",isRequired:!1,readOnly:!1},json:{type:"string",title:"json数据",format:"json",default:"{}",description:"",isRequired:!1,readOnly:!1},codearea:{type:"string",title:"函数类型",format:"codearea",placeholder:"请输入函数方法",default:'function func() { console.log("hello, world!"); }',description:"用于定义函数方法",isRequired:!1,readOnly:!1},htmlarea:{type:"string",title:"富文本",format:"htmlarea",placeholder:"请输入html代码片段",default:"<p>hello,world!</p>",description:"用于放置html代码片段",isRequired:!1,readOnly:!1},"text-editor":{type:"string",title:"富文本",format:"text-editor",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},date:{type:"string",title:"日期Date",format:"date",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},"date-time":{type:"string",title:"日期时间",format:"date-time",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},time:{type:"string",title:"时间Time",format:"time",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},quantity:{type:"object",format:"quantity",title:"单位计量",isRequired:!1,readOnly:!1,properties:{unit:{type:"number",title:"单位数值",format:"number",default:50,minimum:0,maximum:1e3,description:"",isRequired:!1,readOnly:!1},quantity:{type:"string",format:"typeSelect",default:"px",enum:["px","rem","em","%"],enumextra:["px","rem","em","%"],title:"单位类型",isRequired:!1,readOnly:!1}},required:["unit","quantity"],propertyOrder:["unit","quantity"]},"box-style":{type:"object",format:"box-style",title:"盒子模型",isRequired:!1,readOnly:!1,properties:{unit:{type:"string",title:"单位数值",format:"string",default:"0",description:"",isRequired:!1,readOnly:!1},quantity:{type:"string",format:"typeSelect",default:"px",enum:["px","rem","em","%"],enumextra:["px","rem","em","%"],title:"单位类型",isRequired:!1,readOnly:!1}},required:["unit","quantity"],propertyOrder:["unit","quantity"]},radio:{type:"string",title:"单选",format:"radio",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},"single-select":{type:"string",title:"下拉单选",format:"single-select",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},select:{type:"array",title:"多选",format:"select",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},"dynamic-data":{type:"object",format:"dynamic-data",title:"动态数据源",readOnly:!1,properties:{type:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["本地数据","接口数据"],title:"数据类型"},config:{type:"object",title:"接口配置",format:"object",description:"用于存放接口的配置数据(url、请求参数等)",isRequired:!0,properties:{dataName:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["本地数据","接口数据"],title:"数据类型"},body:{type:"object",title:"请求参数配置",format:"object",description:"用于配置当前接口的请求参数数值",isRequired:!0},filter:{type:"string",title:"过滤器函数体",format:"codearea",default:"return data;",description:"用于定义过滤接口数据",isRequired:!0}},required:["dataName","body","filter"],propertyOrder:["dataName","body","filter"]},data:{type:"string",title:"数据内容",format:"json",default:"{}",description:"用于存放DynamicData的数据内容",isRequired:!0},localFilter:{type:"string",title:"过滤器",format:"codearea",default:"return data;",description:"用于定义过滤本地数据",isRequired:!0}},required:["type","config","data","localFilter"],propertyOrder:["type","config","data","localFilter"]},datasource:d,event:l,widget:{type:"string",title:"内嵌组件数据",format:"widget",default:"{}",description:"用于存放内嵌组件的渲染相关数据",isRequired:!1,readOnly:!0}},f={on:{type:"object",format:"event",title:"事件",isRequired:!1,readOnly:!1,properties:{type:{type:"string",default:"on",format:"typeSelect",enum:["on","emit"],enumextra:["on","emit"],title:"事件类型",isRequired:!1,readOnly:!1},register:{type:"string",format:"input",default:"eventName",title:"注册事件",description:"用于输入注册事件的名称",placeholder:"请输入注册事件的名称",isRequired:!1,readOnly:!1},actionFunc:{type:"string",title:"执行函数",format:"codearea",default:"() => {}",description:"",isRequired:!1,readOnly:!1}},required:["type","register","actionFunc"],propertyOrder:["type","register","actionFunc"]},emit:l},c={local:d,remote:{type:"object",format:"datasource",title:"数据源",readOnly:!1,properties:{type:{type:"string",default:"remote",format:"typeSelect",enum:["local","remote"],enumextra:["local","remote"],title:"数据源类型"},data:{type:"string",title:"远程json数据",placeholder:"请输入远程json数据源地址",format:"url",default:"http://xxx",isRequired:!0,description:"用于设置获取元素数据的请求地址"},filter:{type:"string",title:"过滤器",format:"codearea",default:"() => {}",description:"用于定义过滤当前数据的函数",isRequired:!0}},required:["type","data","filter"],propertyOrder:["type","data","filter"]}};function y(e){return/^http[s]?:\/\/.*/.test(e)}function m(e){return"String"===Object.prototype.toString.call(e).slice(8,-1)}function g(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function O(e){return"Boolean"===Object.prototype.toString.call(e).slice(8,-1)}function v(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)}function b(e){return/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/.test(e)||/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/.test(e)}function j(e){return/^\d{2}:\d{2}:\d{2}$/.test(e)||/^\d{2}:\d{2}$/.test(e)}function q(e){var t=!1;return"Array"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function h(e){if(!q(e))return!1;for(var t=0,r=e.length;t<r;t++){if(!m(e[t]))return!1}return!0}function x(e){var t=!1;return"Object"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function R(e){var t=!1;return u.quantity.properties.quantity.enum.indexOf(e)>=0&&(t=!0),t}function N(e){return/^#[0-9a-f]{6}$/.test(e)||/^#[0-9a-f]{3}$/.test(e)}function S(e){var t=!1;return"Function"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function F(t){return t&&x(t)?function(t){var r;if(x(t)){var i=Object.keys(t);t.data&&t.filter&&2===i.length?r=q(t.data)||x(t.data)?e(c.local):e(c.remote):t.trigger&&t.eventData&&2===i.length?r=e(f.emit):t.register&&t.actionFunc&&2===i.length?r=e(f.on):t.quantity&&R(t.quantity)&&2===i.length?r=e(u.quantity):(r=e(u["empty-object"]),Object.keys(t).map((function(e){var i=t[e];r.properties[e]=F(i)})))}return r}(t):t&&q(t)?function(t){var r;if(t&&q(t))if(h(t)){(r=e(u.select)).items.enum=t;var i=r.items.enumextra.length,a=t.length;if(a>i)for(var n=i,o=a;n<o;n++)r.items.enumextra.push("选项"+t(n))}else{r=e(u["empty-array"]);var p=F(t[0]);r.items.properties=p.properties}return r}(t):function(t){var r="";if(O(t))r=e(u.boolean);else if(g(t))r=e(u.number);else if(y(t))r=e(u.url);else if(v(t))r=e(u.date);else if(b(t))r=e(u["date-time"]);else if(j(t))r=e(u.time);else if(N(t))r=e(u.color);else try{r=g(JSON.parse(t))?e(u.input):e(u.json)}catch(i){r=t&&t.length>30?e(u.textarea):e(u.input)}return r}(t)}function k(e){var t=e&&e.format;return t||(t=e&&e.type?e.type:"input"),t}function D(e){var t=!0;if(!e)return t;var r=k(e);return("object"===r&&e.properties&&e.propertyOrder&&e.propertyOrder.length>0||"array"===r&&e.items&&e.items.properties&&e.items.propertyOrder&&e.items.propertyOrder.length>0||e.type&&"array"!==e.type&&"object"!==e.type||e.format)&&(t=!1),t}function w(e){var t=!0;if(e&&("object"===k(e)&&e.properties&&e.propertyOrder&&e.propertyOrder.length>0)){var r=e.properties.func||{},i=e.properties.style||{},a=e.properties.data||{};(r.propertyOrder&&r.propertyOrder.length>0||i.propertyOrder&&i.propertyOrder.length>0||a.propertyOrder&&a.propertyOrder.length>0)&&(t=!1)}return t}function J(e){var t=!1;e&&("object"===k(e)&&e.properties&&e.propertyOrder&&e.properties.func&&e.properties.style&&e.properties.data&&(t=!0));return t}function $(e){var t=!1,r=e.lastUpdateTime,i=new Date("2020-07-29T07:30:00.691Z").getTime();return r&&new Date(r).getTime()>=i&&(t=!0),t}function T(e){var t=!1;return"object"!==e&&"func"!==e&&"style"!==e&&"data"!==e&&"widgets"!==e&&"func-schema"!==e&&"style-schema"!==e&&"data-schema"!==e&&"event-schema"!==e&&"widgets-schema"!==e||(t=!0),t}function A(e){var t=!1;return"func"!==e&&"style"!==e&&"data"!==e&&"props"!==e&&"event-schema"!==e&&"widgets"!==e||(t=!0),t}function U(e){var t=!0;return"object"===(e.type||k(e))&&e.propertyOrder&&e.properties?e.propertyOrder.map((function(r){var i=e.properties[r];"object"===(e.type||k(i))&&i.propertyOrder&&i.properties||(t=!1)})):t=!1,t}function I(e,t){var r=e.split("-"),i=t.split("-");return r.pop(),i.pop(),r.join("-")===i.join("-")}function W(e,t){for(var r=e.split("-"),i=t.split("-"),a="before",n=0,o=(r.length>i.length?i:r).length;n<o;n+=1){Number(r[n])>Number(i[n])&&(a="after")}return a}function B(e){var t=e.split("-");return t.pop(),t.join("-")}function H(e){var t=e.split("-"),r=t.pop(),i=Number(r)+1;return t.push(""+i),t.join("-")}function L(e){var t=e.split("-"),r=t.pop();return[t.join("-"),r]}function Z(e){var t=e.split("-"),r=t.pop();return t.push(Number(r)-1),t.join("-")}function z(e){var t=e.split("-"),r=t.pop();return t.push(Number(r)+1),t.join("-")}function C(e,t){var r=t||{};if(x(e)&&"object"===e.type&&e.properties){(e.propertyOrder?e.propertyOrder:Object.keys(e.properties)).map((function(t){var i=e.properties[t];r=E(i,r)}))}return r}function E(e,t){var r=!t,i=t||{};if(e&&"{}"!==JSON.stringify(e)){var a=k(e);"object"===a||"func"===a||"style"===a||"data"===a?(!r&&i.object?i.object+=1:r||(i.object=1),i=C(e,i)):"array"===a?(!r&&i.array?i.array+=1:r||(i.array=1),i=C(e=e.items,i)):!r&&i[a]?i[a]+=1:r||(i[a]=1)}return i}function G(t){var i=e(t);if(!i.title&&i.description&&(i.title=i.description),i.format||(i.format=k(i)),"quantity"!==i.format&&"array"!==i.format&&"datasource"!==i.format&&"event"!==i.format&&"object"!==i.format&&"radio"!==i.format&&"select"!==i.format||!r(i.default)||delete i.default,"radio"===i.format&&(i.type="string",i.enum&&i.enumextra&&(i.items={type:"string",enum:e(i.enum),enumextra:e(i.enumextra)},delete i.enum,delete i.enumextra)),"quantity"===i.format){var a=i.properties,n=e(u.quantity);if(a.quantity&&x(a.quantity)&&a.quantity.default){var o=a.quantity.default;n.properties.quantity.default="percent"===o?"%":o}i=n}if("datasource"===i.format){var p=i.properties,l=p.type&&p.type.default,d=p.data&&p.data.default,s=p.filter&&p.filter.default;"local"===l?(i=e(c.local)).properties.data.default=d?e(d):"{}":(i=e(c.remote)).properties.data.default=d?e(d):"http://xxx",i.properties.filter.default=s?e(s):"() => {}"}if("event"===i.format){var y=i.properties,m=y.type&&y.type.default;if("in"===m||"on"===m){var g=y.filter&&y.filter.default||"() => {}";i=e(f.on),y.actionFunc&&x(y.actionFunc)&&(i.properties.actionFunc.default=y.actionFunc.default||e(g))}else{var O=y.filter&&y.filter.default||"{}";i=e(f.emit),y.eventData&&x(y.eventData)&&(i.properties.eventData.default=y.eventData.default||e(O))}}return i.properties&&(i.required=Object.keys(i.properties),i.propertyOrder||(i.propertyOrder=i.required),i.propertyOrder.map((function(e){i.properties[e]=G(i.properties[e])}))),i.items&&(i.items=G(i.items)),i}function K(e,t){var i="",a=t;r(a)&&r(e.default)&&typeof a!=typeof e.default&&(a=void 0);var n=r(a)?a:e.default;switch(e.type){case"string":if("typeSelect"===e.format)i=e.default;else if("color"===e.format)"#fff"!==n&&"#FFF"!==n||(n="#ffffff"),i=n||"#ffffff";else if("json"===e.format||"widget"===e.format){var o="";if(x(t)||q(t))o=t;else if(S(t)||""===t)o={};else try{o=JSON.parse(t)}catch(e){o={}}i=o}else i=r(n)?n:"";break;case"boolean":i=!!r(n)&&n;break;case"number":i=r(n)?n:1;break;default:i=r(n)?n:""}return i}function M(t,i){var a={},n=k(t);if(x(t)&&"object"===t.type){var o=t,p=i;r(p)&&r(o.default)&&typeof p!=typeof o.default&&(p=void 0);var l=r(p)?p:o.default;if("dynamic-data"===n)a=e(s),l&&x(l)&&"{}"!==JSON.stringify(l)&&(a=Object.assign(a,l));else if("datasource"===n)o.properties&&o.properties.type&&o.properties.type.default&&"local"===o.properties.type.default?(a={data:"{}",filter:"() => {}"},l&&l.data&&(a.data=l.data),l&&l.filter&&(a.filter=l.filter),"http://xxx"===a.data&&(a.data="{}")):(a={data:"http://xxx",filter:"() => {}"},l&&l.data&&(a.data=l.data),l&&l.filter&&(a.filter=l.filter),"{}"===a.data&&(a.data="http://xxx"));else if("event"===n)o.properties&&o.properties.type&&o.properties.type.default&&"emit"===o.properties.type.default?l&&"out"===l.type?a={trigger:l&&l.filter||"eventName",eventData:"{}"}:(a={trigger:"eventName",eventData:"{}"},l&&l.trigger&&(a.trigger=l.trigger),l&&l.eventData&&(a.eventData=l.eventData)):l&&"in"===l.type?a={register:"eventName",actionFunc:l&&l.filter||"() => {}"}:(a={register:"eventName",actionFunc:"() => {}"},l&&l.register&&(a.register=l.register),l&&l.actionFunc&&(a.actionFunc=l.actionFunc));else if(t.properties){(t.propertyOrder?t.propertyOrder:Object.keys(t.properties)).map((function(e){var r=t.properties[e],n=i&&i[e];switch(r.type){case"array":a[e]=P(r,n);break;case"object":a[e]=M(r,n);break;default:a[e]=K(r,n)}}))}}return a}function P(e,t){var i=[];if(e&&"array"===e.type){var a=t;r(a)&&r(e.default)&&typeof a!=typeof e.default&&(a=void 0);var n=r(a)?a:e.default;if("array"===e.format)if(q(n))n.map((function(t){i.push(M(e.items,t))}));else{var o=M(e.items,n);i.push(o)}else i=r(n)?n:[]}return i}function Q(e,t){return"object"===e.type?M(e,t):"array"===e.type?P(e,t):K(e,t)}var V=u;function X(e,t){var i=t||[];if(e&&"{}"!==JSON.stringify(e))if(x(e))if(e.type&&"remote"===e.type&&e.config&&x(e.config)&&e.config.dataName&&r(e.localFilter)&&r(e.data)){var a=e.config.body;if(a&&!x(a))try{a=JSON.parse(a)}catch(e){a={}}i.push({id:e.config.id,dataName:e.config.dataName,body:a})}else{Object.keys(e).map((function(t){X(e[t],i)}))}else q(e)&&e.map((function(e){X(e,i)}));return i}function Y(e,t){var r=t||"data";return e.split("-").map((function(e){r=/^\d+$/.test(e)?r+"["+e+"]":r+"."+e})),r}function _(e,t){var r=[];x(e)?Object.keys(e).map((function(i){var a=e[i],n=t?t+"-"+i:i;x(a)||q(a)?r.push({title:i,value:n,key:n,children:_(a,n)}):r.push({title:i,value:n,key:n})})):q(e)&&e.map((function(e,i){var a=i.toString(),n=t?t+"-"+i:a;x(e)||q(e)?r.push({title:a,value:n,key:n,children:_(e,n)}):r.push({title:a,value:n,key:n})}));return r}function ee(e){var t=e.split("-");return t.pop(),t.join("-")}function te(e){var t=e.split("-"),r=t.pop();return[t.join("-"),r]}var re=["key","enum","enumextra","items","input","boolean","number","color","url","textarea","text-editor","radio","single-select","select","date","date-time","time","json","codearea","htmlarea","quantity","box-style","dynamic-data","datasource","event","array","object","widget","widgets","widgetUUID","embedWidgetList"];export{c as DataSourceTypeList,f as EventTypeDataList,re as KeyWordList,u as TypeDataList,Y as dataRoute2dataPath,X as dynamicDataAnalyzer,r as exitPropertie,W as getCurPosition,k as getCurrentFormat,i as getJsonDataByKeyRoute,H as getNextIndexRoute,B as getParentIndexRoute,L as getParentIndexRoute_CurIndex,ee as getParentKeyRoute,te as getParentKeyRoute_CurKey,a as getSchemaByIndexRoute,n as getSchemaByKeyRoute,o as indexRoute2keyRoute,q as isArray,O as isBoolean,T as isBoxSchemaData,N as isColor,v as isDateStr,b as isDateTimeStr,D as isEmptySchema,w as isEmptyWidgetSchema,t as isEqual,A as isFirstSchemaData,S as isFunction,$ as isNewSchemaData,g as isNumber,x as isObject,R as isQuantity,I as isSameParent,h as isSelect,m as isString,U as isStructuredSchema,j as isTimeStr,y as isURL,J as isUsedToWidgetConfig,F as json2schema,_ as json2treeData,p as keyRoute2indexRoute,E as metaElemAnalyzer,z as moveBackward,Z as moveForward,e as objClone,G as oldSchemaToNewSchema,Q as schema2json,V as schemaMetaList};
package/dist/index.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * @wibetter/json-utils v1.2.28
2
+ * @wibetter/json-utils v1.3.2
3
3
  * author: ldan@wibetter
4
4
  * build tool: AKFun
5
- * build time: Sun Apr 25 2021 18:21:36 GMT+0800 (China Standard Time)
6
- * build info: https://github.com/wibetter/akfun
5
+ * build time: Sun Oct 17 2021 21:32:33 GMT+0800 (China Standard Time)
6
+ * build tool info: https://github.com/wibetter/akfun
7
7
  */
8
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONUtils=t():e.JSONUtils=t()}(this,(function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";function i(e){var t=JSON.stringify(e);return JSON.parse(t)}function n(e,t){return JSON.stringify(e)===JSON.stringify(t)}function a(e){var t=!1;return null!=e&&(t=!0),t}function o(e,t,r){var n=t;if(r&&(n=i(t)),e)for(var a=e.split("-"),o=0,u=a.length;o<u;o++){var p=a[o];p&&(n=n&&n[p])}return n}function u(e,t,r){var n=t;if(r&&(n=i(t)),e)for(var a=e.split("-"),o=0,u=a.length;o<u;o++){var p=a[o];if("0"!==p||"array"!==n.format&&"radio"!==n.format&&"single-select"!==n.format&&"select"!==n.format||!n.items){if(p){var d="0";if(n.propertyOrder)d=n.propertyOrder[p];else if(n.properties){d=Object.keys(n.properties)[p]}n=n.properties[d]}}else n=n.items}return n}function p(e,t){for(var r=t,i="",n=e.split("-"),a=0,o=n.length;a<o;a++){var u=n[a];if("0"===u&&r.items)r=r.items,i=i?i+"-items":"items";else if(u){var p="0";if(r.propertyOrder)p=r.propertyOrder[u];else if(r.properties){p=Object.keys(r.properties)[u]}r=r.properties[p],i=i?i+"-"+p:p}}return i}r.r(t),r.d(t,"getJsonDataByKeyRoute",(function(){return o})),r.d(t,"getSchemaByIndexRoute",(function(){return u})),r.d(t,"indexRoute2keyRoute",(function(){return p})),r.d(t,"json2schema",(function(){return F})),r.d(t,"metaElemAnalyzer",(function(){return W})),r.d(t,"oldSchemaToNewSchema",(function(){return z})),r.d(t,"schema2json",(function(){return G})),r.d(t,"schemaMetaList",(function(){return V})),r.d(t,"dynamicDataAnalyzer",(function(){return X})),r.d(t,"dataRoute2dataPath",(function(){return Y})),r.d(t,"json2treeData",(function(){return ee})),r.d(t,"objClone",(function(){return i})),r.d(t,"isEqual",(function(){return n})),r.d(t,"exitPropertie",(function(){return a})),r.d(t,"getParentKeyRoute",(function(){return te})),r.d(t,"getParentKeyRoute_CurKey",(function(){return re})),r.d(t,"getCurrentFormat",(function(){return k})),r.d(t,"isEmptySchema",(function(){return w})),r.d(t,"isEmptyWidgetSchema",(function(){return T})),r.d(t,"isUsedToWidgetConfig",(function(){return J})),r.d(t,"isNewSchemaData",(function(){return P})),r.d(t,"isBoxSchemaData",(function(){return $})),r.d(t,"isFirstSchemaData",(function(){return _})),r.d(t,"isStructuredSchema",(function(){return C})),r.d(t,"isSameParent",(function(){return I})),r.d(t,"getCurPosition",(function(){return L})),r.d(t,"getParentIndexRoute",(function(){return U})),r.d(t,"getNextIndexRoute",(function(){return A})),r.d(t,"getParentIndexRoute_CurIndex",(function(){return B})),r.d(t,"moveForward",(function(){return E})),r.d(t,"moveBackward",(function(){return K})),r.d(t,"isURL",(function(){return m})),r.d(t,"isString",(function(){return g})),r.d(t,"isNumber",(function(){return b})),r.d(t,"isBoolean",(function(){return O})),r.d(t,"isDateStr",(function(){return v})),r.d(t,"isDateTimeStr",(function(){return j})),r.d(t,"isTimeStr",(function(){return h})),r.d(t,"isArray",(function(){return q})),r.d(t,"isSelect",(function(){return x})),r.d(t,"isObject",(function(){return R})),r.d(t,"isQuantity",(function(){return S})),r.d(t,"isColor",(function(){return N})),r.d(t,"isFunction",(function(){return D})),r.d(t,"KeyWordList",(function(){return ie})),r.d(t,"TypeDataList",(function(){return f})),r.d(t,"EventTypeDataList",(function(){return c})),r.d(t,"DataSourceTypeList",(function(){return y}));var d={type:"object",format:"event",title:"事件",isRequired:!1,readOnly:!1,properties:{type:{type:"string",default:"emit",format:"typeSelect",enum:["on","emit"],enumextra:["on","emit"],title:"事件类型",isRequired:!1,readOnly:!1},trigger:{type:"string",format:"input",default:"eventName",title:"触发事件",description:"用于输入触发事件的名称",placeholder:"请输入触发事件的名称",isRequired:!1,readOnly:!1},eventData:{type:"string",title:"事件数据",format:"json",default:"{}",description:"传递给触发事件的数据对象",isRequired:!1,readOnly:!1}},required:["type","trigger","eventData"],propertyOrder:["type","trigger","eventData"]},l={type:"object",format:"datasource",title:"数据源",readOnly:!1,properties:{type:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["local","remote"],title:"数据源类型"},data:{type:"string",title:"本地json数据",placeholder:"请输入静态json数据",format:"json",default:"{}",description:"用于设置本地的静态json数据",isRequired:!0},filter:{type:"string",title:"过滤器",format:"codearea",default:"() => {}",description:"用于定义过滤当前数据的函数",isRequired:!0}},required:["type","data","filter"],propertyOrder:["type","data","filter"]},s={type:"local",config:{dataName:"",body:{},filter:"return data;"},data:"{}",localFilter:"return data;"},f={jsonschema:{type:"object",title:"jsonSchemaObject",properties:{func:{type:"object",format:"func",title:"功能设置",readOnly:!0,properties:{a:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["a"],propertyOrder:["a"]},style:{type:"object",format:"style",title:"样式设置",readOnly:!0,properties:{b:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["b"],propertyOrder:["b"]},data:{type:"object",format:"data",title:"数据设置",readOnly:!0,properties:{c:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["c"],propertyOrder:["c"]}},required:["func","style","data"],propertyOrder:["func","style","data"]},input:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},boolean:{type:"boolean",title:"布尔值",format:"boolean",default:!1,description:"",isRequired:!1,readOnly:!1},object:{type:"object",format:"object",title:"对象Object",description:"",isRequired:!1,readOnly:!1,properties:{a:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["a"],propertyOrder:["a"]},array:{type:"array",format:"array",title:"数组Array",description:"",isRequired:!1,readOnly:!1,items:{type:"object",format:"object",title:"数组项",description:"",isRequired:!1,readOnly:!1,properties:{name:{type:"string",format:"input",title:"名字",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["name"],propertyOrder:["name"]}},"empty-array":{type:"array",format:"array",title:"数组Array",description:"",items:{type:"object",format:"object",title:"数组项",description:"",properties:{}}},"empty-object":{type:"object",format:"object",title:"对象Object",description:"",properties:{}},url:{type:"string",title:"链接地址url",format:"url",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},textarea:{type:"string",title:"多行文本框",format:"textarea",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},color:{type:"string",title:"颜色color",format:"color",default:"#ffffff",description:"",isRequired:!1,readOnly:!1},image:{type:"string",title:"图片",format:"image",default:"",description:"上传图片",imgWidth:200,imgHeight:200,imgRatioReadOnly:!0,templateId:"",isRequired:!1},number:{type:"number",title:"数量number",format:"number",default:1,minimum:0,maximum:1e3,description:"",isRequired:!1,readOnly:!1},json:{type:"string",title:"json数据",format:"json",default:"{}",description:"",isRequired:!1,readOnly:!1},codearea:{type:"string",title:"函数类型",format:"codearea",placeholder:"请输入函数方法",default:'function func() { console.log("hello, world!"); }',description:"用于定义函数方法",isRequired:!1,readOnly:!1},htmlarea:{type:"string",title:"富文本",format:"htmlarea",placeholder:"请输入html代码片段",default:"<p>hello,world!</p>",description:"用于放置html代码片段",isRequired:!1,readOnly:!1},"text-editor":{type:"string",title:"富文本",format:"text-editor",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},date:{type:"string",title:"日期Date",format:"date",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},"date-time":{type:"string",title:"日期时间",format:"date-time",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},time:{type:"string",title:"时间Time",format:"time",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},quantity:{type:"object",format:"quantity",title:"单位计量",isRequired:!1,readOnly:!1,properties:{unit:{type:"number",title:"单位数值",format:"number",default:50,minimum:0,maximum:1e3,description:"",isRequired:!1,readOnly:!1},quantity:{type:"string",format:"typeSelect",default:"px",enum:["px","rem","em","%"],enumextra:["px","rem","em","%"],title:"单位类型",isRequired:!1,readOnly:!1}},required:["unit","quantity"],propertyOrder:["unit","quantity"]},"box-style":{type:"object",format:"box-style",title:"盒子模型",isRequired:!1,readOnly:!1,properties:{unit:{type:"string",title:"单位数值",format:"string",default:"0",description:"",isRequired:!1,readOnly:!1},quantity:{type:"string",format:"typeSelect",default:"px",enum:["px","rem","em","%"],enumextra:["px","rem","em","%"],title:"单位类型",isRequired:!1,readOnly:!1}},required:["unit","quantity"],propertyOrder:["unit","quantity"]},radio:{type:"string",title:"单选",format:"radio",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},"single-select":{type:"string",title:"下拉单选",format:"single-select",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},select:{type:"array",title:"多选",format:"select",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},"dynamic-data":{type:"object",format:"dynamic-data",title:"动态数据源",readOnly:!1,properties:{type:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["本地数据","接口数据"],title:"数据类型"},config:{type:"object",title:"接口配置",format:"object",description:"用于存放接口的配置数据(url、请求参数等)",isRequired:!0,properties:{dataName:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["本地数据","接口数据"],title:"数据类型"},body:{type:"object",title:"请求参数配置",format:"object",description:"用于配置当前接口的请求参数数值",isRequired:!0},filter:{type:"string",title:"过滤器函数体",format:"codearea",default:"return data;",description:"用于定义过滤接口数据",isRequired:!0}},required:["dataName","body","filter"],propertyOrder:["dataName","body","filter"]},data:{type:"string",title:"数据内容",format:"json",default:"{}",description:"用于存放DynamicData的数据内容",isRequired:!0},localFilter:{type:"string",title:"过滤器",format:"codearea",default:"return data;",description:"用于定义过滤本地数据",isRequired:!0}},required:["type","config","data","localFilter"],propertyOrder:["type","config","data","localFilter"]},datasource:l,event:d,widget:{type:"string",title:"内嵌组件数据",format:"widget",default:"{}",description:"用于存放内嵌组件的渲染相关数据",isRequired:!1,readOnly:!0}},c={on:{type:"object",format:"event",title:"事件",isRequired:!1,readOnly:!1,properties:{type:{type:"string",default:"on",format:"typeSelect",enum:["on","emit"],enumextra:["on","emit"],title:"事件类型",isRequired:!1,readOnly:!1},register:{type:"string",format:"input",default:"eventName",title:"注册事件",description:"用于输入注册事件的名称",placeholder:"请输入注册事件的名称",isRequired:!1,readOnly:!1},actionFunc:{type:"string",title:"执行函数",format:"codearea",default:"() => {}",description:"",isRequired:!1,readOnly:!1}},required:["type","register","actionFunc"],propertyOrder:["type","register","actionFunc"]},emit:d},y={local:l,remote:{type:"object",format:"datasource",title:"数据源",readOnly:!1,properties:{type:{type:"string",default:"remote",format:"typeSelect",enum:["local","remote"],enumextra:["local","remote"],title:"数据源类型"},data:{type:"string",title:"远程json数据",placeholder:"请输入远程json数据源地址",format:"url",default:"http://xxx",isRequired:!0,description:"用于设置获取元素数据的请求地址"},filter:{type:"string",title:"过滤器",format:"codearea",default:"() => {}",description:"用于定义过滤当前数据的函数",isRequired:!0}},required:["type","data","filter"],propertyOrder:["type","data","filter"]}};function m(e){return/^http[s]?:\/\/.*/.test(e)}function g(e){return"String"===Object.prototype.toString.call(e).slice(8,-1)}function b(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function O(e){return"Boolean"===Object.prototype.toString.call(e).slice(8,-1)}function v(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)}function j(e){return/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/.test(e)||/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/.test(e)}function h(e){return/^\d{2}:\d{2}:\d{2}$/.test(e)||/^\d{2}:\d{2}$/.test(e)}function q(e){var t=!1;return"Array"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function x(e){if(!q(e))return!1;for(var t=0,r=e.length;t<r;t++){if(!g(e[t]))return!1}return!0}function R(e){var t=!1;return"Object"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function S(e){var t=!1;return f.quantity.properties.quantity.enum.indexOf(e)>=0&&(t=!0),t}function N(e){return/^#[0-9a-f]{6}$/.test(e)||/^#[0-9a-f]{3}$/.test(e)}function D(e){var t=!1;return"Function"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function F(e){return e&&R(e)?function(e){var t;if(R(e)){var r=Object.keys(e);e.data&&e.filter&&2===r.length?t=q(e.data)||R(e.data)?i(y.local):i(y.remote):e.trigger&&e.eventData&&2===r.length?t=i(c.emit):e.register&&e.actionFunc&&2===r.length?t=i(c.on):e.quantity&&S(e.quantity)&&2===r.length?t=i(f.quantity):(t=i(f["empty-object"]),Object.keys(e).map((function(r){var i=e[r];t.properties[r]=F(i)})))}return t}(e):e&&q(e)?function(e){var t;if(e&&q(e))if(x(e)){(t=i(f.select)).items.enum=e;var r=t.items.enumextra.length,n=e.length;if(n>r)for(var a=r,o=n;a<o;a++)t.items.enumextra.push("选项"+e(a))}else{t=i(f["empty-array"]);var u=F(e[0]);t.items.properties=u.properties}return t}(e):function(e){var t="";if(O(e))t=i(f.boolean);else if(b(e))t=i(f.number);else if(m(e))t=i(f.url);else if(v(e))t=i(f.date);else if(j(e))t=i(f["date-time"]);else if(h(e))t=i(f.time);else if(N(e))t=i(f.color);else try{t=b(JSON.parse(e))?i(f.input):i(f.json)}catch(r){t=e&&e.length>30?i(f.textarea):i(f.input)}return t}(e)}function k(e){var t=e&&e.format;return t||(t=e&&e.type?e.type:"input"),t}function w(e){var t=!0;if(!e)return t;var r=k(e);return("object"===r&&e.properties&&e.propertyOrder&&e.propertyOrder.length>0||"array"===r&&e.items&&e.items.properties&&e.items.propertyOrder&&e.items.propertyOrder.length>0||e.type&&"array"!==e.type&&"object"!==e.type||e.format)&&(t=!1),t}function T(e){var t=!0;if(e&&("object"===k(e)&&e.properties&&e.propertyOrder&&e.propertyOrder.length>0)){var r=e.properties.func||{},i=e.properties.style||{},n=e.properties.data||{};(r.propertyOrder&&r.propertyOrder.length>0||i.propertyOrder&&i.propertyOrder.length>0||n.propertyOrder&&n.propertyOrder.length>0)&&(t=!1)}return t}function J(e){var t=!1;e&&("object"===k(e)&&e.properties&&e.propertyOrder&&e.properties.func&&e.properties.style&&e.properties.data&&(t=!0));return t}function P(e){var t=!1,r=e.lastUpdateTime,i=new Date("2020-07-29T07:30:00.691Z").getTime();return r&&new Date(r).getTime()>=i&&(t=!0),t}function $(e){var t=!1;return"object"!==e&&"func"!==e&&"style"!==e&&"data"!==e&&"widgets"!==e&&"func-schema"!==e&&"style-schema"!==e&&"data-schema"!==e&&"event-schema"!==e&&"widgets-schema"!==e||(t=!0),t}function _(e){var t=!1;return"func"!==e&&"style"!==e&&"data"!==e&&"event-schema"!==e&&"widgets"!==e||(t=!0),t}function C(e){var t=!0;return"object"===(e.type||k(e))&&e.propertyOrder&&e.properties?e.propertyOrder.map((function(r){var i=e.properties[r];"object"===(e.type||k(i))&&i.propertyOrder&&i.properties||(t=!1)})):t=!1,t}function I(e,t){var r=e.split("-"),i=t.split("-");return r.pop(),i.pop(),r.join("-")===i.join("-")}function L(e,t){for(var r=e.split("-"),i=t.split("-"),n="before",a=0,o=(r.length>i.length?i:r).length;a<o;a+=1){Number(r[a])>Number(i[a])&&(n="after")}return n}function U(e){var t=e.split("-");return t.pop(),t.join("-")}function A(e){var t=e.split("-"),r=t.pop(),i=Number(r)+1;return t.push(""+i),t.join("-")}function B(e){var t=e.split("-"),r=t.pop();return[t.join("-"),r]}function E(e){var t=e.split("-"),r=t.pop();return t.push(Number(r)-1),t.join("-")}function K(e){var t=e.split("-"),r=t.pop();return t.push(Number(r)+1),t.join("-")}function M(e,t){var r=t||{};if(R(e)&&"object"===e.type&&e.properties){(e.propertyOrder?e.propertyOrder:Object.keys(e.properties)).map((function(t){var i=e.properties[t];r=W(i,r)}))}return r}function W(e,t){var r=!t,i=t||{};if(e&&"{}"!==JSON.stringify(e)){var n=k(e);"object"===n||"func"===n||"style"===n||"data"===n?(!r&&i.object?i.object+=1:r||(i.object=1),i=M(e,i)):"array"===n?(!r&&i.array?i.array+=1:r||(i.array=1),i=M(e=e.items,i)):!r&&i[n]?i[n]+=1:r||(i[n]=1)}return i}function z(e){var t=i(e);if(!t.title&&t.description&&(t.title=t.description),t.format||(t.format=k(t)),"quantity"!==t.format&&"array"!==t.format&&"datasource"!==t.format&&"event"!==t.format&&"object"!==t.format&&"radio"!==t.format&&"select"!==t.format||!a(t.default)||delete t.default,"radio"===t.format&&(t.type="string",t.enum&&t.enumextra&&(t.items={type:"string",enum:i(t.enum),enumextra:i(t.enumextra)},delete t.enum,delete t.enumextra)),"quantity"===t.format){var r=t.properties,n=i(f.quantity);if(r.quantity&&R(r.quantity)&&r.quantity.default){var o=r.quantity.default;n.properties.quantity.default="percent"===o?"%":o}t=n}if("datasource"===t.format){var u=t.properties,p=u.type&&u.type.default,d=u.data&&u.data.default,l=u.filter&&u.filter.default;"local"===p?(t=i(y.local)).properties.data.default=d?i(d):"{}":(t=i(y.remote)).properties.data.default=d?i(d):"http://xxx",t.properties.filter.default=l?i(l):"() => {}"}if("event"===t.format){var s=t.properties,m=s.type&&s.type.default;if("in"===m||"on"===m){var g=s.filter&&s.filter.default||"() => {}";t=i(c.on),s.actionFunc&&R(s.actionFunc)&&(t.properties.actionFunc.default=s.actionFunc.default||i(g))}else{var b=s.filter&&s.filter.default||"{}";t=i(c.emit),s.eventData&&R(s.eventData)&&(t.properties.eventData.default=s.eventData.default||i(b))}}return t.properties&&(t.required=Object.keys(t.properties),t.propertyOrder||(t.propertyOrder=t.required),t.propertyOrder.map((function(e){t.properties[e]=z(t.properties[e])}))),t.items&&(t.items=z(t.items)),t}function H(e,t){var r="",i=t;a(i)&&a(e.default)&&typeof i!=typeof e.default&&(i=void 0);var n=a(i)?i:e.default;switch(e.type){case"string":if("typeSelect"===e.format)r=e.default;else if("color"===e.format)"#fff"!==n&&"#FFF"!==n||(n="#ffffff"),r=n||"#ffffff";else if("json"===e.format||"widget"===e.format){var o="";if(R(t)||q(t))o=t;else if(D(t)||""===t)o={};else try{o=JSON.parse(t)}catch(e){o={}}r=o}else r=a(n)?n:"";break;case"boolean":r=!!a(n)&&n;break;case"number":r=a(n)?n:1;break;default:r=a(n)?n:""}return r}function Q(e,t){var r={},n=k(e);if(R(e)&&"object"===e.type){var o=e,u=t;a(u)&&a(o.default)&&typeof u!=typeof o.default&&(u=void 0);var p=a(u)?u:o.default;if("dynamic-data"===n)r=i(s),p&&R(p)&&"{}"!==JSON.stringify(p)&&(r=Object.assign(r,p));else if("datasource"===n)o.properties&&o.properties.type&&o.properties.type.default&&"local"===o.properties.type.default?(r={data:"{}",filter:"() => {}"},p&&p.data&&(r.data=p.data),p&&p.filter&&(r.filter=p.filter),"http://xxx"===r.data&&(r.data="{}")):(r={data:"http://xxx",filter:"() => {}"},p&&p.data&&(r.data=p.data),p&&p.filter&&(r.filter=p.filter),"{}"===r.data&&(r.data="http://xxx"));else if("event"===n)o.properties&&o.properties.type&&o.properties.type.default&&"emit"===o.properties.type.default?p&&"out"===p.type?r={trigger:p&&p.filter||"eventName",eventData:"{}"}:(r={trigger:"eventName",eventData:"{}"},p&&p.trigger&&(r.trigger=p.trigger),p&&p.eventData&&(r.eventData=p.eventData)):p&&"in"===p.type?r={register:"eventName",actionFunc:p&&p.filter||"() => {}"}:(r={register:"eventName",actionFunc:"() => {}"},p&&p.register&&(r.register=p.register),p&&p.actionFunc&&(r.actionFunc=p.actionFunc));else if(e.properties){(e.propertyOrder?e.propertyOrder:Object.keys(e.properties)).map((function(i){var n=e.properties[i],a=t&&t[i];switch(n.type){case"array":r[i]=Z(n,a);break;case"object":r[i]=Q(n,a);break;default:r[i]=H(n,a)}}))}}return r}function Z(e,t){var r=[];if(e&&"array"===e.type){var i=t;a(i)&&a(e.default)&&typeof i!=typeof e.default&&(i=void 0);var n=a(i)?i:e.default;if("array"===e.format)if(q(n))n.map((function(t){r.push(Q(e.items,t))}));else{var o=Q(e.items,n);r.push(o)}else r=a(n)?n:[]}return r}function G(e,t){return"object"===e.type?Q(e,t):"array"===e.type?Z(e,t):H(e,t)}var V=f;function X(e,t){var r=t||[];if(e&&"{}"!==JSON.stringify(e))if(R(e))if(e.type&&"remote"===e.type&&e.config&&R(e.config)&&e.config.dataName&&a(e.localFilter)&&a(e.data)){var i=e.config.body;if(i&&!R(i))try{i=JSON.parse(i)}catch(e){i={}}r.push({id:e.config.id,dataName:e.config.dataName,body:i})}else{Object.keys(e).map((function(t){X(e[t],r)}))}else q(e)&&e.map((function(e){X(e,r)}));return r}function Y(e,t){var r=t||"data";return e.split("-").map((function(e){r=/^\d+$/.test(e)?r+"["+e+"]":r+"."+e})),r}function ee(e,t){var r=[];R(e)?Object.keys(e).map((function(i){var n=e[i],a=t?t+"-"+i:i;R(n)||q(n)?r.push({title:i,value:a,key:a,children:ee(n,a)}):r.push({title:i,value:a,key:a})})):q(e)&&e.map((function(e,i){var n=i.toString(),a=t?t+"-"+i:n;R(e)||q(e)?r.push({title:n,value:a,key:a,children:ee(e,a)}):r.push({title:n,value:a,key:a})}));return r}function te(e){var t=e.split("-");return t.pop(),t.join("-")}function re(e){var t=e.split("-"),r=t.pop();return[t.join("-"),r]}var ie=["key","enum","enumextra","items","input","boolean","number","color","url","textarea","text-editor","radio","single-select","select","date","date-time","time","json","codearea","htmlarea","quantity","box-style","dynamic-data","datasource","event","array","object","widget","widgets","widgetUUID","embedWidgetList"]}])}));
8
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JSONUtils=t():e.JSONUtils=t()}(this,(function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";function i(e){var t=JSON.stringify(e);return JSON.parse(t)}function n(e,t){return JSON.stringify(e)===JSON.stringify(t)}function a(e){var t=!1;return null!=e&&(t=!0),t}function o(e,t,r){var n=t;if(r&&(n=i(t)),e)for(var a=e.split("-"),o=0,u=a.length;o<u;o++){var p=a[o];p&&(n=n&&n[p])}return n}function u(e,t,r){var n=t;if(r&&(n=i(t)),e)for(var a=e.split("-"),o=0,u=a.length;o<u;o++){var p=a[o];if("0"!==p||"array"!==n.format&&"radio"!==n.format&&"single-select"!==n.format&&"select"!==n.format||!n.items){if(p){var d="0";if(n.propertyOrder)d=n.propertyOrder[p];else if(n.properties){d=Object.keys(n.properties)[p]}n=n.properties[d]}}else n=n.items}return n}function p(e,t,r){var n=t;if(r&&(n=i(t)),e&&n)for(var a=e.split("-"),o=0,u=a.length;o<u;o++){var p=a[o];p&&n.properties&&(n=n.properties[p])}return n}function d(e,t){for(var r=t,i="",n=e.split("-"),a=0,o=n.length;a<o;a++){var u=n[a];if("0"===u&&r.items)r=r.items,i=i?i+"-items":"items";else if(u){var p="0";if(r.propertyOrder)p=r.propertyOrder[u];else if(r.properties){p=Object.keys(r.properties)[u]}r=r.properties[p],i=i?i+"-"+p:p}}return i}function l(e,t){for(var r=t,i="",n=e.split("-"),a=0,o=n.length;a<o;a++){var u=n[a];if(u){var p=-1;if(r.propertyOrder)p=r.propertyOrder.indexOf(u),r=r.properties[u];else if(r.properties){p=Object.keys(r.properties).indexOf(u),r=r.properties[u]}else r.items&&(p=0,r=r.items);i=i?i+"-"+p:p.toString()}}return i}r.r(t),r.d(t,"getJsonDataByKeyRoute",(function(){return o})),r.d(t,"getSchemaByIndexRoute",(function(){return u})),r.d(t,"getSchemaByKeyRoute",(function(){return p})),r.d(t,"indexRoute2keyRoute",(function(){return d})),r.d(t,"keyRoute2indexRoute",(function(){return l})),r.d(t,"json2schema",(function(){return w})),r.d(t,"metaElemAnalyzer",(function(){return H})),r.d(t,"oldSchemaToNewSchema",(function(){return Q})),r.d(t,"schema2json",(function(){return X})),r.d(t,"schemaMetaList",(function(){return Y})),r.d(t,"dynamicDataAnalyzer",(function(){return ee})),r.d(t,"dataRoute2dataPath",(function(){return te})),r.d(t,"json2treeData",(function(){return re})),r.d(t,"objClone",(function(){return i})),r.d(t,"isEqual",(function(){return n})),r.d(t,"exitPropertie",(function(){return a})),r.d(t,"getParentKeyRoute",(function(){return ie})),r.d(t,"getParentKeyRoute_CurKey",(function(){return ne})),r.d(t,"getCurrentFormat",(function(){return T})),r.d(t,"isEmptySchema",(function(){return J})),r.d(t,"isEmptyWidgetSchema",(function(){return P})),r.d(t,"isUsedToWidgetConfig",(function(){return $})),r.d(t,"isNewSchemaData",(function(){return _})),r.d(t,"isBoxSchemaData",(function(){return B})),r.d(t,"isFirstSchemaData",(function(){return C})),r.d(t,"isStructuredSchema",(function(){return I})),r.d(t,"isSameParent",(function(){return L})),r.d(t,"getCurPosition",(function(){return U})),r.d(t,"getParentIndexRoute",(function(){return A})),r.d(t,"getNextIndexRoute",(function(){return K})),r.d(t,"getParentIndexRoute_CurIndex",(function(){return E})),r.d(t,"moveForward",(function(){return M})),r.d(t,"moveBackward",(function(){return W})),r.d(t,"isURL",(function(){return O})),r.d(t,"isString",(function(){return b})),r.d(t,"isNumber",(function(){return v})),r.d(t,"isBoolean",(function(){return j})),r.d(t,"isDateStr",(function(){return h})),r.d(t,"isDateTimeStr",(function(){return q})),r.d(t,"isTimeStr",(function(){return x})),r.d(t,"isArray",(function(){return R})),r.d(t,"isSelect",(function(){return S})),r.d(t,"isObject",(function(){return N})),r.d(t,"isQuantity",(function(){return D})),r.d(t,"isColor",(function(){return F})),r.d(t,"isFunction",(function(){return k})),r.d(t,"KeyWordList",(function(){return ae})),r.d(t,"TypeDataList",(function(){return y})),r.d(t,"EventTypeDataList",(function(){return m})),r.d(t,"DataSourceTypeList",(function(){return g}));var s={type:"object",format:"event",title:"事件",isRequired:!1,readOnly:!1,properties:{type:{type:"string",default:"emit",format:"typeSelect",enum:["on","emit"],enumextra:["on","emit"],title:"事件类型",isRequired:!1,readOnly:!1},trigger:{type:"string",format:"input",default:"eventName",title:"触发事件",description:"用于输入触发事件的名称",placeholder:"请输入触发事件的名称",isRequired:!1,readOnly:!1},eventData:{type:"string",title:"事件数据",format:"json",default:"{}",description:"传递给触发事件的数据对象",isRequired:!1,readOnly:!1}},required:["type","trigger","eventData"],propertyOrder:["type","trigger","eventData"]},f={type:"object",format:"datasource",title:"数据源",readOnly:!1,properties:{type:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["local","remote"],title:"数据源类型"},data:{type:"string",title:"本地json数据",placeholder:"请输入静态json数据",format:"json",default:"{}",description:"用于设置本地的静态json数据",isRequired:!0},filter:{type:"string",title:"过滤器",format:"codearea",default:"() => {}",description:"用于定义过滤当前数据的函数",isRequired:!0}},required:["type","data","filter"],propertyOrder:["type","data","filter"]},c={type:"local",config:{dataName:"",body:{},filter:"return data;"},data:"{}",localFilter:"return data;"},y={jsonschema:{type:"object",title:"jsonSchemaObject",properties:{func:{type:"object",format:"func",title:"功能设置",readOnly:!0,properties:{a:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["a"],propertyOrder:["a"]},style:{type:"object",format:"style",title:"样式设置",readOnly:!0,properties:{b:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["b"],propertyOrder:["b"]},data:{type:"object",format:"data",title:"数据设置",readOnly:!0,properties:{c:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["c"],propertyOrder:["c"]}},required:["func","style","data"],propertyOrder:["func","style","data"]},input:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},boolean:{type:"boolean",title:"布尔值",format:"boolean",default:!1,description:"",isRequired:!1,readOnly:!1},object:{type:"object",format:"object",title:"对象Object",description:"",isRequired:!1,readOnly:!1,properties:{a:{type:"string",title:"单文本框",format:"input",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["a"],propertyOrder:["a"]},array:{type:"array",format:"array",title:"数组Array",description:"",isRequired:!1,readOnly:!1,items:{type:"object",format:"object",title:"数组项",description:"",isRequired:!1,readOnly:!1,properties:{name:{type:"string",format:"input",title:"名字",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1}},required:["name"],propertyOrder:["name"]}},"empty-array":{type:"array",format:"array",title:"数组Array",description:"",items:{type:"object",format:"object",title:"数组项",description:"",properties:{}}},"empty-object":{type:"object",format:"object",title:"对象Object",description:"",properties:{}},url:{type:"string",title:"链接地址url",format:"url",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},textarea:{type:"string",title:"多行文本框",format:"textarea",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},color:{type:"string",title:"颜色color",format:"color",default:"#ffffff",description:"",isRequired:!1,readOnly:!1},image:{type:"string",title:"图片",format:"image",default:"",description:"上传图片",imgWidth:200,imgHeight:200,imgRatioReadOnly:!0,templateId:"",isRequired:!1},number:{type:"number",title:"数量number",format:"number",default:1,minimum:0,maximum:1e3,description:"",isRequired:!1,readOnly:!1},json:{type:"string",title:"json数据",format:"json",default:"{}",description:"",isRequired:!1,readOnly:!1},codearea:{type:"string",title:"函数类型",format:"codearea",placeholder:"请输入函数方法",default:'function func() { console.log("hello, world!"); }',description:"用于定义函数方法",isRequired:!1,readOnly:!1},htmlarea:{type:"string",title:"富文本",format:"htmlarea",placeholder:"请输入html代码片段",default:"<p>hello,world!</p>",description:"用于放置html代码片段",isRequired:!1,readOnly:!1},"text-editor":{type:"string",title:"富文本",format:"text-editor",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},date:{type:"string",title:"日期Date",format:"date",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},"date-time":{type:"string",title:"日期时间",format:"date-time",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},time:{type:"string",title:"时间Time",format:"time",default:"",description:"",placeholder:"",isRequired:!1,readOnly:!1},quantity:{type:"object",format:"quantity",title:"单位计量",isRequired:!1,readOnly:!1,properties:{unit:{type:"number",title:"单位数值",format:"number",default:50,minimum:0,maximum:1e3,description:"",isRequired:!1,readOnly:!1},quantity:{type:"string",format:"typeSelect",default:"px",enum:["px","rem","em","%"],enumextra:["px","rem","em","%"],title:"单位类型",isRequired:!1,readOnly:!1}},required:["unit","quantity"],propertyOrder:["unit","quantity"]},"box-style":{type:"object",format:"box-style",title:"盒子模型",isRequired:!1,readOnly:!1,properties:{unit:{type:"string",title:"单位数值",format:"string",default:"0",description:"",isRequired:!1,readOnly:!1},quantity:{type:"string",format:"typeSelect",default:"px",enum:["px","rem","em","%"],enumextra:["px","rem","em","%"],title:"单位类型",isRequired:!1,readOnly:!1}},required:["unit","quantity"],propertyOrder:["unit","quantity"]},radio:{type:"string",title:"单选",format:"radio",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},"single-select":{type:"string",title:"下拉单选",format:"single-select",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},select:{type:"array",title:"多选",format:"select",items:{type:"string",enum:["a","b","c"],enumextra:["选项a","选项b","选项c"]},description:"",isRequired:!1,readOnly:!1},"dynamic-data":{type:"object",format:"dynamic-data",title:"动态数据源",readOnly:!1,properties:{type:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["本地数据","接口数据"],title:"数据类型"},config:{type:"object",title:"接口配置",format:"object",description:"用于存放接口的配置数据(url、请求参数等)",isRequired:!0,properties:{dataName:{type:"string",default:"local",format:"typeSelect",enum:["local","remote"],enumextra:["本地数据","接口数据"],title:"数据类型"},body:{type:"object",title:"请求参数配置",format:"object",description:"用于配置当前接口的请求参数数值",isRequired:!0},filter:{type:"string",title:"过滤器函数体",format:"codearea",default:"return data;",description:"用于定义过滤接口数据",isRequired:!0}},required:["dataName","body","filter"],propertyOrder:["dataName","body","filter"]},data:{type:"string",title:"数据内容",format:"json",default:"{}",description:"用于存放DynamicData的数据内容",isRequired:!0},localFilter:{type:"string",title:"过滤器",format:"codearea",default:"return data;",description:"用于定义过滤本地数据",isRequired:!0}},required:["type","config","data","localFilter"],propertyOrder:["type","config","data","localFilter"]},datasource:f,event:s,widget:{type:"string",title:"内嵌组件数据",format:"widget",default:"{}",description:"用于存放内嵌组件的渲染相关数据",isRequired:!1,readOnly:!0}},m={on:{type:"object",format:"event",title:"事件",isRequired:!1,readOnly:!1,properties:{type:{type:"string",default:"on",format:"typeSelect",enum:["on","emit"],enumextra:["on","emit"],title:"事件类型",isRequired:!1,readOnly:!1},register:{type:"string",format:"input",default:"eventName",title:"注册事件",description:"用于输入注册事件的名称",placeholder:"请输入注册事件的名称",isRequired:!1,readOnly:!1},actionFunc:{type:"string",title:"执行函数",format:"codearea",default:"() => {}",description:"",isRequired:!1,readOnly:!1}},required:["type","register","actionFunc"],propertyOrder:["type","register","actionFunc"]},emit:s},g={local:f,remote:{type:"object",format:"datasource",title:"数据源",readOnly:!1,properties:{type:{type:"string",default:"remote",format:"typeSelect",enum:["local","remote"],enumextra:["local","remote"],title:"数据源类型"},data:{type:"string",title:"远程json数据",placeholder:"请输入远程json数据源地址",format:"url",default:"http://xxx",isRequired:!0,description:"用于设置获取元素数据的请求地址"},filter:{type:"string",title:"过滤器",format:"codearea",default:"() => {}",description:"用于定义过滤当前数据的函数",isRequired:!0}},required:["type","data","filter"],propertyOrder:["type","data","filter"]}};function O(e){return/^http[s]?:\/\/.*/.test(e)}function b(e){return"String"===Object.prototype.toString.call(e).slice(8,-1)}function v(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function j(e){return"Boolean"===Object.prototype.toString.call(e).slice(8,-1)}function h(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)}function q(e){return/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/.test(e)||/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/.test(e)}function x(e){return/^\d{2}:\d{2}:\d{2}$/.test(e)||/^\d{2}:\d{2}$/.test(e)}function R(e){var t=!1;return"Array"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function S(e){if(!R(e))return!1;for(var t=0,r=e.length;t<r;t++){if(!b(e[t]))return!1}return!0}function N(e){var t=!1;return"Object"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function D(e){var t=!1;return y.quantity.properties.quantity.enum.indexOf(e)>=0&&(t=!0),t}function F(e){return/^#[0-9a-f]{6}$/.test(e)||/^#[0-9a-f]{3}$/.test(e)}function k(e){var t=!1;return"Function"===Object.prototype.toString.call(e).slice(8,-1)&&(t=!0),t}function w(e){return e&&N(e)?function(e){var t;if(N(e)){var r=Object.keys(e);e.data&&e.filter&&2===r.length?t=R(e.data)||N(e.data)?i(g.local):i(g.remote):e.trigger&&e.eventData&&2===r.length?t=i(m.emit):e.register&&e.actionFunc&&2===r.length?t=i(m.on):e.quantity&&D(e.quantity)&&2===r.length?t=i(y.quantity):(t=i(y["empty-object"]),Object.keys(e).map((function(r){var i=e[r];t.properties[r]=w(i)})))}return t}(e):e&&R(e)?function(e){var t;if(e&&R(e))if(S(e)){(t=i(y.select)).items.enum=e;var r=t.items.enumextra.length,n=e.length;if(n>r)for(var a=r,o=n;a<o;a++)t.items.enumextra.push("选项"+e(a))}else{t=i(y["empty-array"]);var u=w(e[0]);t.items.properties=u.properties}return t}(e):function(e){var t="";if(j(e))t=i(y.boolean);else if(v(e))t=i(y.number);else if(O(e))t=i(y.url);else if(h(e))t=i(y.date);else if(q(e))t=i(y["date-time"]);else if(x(e))t=i(y.time);else if(F(e))t=i(y.color);else try{t=v(JSON.parse(e))?i(y.input):i(y.json)}catch(r){t=e&&e.length>30?i(y.textarea):i(y.input)}return t}(e)}function T(e){var t=e&&e.format;return t||(t=e&&e.type?e.type:"input"),t}function J(e){var t=!0;if(!e)return t;var r=T(e);return("object"===r&&e.properties&&e.propertyOrder&&e.propertyOrder.length>0||"array"===r&&e.items&&e.items.properties&&e.items.propertyOrder&&e.items.propertyOrder.length>0||e.type&&"array"!==e.type&&"object"!==e.type||e.format)&&(t=!1),t}function P(e){var t=!0;if(e&&("object"===T(e)&&e.properties&&e.propertyOrder&&e.propertyOrder.length>0)){var r=e.properties.func||{},i=e.properties.style||{},n=e.properties.data||{};(r.propertyOrder&&r.propertyOrder.length>0||i.propertyOrder&&i.propertyOrder.length>0||n.propertyOrder&&n.propertyOrder.length>0)&&(t=!1)}return t}function $(e){var t=!1;e&&("object"===T(e)&&e.properties&&e.propertyOrder&&e.properties.func&&e.properties.style&&e.properties.data&&(t=!0));return t}function _(e){var t=!1,r=e.lastUpdateTime,i=new Date("2020-07-29T07:30:00.691Z").getTime();return r&&new Date(r).getTime()>=i&&(t=!0),t}function B(e){var t=!1;return"object"!==e&&"func"!==e&&"style"!==e&&"data"!==e&&"widgets"!==e&&"func-schema"!==e&&"style-schema"!==e&&"data-schema"!==e&&"event-schema"!==e&&"widgets-schema"!==e||(t=!0),t}function C(e){var t=!1;return"func"!==e&&"style"!==e&&"data"!==e&&"props"!==e&&"event-schema"!==e&&"widgets"!==e||(t=!0),t}function I(e){var t=!0;return"object"===(e.type||T(e))&&e.propertyOrder&&e.properties?e.propertyOrder.map((function(r){var i=e.properties[r];"object"===(e.type||T(i))&&i.propertyOrder&&i.properties||(t=!1)})):t=!1,t}function L(e,t){var r=e.split("-"),i=t.split("-");return r.pop(),i.pop(),r.join("-")===i.join("-")}function U(e,t){for(var r=e.split("-"),i=t.split("-"),n="before",a=0,o=(r.length>i.length?i:r).length;a<o;a+=1){Number(r[a])>Number(i[a])&&(n="after")}return n}function A(e){var t=e.split("-");return t.pop(),t.join("-")}function K(e){var t=e.split("-"),r=t.pop(),i=Number(r)+1;return t.push(""+i),t.join("-")}function E(e){var t=e.split("-"),r=t.pop();return[t.join("-"),r]}function M(e){var t=e.split("-"),r=t.pop();return t.push(Number(r)-1),t.join("-")}function W(e){var t=e.split("-"),r=t.pop();return t.push(Number(r)+1),t.join("-")}function z(e,t){var r=t||{};if(N(e)&&"object"===e.type&&e.properties){(e.propertyOrder?e.propertyOrder:Object.keys(e.properties)).map((function(t){var i=e.properties[t];r=H(i,r)}))}return r}function H(e,t){var r=!t,i=t||{};if(e&&"{}"!==JSON.stringify(e)){var n=T(e);"object"===n||"func"===n||"style"===n||"data"===n?(!r&&i.object?i.object+=1:r||(i.object=1),i=z(e,i)):"array"===n?(!r&&i.array?i.array+=1:r||(i.array=1),i=z(e=e.items,i)):!r&&i[n]?i[n]+=1:r||(i[n]=1)}return i}function Q(e){var t=i(e);if(!t.title&&t.description&&(t.title=t.description),t.format||(t.format=T(t)),"quantity"!==t.format&&"array"!==t.format&&"datasource"!==t.format&&"event"!==t.format&&"object"!==t.format&&"radio"!==t.format&&"select"!==t.format||!a(t.default)||delete t.default,"radio"===t.format&&(t.type="string",t.enum&&t.enumextra&&(t.items={type:"string",enum:i(t.enum),enumextra:i(t.enumextra)},delete t.enum,delete t.enumextra)),"quantity"===t.format){var r=t.properties,n=i(y.quantity);if(r.quantity&&N(r.quantity)&&r.quantity.default){var o=r.quantity.default;n.properties.quantity.default="percent"===o?"%":o}t=n}if("datasource"===t.format){var u=t.properties,p=u.type&&u.type.default,d=u.data&&u.data.default,l=u.filter&&u.filter.default;"local"===p?(t=i(g.local)).properties.data.default=d?i(d):"{}":(t=i(g.remote)).properties.data.default=d?i(d):"http://xxx",t.properties.filter.default=l?i(l):"() => {}"}if("event"===t.format){var s=t.properties,f=s.type&&s.type.default;if("in"===f||"on"===f){var c=s.filter&&s.filter.default||"() => {}";t=i(m.on),s.actionFunc&&N(s.actionFunc)&&(t.properties.actionFunc.default=s.actionFunc.default||i(c))}else{var O=s.filter&&s.filter.default||"{}";t=i(m.emit),s.eventData&&N(s.eventData)&&(t.properties.eventData.default=s.eventData.default||i(O))}}return t.properties&&(t.required=Object.keys(t.properties),t.propertyOrder||(t.propertyOrder=t.required),t.propertyOrder.map((function(e){t.properties[e]=Q(t.properties[e])}))),t.items&&(t.items=Q(t.items)),t}function Z(e,t){var r="",i=t;a(i)&&a(e.default)&&typeof i!=typeof e.default&&(i=void 0);var n=a(i)?i:e.default;switch(e.type){case"string":if("typeSelect"===e.format)r=e.default;else if("color"===e.format)"#fff"!==n&&"#FFF"!==n||(n="#ffffff"),r=n||"#ffffff";else if("json"===e.format||"widget"===e.format){var o="";if(N(t)||R(t))o=t;else if(k(t)||""===t)o={};else try{o=JSON.parse(t)}catch(e){o={}}r=o}else r=a(n)?n:"";break;case"boolean":r=!!a(n)&&n;break;case"number":r=a(n)?n:1;break;default:r=a(n)?n:""}return r}function G(e,t){var r={},n=T(e);if(N(e)&&"object"===e.type){var o=e,u=t;a(u)&&a(o.default)&&typeof u!=typeof o.default&&(u=void 0);var p=a(u)?u:o.default;if("dynamic-data"===n)r=i(c),p&&N(p)&&"{}"!==JSON.stringify(p)&&(r=Object.assign(r,p));else if("datasource"===n)o.properties&&o.properties.type&&o.properties.type.default&&"local"===o.properties.type.default?(r={data:"{}",filter:"() => {}"},p&&p.data&&(r.data=p.data),p&&p.filter&&(r.filter=p.filter),"http://xxx"===r.data&&(r.data="{}")):(r={data:"http://xxx",filter:"() => {}"},p&&p.data&&(r.data=p.data),p&&p.filter&&(r.filter=p.filter),"{}"===r.data&&(r.data="http://xxx"));else if("event"===n)o.properties&&o.properties.type&&o.properties.type.default&&"emit"===o.properties.type.default?p&&"out"===p.type?r={trigger:p&&p.filter||"eventName",eventData:"{}"}:(r={trigger:"eventName",eventData:"{}"},p&&p.trigger&&(r.trigger=p.trigger),p&&p.eventData&&(r.eventData=p.eventData)):p&&"in"===p.type?r={register:"eventName",actionFunc:p&&p.filter||"() => {}"}:(r={register:"eventName",actionFunc:"() => {}"},p&&p.register&&(r.register=p.register),p&&p.actionFunc&&(r.actionFunc=p.actionFunc));else if(e.properties){(e.propertyOrder?e.propertyOrder:Object.keys(e.properties)).map((function(i){var n=e.properties[i],a=t&&t[i];switch(n.type){case"array":r[i]=V(n,a);break;case"object":r[i]=G(n,a);break;default:r[i]=Z(n,a)}}))}}return r}function V(e,t){var r=[];if(e&&"array"===e.type){var i=t;a(i)&&a(e.default)&&typeof i!=typeof e.default&&(i=void 0);var n=a(i)?i:e.default;if("array"===e.format)if(R(n))n.map((function(t){r.push(G(e.items,t))}));else{var o=G(e.items,n);r.push(o)}else r=a(n)?n:[]}return r}function X(e,t){return"object"===e.type?G(e,t):"array"===e.type?V(e,t):Z(e,t)}var Y=y;function ee(e,t){var r=t||[];if(e&&"{}"!==JSON.stringify(e))if(N(e))if(e.type&&"remote"===e.type&&e.config&&N(e.config)&&e.config.dataName&&a(e.localFilter)&&a(e.data)){var i=e.config.body;if(i&&!N(i))try{i=JSON.parse(i)}catch(e){i={}}r.push({id:e.config.id,dataName:e.config.dataName,body:i})}else{Object.keys(e).map((function(t){ee(e[t],r)}))}else R(e)&&e.map((function(e){ee(e,r)}));return r}function te(e,t){var r=t||"data";return e.split("-").map((function(e){r=/^\d+$/.test(e)?r+"["+e+"]":r+"."+e})),r}function re(e,t){var r=[];N(e)?Object.keys(e).map((function(i){var n=e[i],a=t?t+"-"+i:i;N(n)||R(n)?r.push({title:i,value:a,key:a,children:re(n,a)}):r.push({title:i,value:a,key:a})})):R(e)&&e.map((function(e,i){var n=i.toString(),a=t?t+"-"+i:n;N(e)||R(e)?r.push({title:n,value:a,key:a,children:re(e,a)}):r.push({title:n,value:a,key:a})}));return r}function ie(e){var t=e.split("-");return t.pop(),t.join("-")}function ne(e){var t=e.split("-"),r=t.pop();return[t.join("-"),r]}var ae=["key","enum","enumextra","items","input","boolean","number","color","url","textarea","text-editor","radio","single-select","select","date","date-time","time","json","codearea","htmlarea","quantity","box-style","dynamic-data","datasource","event","array","object","widget","widgets","widgetUUID","embedWidgetList"]}])}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wibetter/json-utils",
3
- "version": "1.2.29",
3
+ "version": "1.3.2",
4
4
  "description": "提供JSON相关的各类工具方法,比如schema转json、json转schema、json元数据分析等",
5
5
  "keywords": [
6
6
  "json工具包",