@next-core/brick-kit 2.122.4 → 2.122.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -10,7 +10,7 @@ import i18next, { getFixedT } from 'i18next';
10
10
  import { parsePath, createBrowserHistory, locationsAreEqual, createPath } from 'history';
11
11
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
12
12
  import { JsonStorage, toPath, computeRealRoutePath, hasOwnProperty, isObject, isEvaluable, transformAndInject, transform, trackContext, trackState, scanPermissionActionsInStoryboard, precookFunction, cook, resolveContextConcurrently, syncResolveContextConcurrently, shouldAllowRecursiveEvaluations, preevaluate, inject, deepFreeze, createProviderClass, loadScript, getTemplateDepsOfStoryboard, getDllAndDepsOfStoryboard, asyncProcessStoryboard, getDllAndDepsByResource, scanRouteAliasInStoryboard, prefetchScript, scanBricksInBrickConf, scanProcessorsInAny, matchPath, scanAppGetMenuInAny, asyncProcessBrick, restoreDynamicTemplates, scanStoryboard, mapCustomApisToNameAndNamespace } from '@next-core/brick-utils';
13
- import lodash, { set, get, difference, identity, uniqueId, cloneDeep, clamp, isNil, sortBy, merge, pick, orderBy, omit, findLastIndex, noop, isObject as isObject$1, isString } from 'lodash';
13
+ import _, { set, get, difference, identity, uniqueId, cloneDeep, clamp, isNil, sortBy, merge, pick, orderBy, omit, findLastIndex, noop, isObject as isObject$1, isString } from 'lodash';
14
14
  import moment from 'moment';
15
15
  import { pipes } from '@next-core/pipes';
16
16
  import yaml from 'js-yaml';
