@next-core/brick-kit 2.122.2 → 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.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/asyncToGenerator'), require('@babel/runtime/helpers/defineProperty'), require('@babel/runtime/helpers/objectSpread2'), require('antd'), require('@next-core/easyops-analytics'), require('react'), require('@next-core/brick-http'), require('@ant-design/icons'), require('i18next'), require('history'), require('@babel/runtime/helpers/objectWithoutProperties'), require('@next-core/brick-utils'), require('lodash'), require('moment'), require('@next-core/pipes'), require('js-yaml'), require('react-i18next'), require('@babel/runtime/helpers/esm/extends'), require('@next-core/illustrations'), require('@babel/runtime/helpers/decorate')) :
3
3
  typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/asyncToGenerator', '@babel/runtime/helpers/defineProperty', '@babel/runtime/helpers/objectSpread2', 'antd', '@next-core/easyops-analytics', 'react', '@next-core/brick-http', '@ant-design/icons', 'i18next', 'history', '@babel/runtime/helpers/objectWithoutProperties', '@next-core/brick-utils', 'lodash', 'moment', '@next-core/pipes', 'js-yaml', 'react-i18next', '@babel/runtime/helpers/esm/extends', '@next-core/illustrations', '@babel/runtime/helpers/decorate'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BrickKit = {}, global._asyncToGenerator$4, global._defineProperty$1, global._objectSpread, global.antd, global.easyopsAnalytics, global.React, global.brickHttp, global.icons, global.i18next, global.history$1, global._objectWithoutProperties, global.brickUtils, global.lodash, global.moment, global.pipes, global.yaml, global.reactI18next, global._extends, global.illustrations, global._decorate));
5
- })(this, (function (exports, _asyncToGenerator$4, _defineProperty$1, _objectSpread, antd, easyopsAnalytics, React, brickHttp, icons, i18next, history$1, _objectWithoutProperties, brickUtils, lodash, moment, pipes, yaml, reactI18next, _extends, illustrations, _decorate) { 'use strict';
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.BrickKit = {}, global._asyncToGenerator$4, global._defineProperty$1, global._objectSpread, global.antd, global.easyopsAnalytics, global.React, global.brickHttp, global.icons, global.i18next, global.history$1, global._objectWithoutProperties, global.brickUtils, global._, global.moment, global.pipes, global.yaml, global.reactI18next, global._extends, global.illustrations, global._decorate));
5
+ })(this, (function (exports, _asyncToGenerator$4, _defineProperty$1, _objectSpread, antd, easyopsAnalytics, React, brickHttp, icons, i18next, history$1, _objectWithoutProperties, brickUtils, _, moment, pipes, yaml, reactI18next, _extends, illustrations, _decorate) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -12,7 +12,7 @@
12
12
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
13
  var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
14
14
  var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
15
- var lodash__default = /*#__PURE__*/_interopDefaultLegacy(lodash);
15
+ var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
16
16
  var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
17
17
  var yaml__default = /*#__PURE__*/_interopDefaultLegacy(yaml);
18
18
  var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
@@ -563,24 +563,6 @@
563
563
  return _ref.apply(this, arguments);
564
564
  };
565
565
  }();
566
- /**
567
- * @description 搜索实例V3 (支持多属性排序)
568
- * @endpoint POST /v3/object/:objectId/instance/_search
569
- */
570
-
571
-
572
- var InstanceApi_postSearchV3 = /*#__PURE__*/function () {
573
- var _ref = _asyncToGenerator$3(function* (objectId, data, options) {
574
- return (
575
- /**! @contract easyops.api.cmdb.instance.PostSearchV3 */
576
- (yield brickHttp.http.post("api/gateway/cmdb.instance.PostSearchV3/v3/object/".concat(objectId, "/instance/_search"), data, options)).data
577
- );
578
- });
579
-
580
- return function InstanceApi_postSearchV3(_x, _x2, _x3) {
581
- return _ref.apply(this, arguments);
582
- };
583
- }();
584
566
 
585
567
  function supply(attemptToVisitGlobals, providedGlobalVariables, mock) {
586
568
  var globalVariables = _objectSpread__default["default"]({}, providedGlobalVariables); // Allow limited browser builtin values.
@@ -625,7 +607,7 @@
625
607
  return delegateMethods(Object, ["entries", "fromEntries", "keys", "values"]);
626
608
 
627
609
  case "_":
628
- return Object.fromEntries(Object.entries(lodash__default["default"]).filter(entry => !shouldOmitInLodash.has(entry[0])).concat(mock ? [["uniqueId", prefix => "".concat(prefix !== null && prefix !== void 0 ? prefix : "", "42")]] : []));
610
+ return Object.fromEntries(Object.entries(___default["default"]).filter(entry => !shouldOmitInLodash.has(entry[0])).concat(mock ? [["uniqueId", prefix => "".concat(prefix !== null && prefix !== void 0 ? prefix : "", "42")]] : []));
629
611
 
630
612
  case "moment":
631
613
  return Object.assign(function () {
@@ -954,7 +936,7 @@
954
936
  var result = preprocessTransformProperties(data, to, from, mapArray, options);
955
937
 
956
938
  for (var [propName, propValue] of Object.entries(result)) {
957
- lodash.set(props, propName, propValue);
939
+ _.set(props, propName, propValue);
958
940
  }
959
941
 
960
942
  return props;
@@ -1055,7 +1037,7 @@
1055
1037
 
1056
1038
  function preprocessTransformProperties(data, to, from, mapArray, options) {
1057
1039
  var props = {};
1058
- var processedData = from ? lodash.get(data, from) : data;
1040
+ var processedData = from ? _.get(data, from) : data;
1059
1041
 
1060
1042
  if (Array.isArray(to)) {
1061
1043
  for (var item of to) {
@@ -1098,7 +1080,7 @@
1098
1080
  return;
1099
1081
  }
1100
1082
 
1101
- var fromData = from ? lodash.get(data, from) : data;
1083
+ var fromData = from ? _.get(data, from) : data;
1102
1084
  var isArray = Array.isArray(fromData);
1103
1085
 
1104
1086
  if (!isArray && mapArray === true) {
@@ -1126,7 +1108,7 @@
1126
1108
 
1127
1109
 
1128
1110
  function transformIntermediateData(data, to, from, mapArray) {
1129
- var intermediateData = from ? lodash.get(data, from) : data;
1111
+ var intermediateData = from ? _.get(data, from) : data;
1130
1112
 
1131
1113
  if (!to) {
1132
1114
  return intermediateData;
@@ -1436,7 +1418,7 @@
1436
1418
  function _validatePermissions() {
1437
1419
  _validatePermissions = _asyncToGenerator__default["default"](function* (usedActions) {
1438
1420
  // Do not request known actions.
1439
- var actions = lodash.difference(usedActions, Array.from(permissionMap.keys()));
1421
+ var actions = _.difference(usedActions, Array.from(permissionMap.keys()));
1440
1422
 
1441
1423
  if (actions.length === 0) {
1442
1424
  return;
@@ -1571,7 +1553,7 @@
1571
1553
  return collectCoverage ? fakeImageFactory() : widgetId ? widgetImagesFactory(widgetId) : imagesFactory(app.id, app.isBuildPush);
1572
1554
 
1573
1555
  case "I18N":
1574
- return collectCoverage ? lodash.identity : widgetId ? widgetI18nFactory(widgetId) : i18next.getFixedT(null, getI18nNamespace("app", app.id));
1556
+ return collectCoverage ? _.identity : widgetId ? widgetI18nFactory(widgetId) : i18next.getFixedT(null, getI18nNamespace("app", app.id));
1575
1557
 
1576
1558
  case "I18N_TEXT":
1577
1559
  return collectCoverage ? fakeI18nText : i18nText;
@@ -2150,7 +2132,7 @@
2150
2132
 
2151
2133
  _defineProperty__default["default"](this, "state", void 0);
2152
2134
 
2153
- _defineProperty__default["default"](this, "id", lodash.uniqueId("tpl-ctx-"));
2135
+ _defineProperty__default["default"](this, "id", _.uniqueId("tpl-ctx-"));
2154
2136
 
2155
2137
  this.brick = brick;
2156
2138
  tplContextMap.set(this.id, this);
@@ -2382,7 +2364,7 @@
2382
2364
  return hash ? hash.substr(1) : null;
2383
2365
 
2384
2366
  case "APP":
2385
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, lodash.cloneDeep(app)), {}, {
2367
+ return _objectSpread__default["default"](_objectSpread__default["default"]({}, _.cloneDeep(app)), {}, {
2386
2368
  getMenu
2387
2369
  });
2388
2370
 
@@ -2576,7 +2558,7 @@
2576
2558
  }
2577
2559
 
2578
2560
  function propertyMergeAllOfArray(_ref, object) {
2579
- var _, _proxy$mergeArgs;
2561
+ var _$1, _proxy$mergeArgs;
2580
2562
 
2581
2563
  var {
2582
2564
  baseValue,
@@ -2610,14 +2592,14 @@
2610
2592
 
2611
2593
  case "insertAt":
2612
2594
  // Defaults to `-1`.
2613
- position = (_ = (_proxy$mergeArgs = proxy.mergeArgs) === null || _proxy$mergeArgs === void 0 ? void 0 : _proxy$mergeArgs[0]) !== null && _ !== void 0 ? _ : -1;
2595
+ position = (_$1 = (_proxy$mergeArgs = proxy.mergeArgs) === null || _proxy$mergeArgs === void 0 ? void 0 : _proxy$mergeArgs[0]) !== null && _$1 !== void 0 ? _$1 : -1;
2614
2596
 
2615
2597
  if (position < 0) {
2616
2598
  // It's counted from the end if position is negative.
2617
2599
  position += quasis.length;
2618
2600
  }
2619
2601
 
2620
- position = lodash.clamp(position, 0, computedBaseValue.length);
2602
+ position = _.clamp(position, 0, computedBaseValue.length);
2621
2603
  break;
2622
2604
  // istanbul ignore next: should never reach
2623
2605
 
@@ -2722,7 +2704,7 @@
2722
2704
 
2723
2705
  var expandableSlot = quasisMap.get(item.refSlot);
2724
2706
  var refPosition = (_item$refPosition = item.refPosition) !== null && _item$refPosition !== void 0 ? _item$refPosition : -1;
2725
- expandableSlot[lodash.clamp(refPosition < 0 ? expandableSlot.length + refPosition : refPosition, 0, expandableSlot.length - 1)].push(...((_externalSlots$item$$ = externalSlots === null || externalSlots === void 0 ? void 0 : (_externalSlots$item$$2 = externalSlots[item.$$reversedRef]) === null || _externalSlots$item$$2 === void 0 ? void 0 : _externalSlots$item$$2.bricks) !== null && _externalSlots$item$$ !== void 0 ? _externalSlots$item$$ : []));
2707
+ expandableSlot[_.clamp(refPosition < 0 ? expandableSlot.length + refPosition : refPosition, 0, expandableSlot.length - 1)].push(...((_externalSlots$item$$ = externalSlots === null || externalSlots === void 0 ? void 0 : (_externalSlots$item$$2 = externalSlots[item.$$reversedRef]) === null || _externalSlots$item$$2 === void 0 ? void 0 : _externalSlots$item$$2.bricks) !== null && _externalSlots$item$$ !== void 0 ? _externalSlots$item$$ : []));
2726
2708
  }
2727
2709
  }
2728
2710
 
@@ -2877,7 +2859,7 @@
2877
2859
  brick.textContent = propValue;
2878
2860
  } else {
2879
2861
  if (extractProps) {
2880
- lodash.set(brick, propName, propValue);
2862
+ _.set(brick, propName, propValue);
2881
2863
  } else {
2882
2864
  brick[propName] = propValue;
2883
2865
  }
@@ -2948,7 +2930,7 @@
2948
2930
  var defaultCollapsed = (_menuBar$menu = menuBar.menu) === null || _menuBar$menu === void 0 ? void 0 : _menuBar$menu.defaultCollapsed;
2949
2931
  var menu = yield processMenu(menuBar.menuId, context, kernel, hasSubMenu);
2950
2932
 
2951
- if (!lodash.isNil(defaultCollapsed)) {
2933
+ if (!_.isNil(defaultCollapsed)) {
2952
2934
  menu.defaultCollapsed = defaultCollapsed;
2953
2935
  }
2954
2936
 
@@ -3220,7 +3202,7 @@
3220
3202
  }
3221
3203
 
3222
3204
  function sortMenuItems(list) {
3223
- return lodash.sortBy(list, item => {
3205
+ return _.sortBy(list, item => {
3224
3206
  var _item$sort;
3225
3207
 
3226
3208
  return (_item$sort = item.sort) !== null && _item$sort !== void 0 ? _item$sort : -Infinity;
@@ -3401,6 +3383,11 @@
3401
3383
  function _dev_only_updateSnippetPreviewSettings(appId, snippetData) {
3402
3384
  kernel._dev_only_updateSnippetPreviewSettings(appId, snippetData);
3403
3385
  }
3386
+ /* istanbul ignore next */
3387
+
3388
+ function _dev_only_updateFormPreviewSettings(appId, formId, settings) {
3389
+ kernel._dev_only_updateFormPreviewSettings(appId, formId, settings);
3390
+ }
3404
3391
  class Runtime {
3405
3392
  constructor() {
3406
3393
  _defineProperty__default["default"](this, "registerBrickTemplate", registerBrickTemplate);
@@ -5841,51 +5828,6 @@
5841
5828
  };
5842
5829
  }();
5843
5830
 
5844
- var mocks = {
5845
- mockId: null,
5846
- mockList: []
5847
- };
5848
- function registerMock(useMocks) {
5849
- var _useMocks$mockList;
5850
-
5851
- if (useMocks) mocks = _objectSpread__default["default"](_objectSpread__default["default"]({}, useMocks), {}, {
5852
- mockList: (_useMocks$mockList = useMocks.mockList) === null || _useMocks$mockList === void 0 ? void 0 : _useMocks$mockList.map(item => {
5853
- var isFlowAPi = isCustomApiProvider(item.provider);
5854
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, item), {}, {
5855
- uri: "".concat(isFlowAPi ? item.uri.replace(/(.+?)\/(.+)/, (_match, p1, p2) => {
5856
- return "/".concat(p1, "(@\\d+\\.\\d+\\.\\d+)?/").concat(p2, "$");
5857
- }) : "/".concat(item.uri.split(".").slice(2).join("."), "$")).replace(/:\w+/g, "([^/]+)")
5858
- });
5859
- })
5860
- });
5861
- }
5862
- function getMockList() {
5863
- return mocks.mockList;
5864
- }
5865
- var getMockInfo = (requestUrl, method) => {
5866
- var transformGetMethod = method => {
5867
- if (method.toUpperCase() === "LIST") {
5868
- return "GET";
5869
- }
5870
-
5871
- return method === null || method === void 0 ? void 0 : method.toUpperCase();
5872
- };
5873
-
5874
- var item = mocks.mockList.find(item => new RegExp(item.uri).test(requestUrl) && transformGetMethod(item.method) === (method === null || method === void 0 ? void 0 : method.toUpperCase()));
5875
-
5876
- if (item) {
5877
- return {
5878
- url: requestUrl.replace(/(api\/gateway\/.+?)(@\d+\.\d+\.\d+)?\/(.+)/, (_match, p1, _p2, p3) => {
5879
- // 忽略版本
5880
- return "".concat(p1, "/").concat(p3);
5881
- }).replace(/(api\/gateway)/, "api/gateway/mock_server.proxy.".concat(mocks.mockId)),
5882
- mockId: mocks.mockId
5883
- };
5884
- }
5885
-
5886
- return;
5887
- };
5888
-
5889
5831
  var contractsMap = new Map();
5890
5832
  function collectContract(contracts) {
5891
5833
  contracts === null || contracts === void 0 ? void 0 : contracts.forEach(contract => {
@@ -6022,75 +5964,40 @@
6022
5964
  _fetchFlowApiDefinition2 = _asyncToGenerator__default["default"](function* (provider) {
6023
5965
  var [namespaceName, nameWithVersion] = provider.split("@");
6024
5966
  var [name, version] = nameWithVersion.split(":");
6025
- var isUseMock = getMockList().find(item => item.provider === "".concat(namespaceName, "@").concat(name));
6026
-
6027
- if (isUseMock) {
6028
- var _list$;
5967
+ var contract;
6029
5968
 
6030
- var {
6031
- list
6032
- } = yield InstanceApi_postSearchV3("FLOW_BUILDER_API_CONTRACT@EASYOPS", {
6033
- fields: ["name", "namespaceId", "endpoint", "response", "version", "serviceName"],
6034
- query: {
6035
- namespaceId: {
6036
- $eq: namespaceName
6037
- },
6038
- name: {
6039
- $eq: name
6040
- }
5969
+ if (contract = getContract("".concat(namespaceName, ".").concat(name))) {
5970
+ return {
5971
+ name: contract.name,
5972
+ namespace: contract.namespaceId,
5973
+ serviceName: contract.serviceName,
5974
+ version: contract.version,
5975
+ contract: {
5976
+ endpoint: contract.endpoint,
5977
+ response: contract.response
6041
5978
  }
6042
- });
6043
-
6044
- if ((_list$ = list[0]) !== null && _list$ !== void 0 && _list$.instanceId) {
6045
- var _list$2, _list$3;
6046
-
6047
- return {
6048
- name: list[0].name,
6049
- namespace: (_list$2 = list[0]) === null || _list$2 === void 0 ? void 0 : _list$2.namespaceId,
6050
- serviceName: (_list$3 = list[0]) === null || _list$3 === void 0 ? void 0 : _list$3.serviceName,
6051
- version: list[0].version,
6052
- contract: {
6053
- endpoint: list[0].endpoint,
6054
- response: list[0].response
6055
- }
6056
- };
6057
- }
5979
+ };
6058
5980
  } else {
6059
- var contract;
5981
+ var {
5982
+ contractData
5983
+ } = yield ContractApi_searchSingleContract({
5984
+ contractName: "".concat(namespaceName, ".").concat(name),
5985
+ version
5986
+ }); // return undefined if don't found contract
5987
+
5988
+ if (contractData) {
5989
+ var _contractData$namespa, _contractData$namespa2;
6060
5990
 
6061
- if (contract = getContract("".concat(namespaceName, ".").concat(name))) {
6062
5991
  return {
6063
- name: contract.name,
6064
- namespace: contract.namespaceId,
6065
- serviceName: contract.serviceName,
6066
- version: contract.version,
5992
+ name: contractData.name,
5993
+ namespace: (_contractData$namespa = contractData.namespace) === null || _contractData$namespa === void 0 ? void 0 : (_contractData$namespa2 = _contractData$namespa[0]) === null || _contractData$namespa2 === void 0 ? void 0 : _contractData$namespa2.name,
5994
+ serviceName: contractData.serviceName,
5995
+ version: contractData.version,
6067
5996
  contract: {
6068
- endpoint: contract.endpoint,
6069
- response: contract.response
5997
+ endpoint: contractData.endpoint,
5998
+ response: contractData.response
6070
5999
  }
6071
6000
  };
6072
- } else {
6073
- var {
6074
- contractData
6075
- } = yield ContractApi_searchSingleContract({
6076
- contractName: "".concat(namespaceName, ".").concat(name),
6077
- version
6078
- }); // return undefined if don't found contract
6079
-
6080
- if (contractData) {
6081
- var _contractData$namespa, _contractData$namespa2;
6082
-
6083
- return {
6084
- name: contractData.name,
6085
- namespace: (_contractData$namespa = contractData.namespace) === null || _contractData$namespa === void 0 ? void 0 : (_contractData$namespa2 = _contractData$namespa[0]) === null || _contractData$namespa2 === void 0 ? void 0 : _contractData$namespa2.name,
6086
- serviceName: contractData.serviceName,
6087
- version: contractData.version,
6088
- contract: {
6089
- endpoint: contractData.endpoint,
6090
- response: contractData.response
6091
- }
6092
- };
6093
- }
6094
6001
  }
6095
6002
  }
6096
6003
  });
@@ -6940,7 +6847,7 @@
6940
6847
  var app = storyboard.app;
6941
6848
 
6942
6849
  if (app) {
6943
- app.config = brickUtils.deepFreeze(lodash.merge({}, app.defaultConfig, app.userConfig));
6850
+ app.config = brickUtils.deepFreeze(_.merge({}, app.defaultConfig, app.userConfig));
6944
6851
 
6945
6852
  if (app.locales) {
6946
6853
  (function () {
@@ -7909,6 +7816,19 @@
7909
7816
  });
7910
7817
  presetDarkPalettes[key].primary = presetDarkPalettes[key][5];
7911
7818
  });
7819
+ presetPalettes.red;
7820
+ presetPalettes.volcano;
7821
+ presetPalettes.gold;
7822
+ presetPalettes.orange;
7823
+ presetPalettes.yellow;
7824
+ presetPalettes.lime;
7825
+ presetPalettes.green;
7826
+ presetPalettes.cyan;
7827
+ presetPalettes.blue;
7828
+ presetPalettes.geekblue;
7829
+ presetPalettes.purple;
7830
+ presetPalettes.magenta;
7831
+ presetPalettes.grey;
7912
7832
 
7913
7833
  function getStyleByBaseColors(theme, baseColors, backgroundColor) {
7914
7834
  return (theme === "dark" ? getDarkStyle : getLightStyle)("".concat(getCssVariableDefinitionsByPalettes(generatePalettes(baseColors, theme, backgroundColor), theme), "\n").concat(getMigratedCssVariableDefinitions(theme, baseColors, backgroundColor)));
@@ -8033,6 +7953,9 @@
8033
7953
  }
8034
7954
  }
8035
7955
 
7956
+ var formRenderer = "form-renderer.form-renderer";
7957
+ var filterProperties = ["brick", "slots", "properties", "events", "if", "context", "bricks", "mountPoint"];
7958
+
8036
7959
  class Kernel {
8037
7960
  constructor() {
8038
7961
  var _this = this;
@@ -8365,7 +8288,7 @@
8365
8288
  path: previewPath,
8366
8289
  bricks: [_objectSpread__default["default"]({
8367
8290
  brick: templateId
8368
- }, lodash.pick(settings, "properties", "events", "lifeCycle", "context"))],
8291
+ }, _.pick(settings, "properties", "events", "lifeCycle", "context"))],
8369
8292
  menu: false,
8370
8293
  exact: true
8371
8294
  };
@@ -8401,6 +8324,31 @@
8401
8324
  }
8402
8325
  }
8403
8326
 
8327
+ _dev_only_updateFormPreviewSettings(appId, formId, formData) {
8328
+ var {
8329
+ routes
8330
+ } = this.bootstrapData.storyboards.find(item => item.app.id === appId);
8331
+ var previewPath = "${APP.homepage}/_dev_only_/form-preview/".concat(formId);
8332
+ var previewRouteIndex = routes.findIndex(route => route.path === previewPath);
8333
+ var newPreviewRoute = {
8334
+ path: previewPath,
8335
+ bricks: [{
8336
+ brick: formRenderer,
8337
+ properties: {
8338
+ formData: formData
8339
+ }
8340
+ }],
8341
+ menu: false,
8342
+ exact: true
8343
+ };
8344
+
8345
+ if (previewRouteIndex === -1) {
8346
+ routes.unshift(newPreviewRoute);
8347
+ } else {
8348
+ routes.splice(previewRouteIndex, 1, newPreviewRoute);
8349
+ }
8350
+ }
8351
+
8404
8352
  loadDepsOfStoryboard(storyboard) {
8405
8353
  return this.gracefullyLoadDeps(this._loadDepsOfStoryboard, storyboard);
8406
8354
  }
@@ -8696,7 +8644,7 @@
8696
8644
  return [];
8697
8645
  }
8698
8646
 
8699
- return lodash.sortBy(allRelatedApps.filter(item => item.objectId === thisApp.objectId), ["order"]);
8647
+ return _.sortBy(allRelatedApps.filter(item => item.objectId === thisApp.objectId), ["order"]);
8700
8648
  })();
8701
8649
  }
8702
8650
 
@@ -8765,7 +8713,7 @@
8765
8713
 
8766
8714
  var currentAppId = this.currentApp.id;
8767
8715
  var currentStoryboard = this.bootstrapData.storyboards.find(storyboard => storyboard.app.id === currentAppId);
8768
- return ((_cloneDeep = lodash.cloneDeep((_currentStoryboard$me = currentStoryboard.meta) === null || _currentStoryboard$me === void 0 ? void 0 : _currentStoryboard$me.menus)) !== null && _cloneDeep !== void 0 ? _cloneDeep : []).filter(menu => menu.menuId === menuId).map(menu => _objectSpread__default["default"](_objectSpread__default["default"]({}, menu), {}, {
8716
+ return ((_cloneDeep = _.cloneDeep((_currentStoryboard$me = currentStoryboard.meta) === null || _currentStoryboard$me === void 0 ? void 0 : _currentStoryboard$me.menus)) !== null && _cloneDeep !== void 0 ? _cloneDeep : []).filter(menu => menu.menuId === menuId).map(menu => _objectSpread__default["default"](_objectSpread__default["default"]({}, menu), {}, {
8769
8717
  app: [{
8770
8718
  appId: currentAppId
8771
8719
  }]
@@ -9101,6 +9049,299 @@
9101
9049
  }
9102
9050
  }
9103
9051
 
9052
+ function ExpandCustomForm(formData, brickConf) {
9053
+ var errorBrick = {
9054
+ brick: "presentational-bricks.brick-illustration",
9055
+ properties: {
9056
+ category: "default",
9057
+ header: {
9058
+ title: "参数错误"
9059
+ },
9060
+ mode: "guide",
9061
+ name: "search-empty"
9062
+ }
9063
+ };
9064
+
9065
+ try {
9066
+ var formStoryboard = getStoryboard([formData.formSchema], [], formData.fields);
9067
+ formStoryboard[0] = ___default["default"].isEmpty(formStoryboard[0]) ? errorBrick : formStoryboard[0];
9068
+ return _objectSpread__default["default"](_objectSpread__default["default"]({}, brickConf), {}, {
9069
+ brick: "div",
9070
+ slots: {
9071
+ "": {
9072
+ bricks: formStoryboard,
9073
+ type: "bricks"
9074
+ }
9075
+ }
9076
+ });
9077
+ } catch (error) {
9078
+ // eslint-disable-next-line no-console
9079
+ console.warn(error.message);
9080
+ return {
9081
+ brick: "div",
9082
+ slots: {
9083
+ "": {
9084
+ bricks: [errorBrick],
9085
+ type: "bricks"
9086
+ }
9087
+ }
9088
+ };
9089
+ }
9090
+ }
9091
+ function getDefaultProperties(_name, fields) {
9092
+ var field = fields.filter(item => item.id === _name)[0];
9093
+ var defaultValue = {};
9094
+
9095
+ if (field) {
9096
+ switch (field.type) {
9097
+ case "STRING":
9098
+ defaultValue = {
9099
+ brick: "forms.general-input",
9100
+ properties: {
9101
+ id: field.id,
9102
+ name: field.id,
9103
+ label: field.name,
9104
+ readOnly: field.limit.includes("readOnly"),
9105
+ required: field.limit.includes("required"),
9106
+ placeholder: field.description
9107
+ }
9108
+ };
9109
+ break;
9110
+
9111
+ case "INT":
9112
+ defaultValue = {
9113
+ brick: "forms.general-input-number",
9114
+ properties: {
9115
+ id: field.id,
9116
+ name: field.id,
9117
+ label: field.name,
9118
+ readOnly: field.limit.includes("readOnly"),
9119
+ required: field.limit.includes("required"),
9120
+ placeholder: field.description,
9121
+ precision: 0,
9122
+ inputBoxStyle: {
9123
+ width: "100%"
9124
+ }
9125
+ }
9126
+ };
9127
+ break;
9128
+
9129
+ case "BOOLEAN":
9130
+ defaultValue = {
9131
+ brick: "forms.general-switch",
9132
+ properties: {
9133
+ id: field.id,
9134
+ name: field.id,
9135
+ label: field.name,
9136
+ readOnly: field.limit.includes("readOnly"),
9137
+ required: field.limit.includes("required")
9138
+ }
9139
+ };
9140
+ break;
9141
+
9142
+ case "FLOAT":
9143
+ defaultValue = {
9144
+ brick: "forms.general-input-number",
9145
+ properties: {
9146
+ id: field.id,
9147
+ name: field.id,
9148
+ label: field.name,
9149
+ readOnly: field.limit.includes("readOnly"),
9150
+ required: field.limit.includes("required"),
9151
+ placeholder: field.description,
9152
+ inputBoxStyle: {
9153
+ width: "100%"
9154
+ }
9155
+ }
9156
+ };
9157
+ break;
9158
+
9159
+ case "ENUMERATED_SINGLE_OPTION":
9160
+ defaultValue = {
9161
+ brick: "forms.general-select",
9162
+ properties: {
9163
+ id: field.id,
9164
+ name: field.id,
9165
+ label: field.name,
9166
+ readOnly: field.limit.includes("readOnly"),
9167
+ required: field.limit.includes("required"),
9168
+ options: [{
9169
+ label: "选项一",
9170
+ value: 1
9171
+ }, {
9172
+ label: "选项二",
9173
+ value: 2
9174
+ }],
9175
+ placeholder: field.description,
9176
+ inputBoxStyle: {
9177
+ width: "100%"
9178
+ }
9179
+ }
9180
+ };
9181
+ break;
9182
+
9183
+ case "SELECT_MULTIPLE_ENUMERATED_TYPE":
9184
+ defaultValue = {
9185
+ brick: "forms.general-select",
9186
+ properties: {
9187
+ id: field.id,
9188
+ name: field.id,
9189
+ label: field.name,
9190
+ readOnly: field.limit.includes("readOnly"),
9191
+ required: field.limit.includes("required"),
9192
+ mode: "multiple",
9193
+ options: [{
9194
+ label: "选项一",
9195
+ value: 1
9196
+ }, {
9197
+ label: "选项二",
9198
+ value: 2
9199
+ }],
9200
+ placeholder: field.description,
9201
+ inputBoxStyle: {
9202
+ width: "100%"
9203
+ }
9204
+ }
9205
+ };
9206
+ break;
9207
+
9208
+ case "DATE":
9209
+ defaultValue = {
9210
+ brick: "forms.general-date-picker",
9211
+ properties: {
9212
+ id: field.id,
9213
+ name: field.id,
9214
+ label: field.name,
9215
+ readOnly: field.limit.includes("readOnly"),
9216
+ required: field.limit.includes("required"),
9217
+ placeholder: field.description
9218
+ }
9219
+ };
9220
+ break;
9221
+
9222
+ case "TIME":
9223
+ defaultValue = {
9224
+ brick: "forms.general-date-picker",
9225
+ properties: {
9226
+ id: field.id,
9227
+ name: field.id,
9228
+ label: field.name,
9229
+ readOnly: field.limit.includes("readOnly"),
9230
+ required: field.limit.includes("required"),
9231
+ placeholder: field.description
9232
+ }
9233
+ };
9234
+ break;
9235
+
9236
+ case "IP":
9237
+ defaultValue = {
9238
+ brick: "forms.general-input",
9239
+ properties: {
9240
+ id: field.id,
9241
+ name: field.id,
9242
+ label: field.name,
9243
+ readOnly: field.limit.includes("readOnly"),
9244
+ required: field.limit.includes("required"),
9245
+ placeholder: field.description,
9246
+ 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*$))/
9247
+ }
9248
+ };
9249
+ break;
9250
+
9251
+ case "JSON":
9252
+ defaultValue = {};
9253
+ break;
9254
+
9255
+ case "ARRAY":
9256
+ defaultValue = {};
9257
+ break;
9258
+
9259
+ case "STRUCTURE":
9260
+ defaultValue = {
9261
+ brick: "forms.cmdb-instance-select-panel",
9262
+ properties: {
9263
+ id: field.id,
9264
+ name: field.id,
9265
+ label: field.name,
9266
+ readOnly: field.limit.includes("readOnly"),
9267
+ required: field.limit.includes("required")
9268
+ }
9269
+ };
9270
+ break;
9271
+
9272
+ case "STRUCTURE_ARRAY":
9273
+ defaultValue = {
9274
+ brick: "forms.cmdb-instance-select-panel",
9275
+ properties: {
9276
+ id: field.id,
9277
+ name: field.id,
9278
+ label: field.name,
9279
+ readOnly: field.limit.includes("readOnly"),
9280
+ required: field.limit.includes("required")
9281
+ }
9282
+ };
9283
+ break;
9284
+
9285
+ default:
9286
+ defaultValue = {
9287
+ brick: "forms.general-input",
9288
+ properties: {
9289
+ id: field.id,
9290
+ name: field.id,
9291
+ label: field.name,
9292
+ readOnly: field.limit.includes("readOnly"),
9293
+ required: field.limit.includes("required"),
9294
+ placeholder: field.description
9295
+ }
9296
+ };
9297
+ break;
9298
+ }
9299
+ }
9300
+
9301
+ return defaultValue;
9302
+ }
9303
+ function getStoryboard(datasource, result, fields) {
9304
+ var _loop = function (i) {
9305
+ var dataItem = datasource[i];
9306
+ var resultItem = {}; //数据初始化:根据id,字段类型获取默认属性
9307
+
9308
+ var defaultProperties = getDefaultProperties(dataItem.id, fields); //数据初始化:与默认属性进行合并
9309
+
9310
+ Object.keys(defaultProperties).forEach(item => {
9311
+ if (!dataItem[item]) {
9312
+ dataItem[item] = defaultProperties[item];
9313
+ } else if (dataItem[item] && typeof dataItem[item] === "object") {
9314
+ dataItem[item] = _objectSpread__default["default"](_objectSpread__default["default"]({}, defaultProperties[item]), dataItem[item]);
9315
+ }
9316
+ });
9317
+ Object.keys(dataItem).forEach(item => {
9318
+ if (filterProperties.includes(item)) {
9319
+ resultItem[item] = dataItem[item];
9320
+ }
9321
+ });
9322
+
9323
+ if (Array.isArray(dataItem.bricks)) {
9324
+ var _Object$keys;
9325
+
9326
+ resultItem["slots"] = ___default["default"].groupBy(getStoryboard(dataItem.bricks, [], fields), "mountPoint");
9327
+ (_Object$keys = Object.keys(resultItem["slots"])) === null || _Object$keys === void 0 ? void 0 : _Object$keys.forEach(item => {
9328
+ resultItem.slots[item] = {
9329
+ bricks: resultItem.slots[item],
9330
+ type: "bricks"
9331
+ };
9332
+ });
9333
+ }
9334
+
9335
+ result[i] = resultItem;
9336
+ };
9337
+
9338
+ for (var i = 0; i < datasource.length; i++) {
9339
+ _loop(i);
9340
+ }
9341
+
9342
+ return result;
9343
+ }
9344
+
9104
9345
  class LocationContext {
9105
9346
  constructor(kernel, location) {
9106
9347
  _defineProperty__default["default"](this, "query", void 0);
@@ -9217,7 +9458,7 @@
9217
9458
  // This enables two apps with relationship of parent-child of homepage.
9218
9459
 
9219
9460
 
9220
- var sortedStoryboards = lodash.orderBy(storyboards, storyboard => {
9461
+ var sortedStoryboards = _.orderBy(storyboards, storyboard => {
9221
9462
  var _storyboard$app$homep, _storyboard$app, _storyboard$app$homep2;
9222
9463
 
9223
9464
  return (_storyboard$app$homep = (_storyboard$app = storyboard.app) === null || _storyboard$app === void 0 ? void 0 : (_storyboard$app$homep2 = _storyboard$app.homepage) === null || _storyboard$app$homep2 === void 0 ? void 0 : _storyboard$app$homep2.length) !== null && _storyboard$app$homep !== void 0 ? _storyboard$app$homep : 0;
@@ -9385,7 +9626,7 @@
9385
9626
  } // 静态菜单配置,仅在有值时才设置,这样可以让菜单设置也具有按路由层级覆盖的能力。
9386
9627
 
9387
9628
 
9388
- var otherMenuConf = lodash.omit(menuConf, ["injectDeep", "type"]);
9629
+ var otherMenuConf = _.omit(menuConf, ["injectDeep", "type"]);
9389
9630
  var injectedMenuConf = injectDeep !== false ? computeRealValue(otherMenuConf, context, true) : otherMenuConf;
9390
9631
  var {
9391
9632
  sidebarMenu,
@@ -9563,7 +9804,7 @@
9563
9804
  if (brickConf[symbolForComputedPropsFromProxy]) {
9564
9805
  Object.entries(brickConf[symbolForComputedPropsFromProxy]).forEach(_ref2 => {
9565
9806
  var [propName, propValue] = _ref2;
9566
- lodash.set(brick.properties, propName, propValue);
9807
+ _.set(brick.properties, propName, propValue);
9567
9808
  });
9568
9809
  }
9569
9810
 
@@ -9597,6 +9838,12 @@
9597
9838
  yield _this6.kernel.loadDynamicBricksInBrickConf(expandedBrickConf);
9598
9839
  }
9599
9840
 
9841
+ if (brick.type === formRenderer) {
9842
+ var formData = brick.properties.formData;
9843
+ expandedBrickConf = ExpandCustomForm(formData, brickConf);
9844
+ yield _this6.kernel.loadDynamicBricksInBrickConf(expandedBrickConf);
9845
+ }
9846
+
9600
9847
  if (expandedBrickConf.exports) {
9601
9848
  for (var [prop, ctxName] of Object.entries(expandedBrickConf.exports)) {
9602
9849
  if (typeof ctxName === "string" && ctxName.startsWith("CTX.")) {
@@ -9986,7 +10233,7 @@
9986
10233
  function _fetchData() {
9987
10234
  _fetchData = _asyncToGenerator__default["default"](function* () {
9988
10235
  var value = yield promise;
9989
- data = field === null || field === undefined ? value : lodash.get(value, field); // The fetched data and its inner objects should never be *injected* again.
10236
+ data = field === null || field === undefined ? value : _.get(value, field); // The fetched data and its inner objects should never be *injected* again.
9990
10237
 
9991
10238
  recursiveMarkAsInjected(data);
9992
10239
  });
@@ -10227,7 +10474,7 @@
10227
10474
  function _fetchData() {
10228
10475
  _fetchData = _asyncToGenerator__default["default"](function* () {
10229
10476
  var value = yield promise;
10230
- data = field === null || field === undefined ? value : lodash.get(value, field); // The fetched data and its inner objects should never be *injected* again.
10477
+ data = field === null || field === undefined ? value : _.get(value, field); // The fetched data and its inner objects should never be *injected* again.
10231
10478
 
10232
10479
  recursiveMarkAsInjected(data);
10233
10480
  });
@@ -10325,6 +10572,57 @@
10325
10572
  return defaultCollapsed || defaultCollapsedBreakpoint && document.documentElement.clientWidth < defaultCollapsedBreakpoint;
10326
10573
  }
10327
10574
 
10575
+ var mocks = {
10576
+ mockId: null,
10577
+ mockList: []
10578
+ };
10579
+ function registerMock(useMocks) {
10580
+ var _useMocks$mockList;
10581
+
10582
+ if (useMocks) mocks = _objectSpread__default["default"](_objectSpread__default["default"]({}, useMocks), {}, {
10583
+ mockList: (_useMocks$mockList = useMocks.mockList) === null || _useMocks$mockList === void 0 ? void 0 : _useMocks$mockList.map(item => {
10584
+ var isFlowAPi = isCustomApiProvider(item.provider);
10585
+ return _objectSpread__default["default"](_objectSpread__default["default"]({}, item), {}, {
10586
+ uri: "".concat(isFlowAPi ? item.uri.replace(/(.+?)\/(.+)/, (_match, p1, p2) => {
10587
+ return "/".concat(p1, "(@\\d+\\.\\d+\\.\\d+)?/").concat(p2, "$");
10588
+ }) : "/".concat(item.uri.split(".").slice(2).join("."), "$")).replace(/:\w+/g, "([^/]+)")
10589
+ });
10590
+ })
10591
+ });
10592
+ }
10593
+ var getMockInfo = (requestUrl, method) => {
10594
+ var transformGetMethod = method => {
10595
+ if (method.toUpperCase() === "LIST") {
10596
+ return "GET";
10597
+ }
10598
+
10599
+ return method === null || method === void 0 ? void 0 : method.toUpperCase();
10600
+ };
10601
+
10602
+ var item = mocks.mockList.find(item => new RegExp(item.uri).test(requestUrl) && transformGetMethod(item.method) === (method === null || method === void 0 ? void 0 : method.toUpperCase()));
10603
+
10604
+ if (item) {
10605
+ return {
10606
+ url: requestUrl.replace(/(api\/gateway\/.+?)(@\d+\.\d+\.\d+)?\/(.+)/, (_match, p1, _p2, p3) => {
10607
+ // 忽略版本
10608
+ return "".concat(p1, "/").concat(p3);
10609
+ }).replace(/(api\/gateway)/, "api/gateway/mock_server.proxy.".concat(mocks.mockId)),
10610
+ mockId: mocks.mockId
10611
+ };
10612
+ }
10613
+
10614
+ return;
10615
+ };
10616
+
10617
+ function registerFormRenderer() {
10618
+ customElements.get(formRenderer) || customElements.define(formRenderer, class FormElement extends HTMLElement {
10619
+ get $$typeof() {
10620
+ return "formRenderer";
10621
+ }
10622
+
10623
+ });
10624
+ }
10625
+
10328
10626
  class Router {
10329
10627
  constructor(kernel) {
10330
10628
  _defineProperty__default["default"](this, "defaultCollapsed", false);
@@ -10497,7 +10795,7 @@
10497
10795
  var _apiAnalyzer$getInsta, _getLocalAppsTheme;
10498
10796
 
10499
10797
  _this3.state = "initial";
10500
- _this3.renderId = lodash.uniqueId("render-id-");
10798
+ _this3.renderId = _.uniqueId("render-id-");
10501
10799
  resetAllInjected();
10502
10800
  clearPollTimeout();
10503
10801
 
@@ -10533,6 +10831,7 @@
10533
10831
 
10534
10832
  registerStoryboardFunctions((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.functions, storyboard.app);
10535
10833
  registerMock((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.mocks);
10834
+ registerFormRenderer();
10536
10835
  collectContract((_storyboard$meta3 = storyboard.meta) === null || _storyboard$meta3 === void 0 ? void 0 : _storyboard$meta3.contracts);
10537
10836
  }
10538
10837
 
@@ -10592,23 +10891,8 @@
10592
10891
  };
10593
10892
 
10594
10893
  try {
10595
- var specificTemplatePreviewIndex = lodash.findLastIndex(storyboard.routes, route => route.path.startsWith("${APP.homepage}/_dev_only_/template-preview/"));
10596
- var specificSnippetPreviewIndex = lodash.findLastIndex(storyboard.routes, route => route.path.startsWith("${APP.homepage}/_dev_only_/snippet-preview/"));
10597
- var mergedRoutes = [...storyboard.routes.slice(0, specificTemplatePreviewIndex + 1), ...storyboard.routes.slice(0, specificSnippetPreviewIndex + 1), {
10598
- path: "${APP.homepage}/_dev_only_/template-preview/:templateId",
10599
- bricks: [{
10600
- brick: "span"
10601
- }],
10602
- menu: false,
10603
- exact: true
10604
- }, {
10605
- path: "${APP.homepage}/_dev_only_/snippet-preview/:snippetId",
10606
- bricks: [{
10607
- brick: "span"
10608
- }],
10609
- menu: false,
10610
- exact: true
10611
- }, ...storyboard.routes.slice(specificTemplatePreviewIndex + 1)];
10894
+ var mergedRoutes = _this3.MergePreviewRouter(storyboard.routes);
10895
+
10612
10896
  yield locationContext.mountRoutes(mergedRoutes, undefined, mountRoutesResult);
10613
10897
  } catch (error) {
10614
10898
  // eslint-disable-next-line no-console
@@ -10818,6 +11102,50 @@
10818
11102
  subMenu: mountResult.menuBar.subMenu
10819
11103
  };
10820
11104
  }
11105
+
11106
+ MergePreviewRouter(router) {
11107
+ var mergedRoutes = router;
11108
+ var specificTemplatePreviewIndex = _.findLastIndex(mergedRoutes, route => route.path.startsWith("${APP.homepage}/_dev_only_/template-preview/"));
11109
+
11110
+ if (specificTemplatePreviewIndex > -1) {
11111
+ mergedRoutes = [...mergedRoutes.slice(0, specificTemplatePreviewIndex + 1), {
11112
+ path: "${APP.homepage}/_dev_only_/template-preview/:templateId",
11113
+ bricks: [{
11114
+ brick: "span"
11115
+ }],
11116
+ menu: false,
11117
+ exact: true
11118
+ }, ...mergedRoutes.slice(specificTemplatePreviewIndex + 1)];
11119
+ }
11120
+
11121
+ var specificSnippetPreviewIndex = _.findLastIndex(mergedRoutes, route => route.path.startsWith("${APP.homepage}/_dev_only_/snippet-preview/"));
11122
+
11123
+ if (specificSnippetPreviewIndex > -1) {
11124
+ mergedRoutes = [...mergedRoutes.slice(0, specificSnippetPreviewIndex + 1), {
11125
+ path: "${APP.homepage}/_dev_only_/snippet-preview/:snippetId",
11126
+ bricks: [{
11127
+ brick: "span"
11128
+ }],
11129
+ menu: false,
11130
+ exact: true
11131
+ }, ...mergedRoutes.slice(specificSnippetPreviewIndex + 1)];
11132
+ }
11133
+
11134
+ var specificFormPreviewIndex = _.findLastIndex(mergedRoutes, route => route.path.startsWith("${APP.homepage}/_dev_only_/form-preview/"));
11135
+
11136
+ if (specificFormPreviewIndex > -1) {
11137
+ mergedRoutes = [...mergedRoutes.slice(0, specificFormPreviewIndex + 1), {
11138
+ path: "${APP.homepage}/_dev_only_/form-preview/:FormId",
11139
+ bricks: [{
11140
+ brick: "span"
11141
+ }],
11142
+ menu: false,
11143
+ exact: true
11144
+ }, ...mergedRoutes.slice(specificFormPreviewIndex + 1)];
11145
+ }
11146
+
11147
+ return mergedRoutes;
11148
+ }
10821
11149
  /* istanbul ignore next */
10822
11150
 
10823
11151
 
@@ -11817,7 +12145,7 @@
11817
12145
  if (useBrick[symbolForComputedPropsFromProxy]) {
11818
12146
  Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref3 => {
11819
12147
  var [propName, propValue] = _ref3;
11820
- lodash.set(brick.properties, propName, propValue);
12148
+ _.set(brick.properties, propName, propValue);
11821
12149
  });
11822
12150
  }
11823
12151
 
@@ -12019,7 +12347,7 @@
12019
12347
  if (useBrick[symbolForComputedPropsFromProxy]) {
12020
12348
  Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref9 => {
12021
12349
  var [propName, propValue] = _ref9;
12022
- lodash.set(brick.properties, propName, propValue);
12350
+ _.set(brick.properties, propName, propValue);
12023
12351
  });
12024
12352
  }
12025
12353
 
@@ -12493,7 +12821,7 @@
12493
12821
  isBig
12494
12822
  } = props;
12495
12823
  var theme = useCurrentTheme();
12496
- var prefix = lodash.uniqueId();
12824
+ var prefix = _.uniqueId();
12497
12825
 
12498
12826
  var createNewId = id => {
12499
12827
  return prefix + id;
@@ -13235,10 +13563,11 @@
13235
13563
  getFakeKernel: _dev_only_getFakeKernel,
13236
13564
 
13237
13565
  /** @deprecated Keep it for backward-compatibility. */
13238
- checkoutTplContext: lodash.noop,
13566
+ checkoutTplContext: _.noop,
13239
13567
  updateStoryboard: _dev_only_updateStoryboard,
13240
13568
  updateTemplatePreviewSettings: _dev_only_updateTemplatePreviewSettings,
13241
- updateSnippetPreviewSettings: _dev_only_updateSnippetPreviewSettings
13569
+ updateSnippetPreviewSettings: _dev_only_updateSnippetPreviewSettings,
13570
+ updateFormPreviewSettings: _dev_only_updateFormPreviewSettings
13242
13571
  };
13243
13572
 
13244
13573
  var _excluded$2 = ["type"];
@@ -13573,9 +13902,9 @@
13573
13902
  return e => {
13574
13903
  if (e) {
13575
13904
  if (typeof e.detail === "object" && !Array.isArray(e.detail)) {
13576
- lodash.merge(this, e.detail);
13905
+ _.merge(this, e.detail);
13577
13906
  } else {
13578
- lodash.merge(this, {
13907
+ _.merge(this, {
13579
13908
  detail: e.detail
13580
13909
  });
13581
13910
  }
@@ -13636,9 +13965,9 @@
13636
13965
  var options = React.useMemo(() => {
13637
13966
  var localOptions = {};
13638
13967
 
13639
- if (lodash.isObject(providerOrParamsOrGlobalOptions)) {
13968
+ if (_.isObject(providerOrParamsOrGlobalOptions)) {
13640
13969
  localOptions = providerOrParamsOrGlobalOptions;
13641
- } else if (lodash.isObject(gloabalOptionsOrDeps)) {
13970
+ } else if (_.isObject(gloabalOptionsOrDeps)) {
13642
13971
  localOptions = gloabalOptionsOrDeps;
13643
13972
  }
13644
13973
 
@@ -13806,13 +14135,13 @@
13806
14135
  var providerStr = provider;
13807
14136
  var providerArgs = [];
13808
14137
 
13809
- if (lodash.isString(providerOrBody)) {
14138
+ if (_.isString(providerOrBody)) {
13810
14139
  providerStr = providerOrBody;
13811
14140
  }
13812
14141
 
13813
- if (lodash.isObject(providerOrBody)) {
14142
+ if (_.isObject(providerOrBody)) {
13814
14143
  providerArgs = providerOrBody;
13815
- } else if (lodash.isObject(args)) {
14144
+ } else if (_.isObject(args)) {
13816
14145
  providerArgs = args;
13817
14146
  }
13818
14147