@@ -608,7 +608,7 @@ function supplyIndividual(variableName, mock) {
608
608
  return delegateMethods(Object, ["entries", "fromEntries", "keys", "values"]);
609
609
 
610
610
  case "_":
611
- return Object.fromEntries(Object.entries(lodash).filter(entry => !shouldOmitInLodash.has(entry[0])).concat(mock ? [["uniqueId", prefix => "".concat(prefix !== null && prefix !== void 0 ? prefix : "", "42")]] : []));
611
+ return Object.fromEntries(Object.entries(_).filter(entry => !shouldOmitInLodash.has(entry[0])).concat(mock ? [["uniqueId", prefix => "".concat(prefix !== null && prefix !== void 0 ? prefix : "", "42")]] : []));
612
612
 
613
613
  case "moment":
614
614
  return Object.assign(function () {
@@ -3384,6 +3384,11 @@ function _dev_only_updateTemplatePreviewSettings(appId, templateId, settings) {
3384
3384
  function _dev_only_updateSnippetPreviewSettings(appId, snippetData) {
3385
3385
  kernel._dev_only_updateSnippetPreviewSettings(appId, snippetData);
3386
3386
  }
3387
+ /* istanbul ignore next */
3388
+
3389
+ function _dev_only_updateFormPreviewSettings(appId, formId, settings) {
3390
+ kernel._dev_only_updateFormPreviewSettings(appId, formId, settings);
3391
+ }
3387
3392
  class Runtime {
3388
3393
  constructor() {
3389
3394
  _defineProperty$1(this, "registerBrickTemplate", registerBrickTemplate);
@@ -7949,6 +7954,9 @@ function applyColorTheme(options) {
7949
7954
  }
7950
7955
  }
7951
7956
 
7957
+ var formRenderer = "form-renderer.form-renderer";
7958
+ var filterProperties = ["brick", "slots", "properties", "events", "if", "context", "bricks", "mountPoint"];
7959
+
7952
7960
  class Kernel {
7953
7961
  constructor() {
7954
7962
  var _this = this;
@@ -8317,6 +8325,31 @@ class Kernel {
8317
8325
  }
8318
8326
  }
8319
8327
 
8328
+ _dev_only_updateFormPreviewSettings(appId, formId, formData) {
8329
+ var {
8330
+ routes
8331
+ } = this.bootstrapData.storyboards.find(item => item.app.id === appId);
8332
+ var previewPath = "${APP.homepage}/_dev_only_/form-preview/".concat(formId);
8333
+ var previewRouteIndex = routes.findIndex(route => route.path === previewPath);
8334
+ var newPreviewRoute = {
8335
+ path: previewPath,
8336
+ bricks: [{
8337
+ brick: formRenderer,
8338
+ properties: {
8339
+ formData: formData
8340
+ }
8341
+ }],
8342
+ menu: false,
8343
+ exact: true
8344
+ };
8345
+
8346
+ if (previewRouteIndex === -1) {
8347
+ routes.unshift(newPreviewRoute);
8348
+ } else {
8349
+ routes.splice(previewRouteIndex, 1, newPreviewRoute);
8350
+ }
8351
+ }
8352
+
8320
8353
  loadDepsOfStoryboard(storyboard) {
8321
8354
  return this.gracefullyLoadDeps(this._loadDepsOfStoryboard, storyboard);
8322
8355
  }
@@ -9017,6 +9050,299 @@ function listenOnTrackingContext(brick, trackingContextList, context) {
9017
9050
  }
9018
9051
  }
9019
9052
 
9053
+ function ExpandCustomForm(formData, brickConf) {
9054
+ var errorBrick = {
9055
+ brick: "presentational-bricks.brick-illustration",
9056
+ properties: {
9057
+ category: "default",
9058
+ header: {
9059
+ title: "参数错误"
9060
+ },
9061
+ mode: "guide",
9062
+ name: "search-empty"
9063
+ }
9064
+ };
9065
+
9066
+ try {
9067
+ var formStoryboard = getStoryboard([formData.formSchema], [], formData.fields);
9068
+ formStoryboard[0] = _.isEmpty(formStoryboard[0]) ? errorBrick : formStoryboard[0];
9069
+ return _objectSpread(_objectSpread({}, brickConf), {}, {
9070
+ brick: "div",
9071
+ slots: {
9072
+ "": {
9073
+ bricks: formStoryboard,
9074
+ type: "bricks"
9075
+ }
9076
+ }
9077
+ });
9078
+ } catch (error) {
9079
+ // eslint-disable-next-line no-console
9080
+ console.warn(error.message);
9081
+ return {
9082
+ brick: "div",
9083
+ slots: {
9084
+ "": {
9085
+ bricks: [errorBrick],
9086
+ type: "bricks"
9087
+ }
9088
+ }
9089
+ };
9090
+ }
9091
+ }
9092
+ function getDefaultProperties(_name, fields) {
9093
+ var field = fields.filter(item => item.id === _name)[0];
9094
+ var defaultValue = {};
9095
+
9096
+ if (field) {
9097
+ switch (field.type) {
9098
+ case "STRING":
9099
+ defaultValue = {
9100
+ brick: "forms.general-input",
9101
+ properties: {
9102
+ id: field.id,
9103
+ name: field.id,
9104
+ label: field.name,
9105
+ readOnly: field.limit.includes("readOnly"),
9106
+ required: field.limit.includes("required"),
9107
+ placeholder: field.description
9108
+ }
9109
+ };
9110
+ break;
9111
+
9112
+ case "INT":
9113
+ defaultValue = {
9114
+ brick: "forms.general-input-number",
9115
+ properties: {
9116
+ id: field.id,
9117
+ name: field.id,
9118
+ label: field.name,
9119
+ readOnly: field.limit.includes("readOnly"),
9120
+ required: field.limit.includes("required"),
9121
+ placeholder: field.description,
9122
+ precision: 0,
9123
+ inputBoxStyle: {
9124
+ width: "100%"
9125
+ }
9126
+ }
9127
+ };
9128
+ break;
9129
+
9130
+ case "BOOLEAN":
9131
+ defaultValue = {
9132
+ brick: "forms.general-switch",
9133
+ properties: {
9134
+ id: field.id,
9135
+ name: field.id,
9136
+ label: field.name,
9137
+ readOnly: field.limit.includes("readOnly"),
9138
+ required: field.limit.includes("required")
9139
+ }
9140
+ };
9141
+ break;
9142
+
9143
+ case "FLOAT":
9144
+ defaultValue = {
9145
+ brick: "forms.general-input-number",
9146
+ properties: {
9147
+ id: field.id,
9148
+ name: field.id,
9149
+ label: field.name,
9150
+ readOnly: field.limit.includes("readOnly"),
9151
+ required: field.limit.includes("required"),
9152
+ placeholder: field.description,
9153
+ inputBoxStyle: {
9154
+ width: "100%"
9155
+ }
9156
+ }
9157
+ };
9158
+ break;
9159
+
9160
+ case "ENUMERATED_SINGLE_OPTION":
9161
+ defaultValue = {
9162
+ brick: "forms.general-select",
9163
+ properties: {
9164
+ id: field.id,
9165
+ name: field.id,
9166
+ label: field.name,
9167
+ readOnly: field.limit.includes("readOnly"),
9168
+ required: field.limit.includes("required"),
9169
+ options: [{
9170
+ label: "选项一",
9171
+ value: 1
9172
+ }, {
9173
+ label: "选项二",
9174
+ value: 2
9175
+ }],
9176
+ placeholder: field.description,
9177
+ inputBoxStyle: {
9178
+ width: "100%"
9179
+ }
9180
+ }
9181
+ };
9182
+ break;
9183
+
9184
+ case "SELECT_MULTIPLE_ENUMERATED_TYPE":
9185
+ defaultValue = {
9186
+ brick: "forms.general-select",
9187
+ properties: {
9188
+ id: field.id,
9189
+ name: field.id,
9190
+ label: field.name,
9191
+ readOnly: field.limit.includes("readOnly"),
9192
+ required: field.limit.includes("required"),
9193
+ mode: "multiple",
9194
+ options: [{
9195
+ label: "选项一",
9196
+ value: 1
9197
+ }, {
9198
+ label: "选项二",
9199
+ value: 2
9200
+ }],
9201
+ placeholder: field.description,
9202
+ inputBoxStyle: {
9203
+ width: "100%"
9204
+ }
9205
+ }
9206
+ };
9207
+ break;
9208
+
9209
+ case "DATE":
9210
+ defaultValue = {
9211
+ brick: "forms.general-date-picker",
9212
+ properties: {
9213
+ id: field.id,
9214
+ name: field.id,
9215
+ label: field.name,
9216
+ readOnly: field.limit.includes("readOnly"),
9217
+ required: field.limit.includes("required"),
9218
+ placeholder: field.description
9219
+ }
9220
+ };
9221
+ break;
9222
+
9223
+ case "TIME":
9224
+ defaultValue = {
9225
+ brick: "forms.general-date-picker",
9226
+ properties: {
9227
+ id: field.id,
9228
+ name: field.id,
9229
+ label: field.name,
9230
+ readOnly: field.limit.includes("readOnly"),
9231
+ required: field.limit.includes("required"),
9232
+ placeholder: field.description
9233
+ }
9234
+ };
9235
+ break;
9236
+
9237
+ case "IP":
9238
+ defaultValue = {
9239
+ brick: "forms.general-input",
9240
+ properties: {
9241
+ id: field.id,
9242
+ name: field.id,
9243
+ label: field.name,
9244
+ readOnly: field.limit.includes("readOnly"),
9245
+ required: field.limit.includes("required"),
9246
+ placeholder: field.description,
9247
+ pattern: /((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/
9248
+ }
9249
+ };
9250
+ break;
9251
+
9252
+ case "JSON":
9253
+ defaultValue = {};
9254
+ break;
9255
+
9256
+ case "ARRAY":
9257
+ defaultValue = {};
9258
+ break;
9259
+
9260
+ case "STRUCTURE":
9261
+ defaultValue = {
9262
+ brick: "forms.cmdb-instance-select-panel",
9263
+ properties: {
9264
+ id: field.id,
9265
+ name: field.id,
9266
+ label: field.name,
9267
+ readOnly: field.limit.includes("readOnly"),
9268
+ required: field.limit.includes("required")
9269
+ }
9270
+ };
9271
+ break;
9272
+
9273
+ case "STRUCTURE_ARRAY":
9274
+ defaultValue = {
9275
+ brick: "forms.cmdb-instance-select-panel",
9276
+ properties: {
9277
+ id: field.id,
9278
+ name: field.id,
9279
+ label: field.name,
9280
+ readOnly: field.limit.includes("readOnly"),
9281
+ required: field.limit.includes("required")
9282
+ }
9283
+ };
9284
+ break;
9285
+
9286
+ default:
9287
+ defaultValue = {
9288
+ brick: "forms.general-input",
9289
+ properties: {
9290
+ id: field.id,
9291
+ name: field.id,
9292
+ label: field.name,
9293
+ readOnly: field.limit.includes("readOnly"),
9294
+ required: field.limit.includes("required"),
9295
+ placeholder: field.description
9296
+ }
9297
+ };
9298
+ break;
9299
+ }
9300
+ }
9301
+
9302
+ return defaultValue;
9303
+ }
9304
+ function getStoryboard(datasource, result, fields) {
9305
+ var _loop = function (i) {
9306
+ var dataItem = datasource[i];
9307
+ var resultItem = {}; //数据初始化:根据id,字段类型获取默认属性
9308
+
9309
+ var defaultProperties = getDefaultProperties(dataItem.id, fields); //数据初始化:与默认属性进行合并
9310
+
9311
+ Object.keys(defaultProperties).forEach(item => {
9312
+ if (!dataItem[item]) {
9313
+ dataItem[item] = defaultProperties[item];
9314
+ } else if (dataItem[item] && typeof dataItem[item] === "object") {
9315
+ dataItem[item] = _objectSpread(_objectSpread({}, defaultProperties[item]), dataItem[item]);
9316
+ }
9317
+ });
9318
+ Object.keys(dataItem).forEach(item => {
9319
+ if (filterProperties.includes(item)) {
9320
+ resultItem[item] = dataItem[item];
9321
+ }
9322
+ });
9323
+
9324
+ if (Array.isArray(dataItem.bricks)) {
9325
+ var _Object$keys;
9326
+
9327
+ resultItem["slots"] = _.groupBy(getStoryboard(dataItem.bricks, [], fields), "mountPoint");
9328
+ (_Object$keys = Object.keys(resultItem["slots"])) === null || _Object$keys === void 0 ? void 0 : _Object$keys.forEach(item => {
9329
+ resultItem.slots[item] = {
9330
+ bricks: resultItem.slots[item],
9331
+ type: "bricks"
9332
+ };
9333
+ });
9334
+ }
9335
+
9336
+ result[i] = resultItem;
9337
+ };
9338
+
9339
+ for (var i = 0; i < datasource.length; i++) {
9340
+ _loop(i);
9341
+ }
9342
+
9343
+ return result;
9344
+ }
9345
+
9020
9346
  class LocationContext {
9021
9347
  constructor(kernel, location) {
9022
9348
  _defineProperty$1(this, "query", void 0);
@@ -9513,6 +9839,12 @@ class LocationContext {
9513
9839
  yield _this6.kernel.loadDynamicBricksInBrickConf(expandedBrickConf);
9514
9840
  }
9515
9841
 
9842
+ if (brick.type === formRenderer) {
9843
+ var formData = brick.properties.formData;
9844
+ expandedBrickConf = ExpandCustomForm(formData, brickConf);
9845
+ yield _this6.kernel.loadDynamicBricksInBrickConf(expandedBrickConf);
9846
+ }
9847
+
9516
9848
  if (expandedBrickConf.exports) {
9517
9849
  for (var [prop, ctxName] of Object.entries(expandedBrickConf.exports)) {
9518
9850
  if (typeof ctxName === "string" && ctxName.startsWith("CTX.")) {
@@ -10283,6 +10615,15 @@ var getMockInfo = (requestUrl, method) => {
10283
10615
  return;
10284
10616
  };
10285
10617
 
10618
+ function registerFormRenderer() {
10619
+ customElements.get(formRenderer) || customElements.define(formRenderer, class FormElement extends HTMLElement {
10620
+ get $$typeof() {
10621
+ return "formRenderer";
10622
+ }
10623
+
10624
+ });
10625
+ }
10626
+
10286
10627
  class Router {
10287
10628
  constructor(kernel) {
10288
10629
  _defineProperty$1(this, "defaultCollapsed", false);
@@ -10491,6 +10832,7 @@ class Router {
10491
10832
 
10492
10833
  registerStoryboardFunctions((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.functions, storyboard.app);
10493
10834
  registerMock((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.mocks);
10835
+ registerFormRenderer();
10494
10836
  collectContract((_storyboard$meta3 = storyboard.meta) === null || _storyboard$meta3 === void 0 ? void 0 : _storyboard$meta3.contracts);
10495
10837
  }
10496
10838
 
@@ -10550,23 +10892,8 @@ class Router {
10550
10892
  };
10551
10893
 
10552
10894
  try {
10553
- var specificTemplatePreviewIndex = findLastIndex(storyboard.routes, route => route.path.startsWith("${APP.homepage}/_dev_only_/template-preview/"));
10554
- var specificSnippetPreviewIndex = findLastIndex(storyboard.routes, route => route.path.startsWith("${APP.homepage}/_dev_only_/snippet-preview/"));
10555
- var mergedRoutes = [...storyboard.routes.slice(0, specificTemplatePreviewIndex + 1), ...storyboard.routes.slice(0, specificSnippetPreviewIndex + 1), {
10556
- path: "${APP.homepage}/_dev_only_/template-preview/:templateId",
10557
- bricks: [{
10558
- brick: "span"
10559
- }],
10560
- menu: false,
10561
- exact: true
10562
- }, {
10563
- path: "${APP.homepage}/_dev_only_/snippet-preview/:snippetId",
10564
- bricks: [{
10565
- brick: "span"
10566
- }],
10567
- menu: false,
10568
- exact: true
10569
- }, ...storyboard.routes.slice(specificTemplatePreviewIndex + 1)];
10895
+ var mergedRoutes = _this3.MergePreviewRouter(storyboard.routes);
10896
+
10570
10897
  yield locationContext.mountRoutes(mergedRoutes, undefined, mountRoutesResult);
10571
10898
  } catch (error) {
10572
10899
  // eslint-disable-next-line no-console
@@ -10776,6 +11103,50 @@ class Router {
10776
11103
  subMenu: mountResult.menuBar.subMenu
10777
11104
  };
10778
11105
  }
11106
+
11107
+ MergePreviewRouter(router) {
11108
+ var mergedRoutes = router;
11109
+ var specificTemplatePreviewIndex = findLastIndex(mergedRoutes, route => route.path.startsWith("${APP.homepage}/_dev_only_/template-preview/"));
11110
+
11111
+ if (specificTemplatePreviewIndex > -1) {
11112
+ mergedRoutes = [...mergedRoutes.slice(0, specificTemplatePreviewIndex + 1), {
11113
+ path: "${APP.homepage}/_dev_only_/template-preview/:templateId",
11114
+ bricks: [{
11115
+ brick: "span"
11116
+ }],
11117
+ menu: false,
11118
+ exact: true
11119
+ }, ...mergedRoutes.slice(specificTemplatePreviewIndex + 1)];
11120
+ }
11121
+
11122
+ var specificSnippetPreviewIndex = findLastIndex(mergedRoutes, route => route.path.startsWith("${APP.homepage}/_dev_only_/snippet-preview/"));
11123
+
11124
+ if (specificSnippetPreviewIndex > -1) {
11125
+ mergedRoutes = [...mergedRoutes.slice(0, specificSnippetPreviewIndex + 1), {
11126
+ path: "${APP.homepage}/_dev_only_/snippet-preview/:snippetId",
11127
+ bricks: [{
11128
+ brick: "span"
11129
+ }],
11130
+ menu: false,
11131
+ exact: true
11132
+ }, ...mergedRoutes.slice(specificSnippetPreviewIndex + 1)];
11133
+ }
11134
+
11135
+ var specificFormPreviewIndex = findLastIndex(mergedRoutes, route => route.path.startsWith("${APP.homepage}/_dev_only_/form-preview/"));
11136
+
11137
+ if (specificFormPreviewIndex > -1) {
11138
+ mergedRoutes = [...mergedRoutes.slice(0, specificFormPreviewIndex + 1), {
11139
+ path: "${APP.homepage}/_dev_only_/form-preview/:FormId",
11140
+ bricks: [{
11141
+ brick: "span"
11142
+ }],
11143
+ menu: false,
11144
+ exact: true
11145
+ }, ...mergedRoutes.slice(specificFormPreviewIndex + 1)];
11146
+ }
11147
+
11148
+ return mergedRoutes;
11149
+ }
10779
11150
  /* istanbul ignore next */
10780
11151
 
10781
11152
 
@@ -13196,7 +13567,8 @@ var developHelper = {
13196
13567
  checkoutTplContext: noop,
13197
13568
  updateStoryboard: _dev_only_updateStoryboard,
13198
13569
  updateTemplatePreviewSettings: _dev_only_updateTemplatePreviewSettings,
13199
- updateSnippetPreviewSettings: _dev_only_updateSnippetPreviewSettings
13570
+ updateSnippetPreviewSettings: _dev_only_updateSnippetPreviewSettings,
13571
+ updateFormPreviewSettings: _dev_only_updateFormPreviewSettings
13200
13572
  };
13201
13573
 
13202
13574
  var _excluded$2 = ["type"];