@next-core/brick-kit 2.112.0 → 2.115.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,51 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.115.0](https://github.com/easyops-cn/next-core/compare/@next-core/brick-kit@2.114.0...@next-core/brick-kit@2.115.0) (2022-03-30)
7
+
8
+
9
+ ### Features
10
+
11
+ * APP.getMenu support scan template & routes ([5498846](https://github.com/easyops-cn/next-core/commit/54988465a5357a97834aaca317b41b3fcb2c6a65))
12
+ * loactionContext preFetchMenu ([9a0ec7b](https://github.com/easyops-cn/next-core/commit/9a0ec7b0a19e26633772a71de829f014574ec735))
13
+ * support walkAny unit function ([8adff8e](https://github.com/easyops-cn/next-core/commit/8adff8e2538a43676c5eef1f275e1c5a8127171a))
14
+ * unit test update ([00b3606](https://github.com/easyops-cn/next-core/commit/00b3606c2a2d7ba9a26f3a0255721a11e225c7d9))
15
+
16
+
17
+
18
+
19
+
20
+ # [2.114.0](https://github.com/easyops-cn/next-core/compare/@next-core/brick-kit@2.113.0...@next-core/brick-kit@2.114.0) (2022-03-29)
21
+
22
+
23
+ ### Features
24
+
25
+ * add MEDIA gloabl object and onMediaChange life cycle ([3192ee4](https://github.com/easyops-cn/next-core/commit/3192ee4e595e2edc78d05b68d6cf0431905296fb))
26
+
27
+
28
+
29
+
30
+
31
+ # [2.113.0](https://github.com/easyops-cn/next-core/compare/@next-core/brick-kit@2.112.1...@next-core/brick-kit@2.113.0) (2022-03-29)
32
+
33
+
34
+ ### Features
35
+
36
+ * cache fetchMenu, and APP.getMenu change ([07ede47](https://github.com/easyops-cn/next-core/commit/07ede4778f012fbbb7e72d30b1c41d6478660aec))
37
+ * update type ([d7b480e](https://github.com/easyops-cn/next-core/commit/d7b480ecc287263345415c536bd263b7fb317b1e))
38
+
39
+
40
+
41
+
42
+
43
+ ## [2.112.1](https://github.com/easyops-cn/next-core/compare/@next-core/brick-kit@2.112.0...@next-core/brick-kit@2.112.1) (2022-03-29)
44
+
45
+ **Note:** Version bump only for package @next-core/brick-kit
46
+
47
+
48
+
49
+
50
+
6
51
  # [2.112.0](https://github.com/easyops-cn/next-core/compare/@next-core/brick-kit@2.111.3...@next-core/brick-kit@2.112.0) (2022-03-29)
7
52
 
8
53
 
@@ -2186,6 +2186,56 @@
2186
2186
  return tplContextMap.get(tplContextId);
2187
2187
  }
2188
2188
 
2189
+ var MediaSize;
2190
+
2191
+ (function (MediaSize) {
2192
+ MediaSize["xLarge"] = "xLarge";
2193
+ MediaSize["large"] = "large";
2194
+ MediaSize["medium"] = "medium";
2195
+ MediaSize["small"] = "small";
2196
+ MediaSize["xSmall"] = "xSmall";
2197
+ })(MediaSize || (MediaSize = {}));
2198
+
2199
+ var mediaSizeBreakpointMap = new Map([[MediaSize.xLarge, "1920px"], [MediaSize.large, "1600px"], [MediaSize.medium, "1280px"], [MediaSize.small, "1024px"], [MediaSize.xSmall, 0]]);
2200
+ var mediaEventTarget = new EventTarget$1();
2201
+ var sizeMatchesMap = {};
2202
+ var MEDIA = {};
2203
+
2204
+ function handleMatchesChange(data, size) {
2205
+ var changed = false;
2206
+ sizeMatchesMap[size] = data.matches;
2207
+
2208
+ for (var [_size] of mediaSizeBreakpointMap) {
2209
+ if (sizeMatchesMap[_size] && MEDIA.size !== _size) {
2210
+ MEDIA.size = _size;
2211
+ changed = true;
2212
+ break;
2213
+ }
2214
+ }
2215
+
2216
+ if (changed) {
2217
+ mediaEventTarget.dispatchEvent(new CustomEvent("change", {
2218
+ detail: MEDIA
2219
+ }));
2220
+ }
2221
+ }
2222
+
2223
+ mediaSizeBreakpointMap.forEach((breakpoint, size) => {
2224
+ var mediaQueryList = window.matchMedia("(min-width: ".concat(breakpoint, ")"));
2225
+ handleMatchesChange(mediaQueryList, size);
2226
+
2227
+ if (mediaQueryList.addEventListener) {
2228
+ mediaQueryList.addEventListener("change", event => {
2229
+ handleMatchesChange(event, size);
2230
+ });
2231
+ } else {
2232
+ mediaQueryList.addListener(event => {
2233
+ handleMatchesChange(event, size);
2234
+ });
2235
+ }
2236
+ });
2237
+ var getMedia = () => MEDIA;
2238
+
2189
2239
  var symbolForRaw = Symbol.for("pre.evaluated.raw");
2190
2240
  var symbolForContext = Symbol.for("pre.evaluated.context");
2191
2241
  function isPreEvaluated(raw) {
@@ -2422,6 +2472,9 @@
2422
2472
  case "SYS":
2423
2473
  return getReadOnlyProxy(sys);
2424
2474
 
2475
+ case "MEDIA":
2476
+ return getReadOnlyProxy(getMedia());
2477
+
2425
2478
  case "__WIDGET_FN__":
2426
2479
  return widgetFunctions;
2427
2480
 
@@ -2663,6 +2716,7 @@
2663
2716
  // Caching menu requests to avoid flicker.
2664
2717
  var menuCache = new Map();
2665
2718
  var menuTitleCache = new Map();
2719
+ var processMenuCache = new Map();
2666
2720
  function constructMenu(_x, _x2, _x3) {
2667
2721
  return _constructMenu.apply(this, arguments);
2668
2722
  }
@@ -2699,12 +2753,14 @@
2699
2753
 
2700
2754
  function _constructMenuByMenusList() {
2701
2755
  _constructMenuByMenusList = _asyncToGenerator__default["default"](function* (menus, context, kernel) {
2702
- yield Promise.all(menus.map(menuId => processMenu(menuId, context, kernel)));
2756
+ processMenuCache.clear();
2757
+ var data = yield Promise.all(menus.map(menuId => processMenu(menuId, context, kernel)));
2758
+ data.forEach((item, index) => processMenuCache.set(menus[index], item));
2703
2759
  });
2704
2760
  return _constructMenuByMenusList.apply(this, arguments);
2705
2761
  }
2706
2762
 
2707
- var getMenu = menuId => menuCache.get(menuId);
2763
+ var getMenu = menuId => processMenuCache.get(menuId);
2708
2764
  function fetchMenuById(_x7, _x8) {
2709
2765
  return _fetchMenuById.apply(this, arguments);
2710
2766
  }
@@ -8590,6 +8646,8 @@
8590
8646
 
8591
8647
  _defineProperty__default["default"](this, "anchorUnloadHandlers", []);
8592
8648
 
8649
+ _defineProperty__default["default"](this, "mediaChangeHandlers", []);
8650
+
8593
8651
  _defineProperty__default["default"](this, "messageCloseHandlers", []);
8594
8652
 
8595
8653
  _defineProperty__default["default"](this, "messageHandlers", []);
@@ -8779,15 +8837,11 @@
8779
8837
  }
8780
8838
 
8781
8839
  if (isRouteConfOfRoutes(route) && Array.isArray(route.routes)) {
8840
+ yield _this.preFetchMenu(route.context);
8782
8841
  yield _this.mountRoutes(route.routes, slotId, mountRoutesResult);
8783
8842
  } else if (isRouteConfOfBricks(route) && Array.isArray(route.bricks)) {
8784
- var useMenus = brickUtils.scanAppGetMenuInAny(route);
8785
-
8786
- if (useMenus.length) {
8787
- yield constructMenuByMenusList(useMenus, _this.getCurrentContext(), _this.kernel);
8788
- }
8789
-
8790
- yield _this.mountBricks(route.bricks, matched.match, slotId, mountRoutesResult); // analytics data (page_view event)
8843
+ yield _this.mountBricks(route.bricks, matched.match, slotId, mountRoutesResult);
8844
+ yield _this.preFetchMenu(route); // analytics data (page_view event)
8791
8845
 
8792
8846
  if (route.analyticsData) {
8793
8847
  mountRoutesResult.analyticsData = computeRealValue(route.analyticsData, context, true);
@@ -9043,6 +9097,9 @@
9043
9097
  var expandedBrickConf = brickConf;
9044
9098
 
9045
9099
  if (tplTagName) {
9100
+ var _customTemplateRegist;
9101
+
9102
+ yield _this6.preFetchMenu((_customTemplateRegist = customTemplateRegistry.get(tplTagName)) === null || _customTemplateRegist === void 0 ? void 0 : _customTemplateRegist.bricks);
9046
9103
  expandedBrickConf = yield asyncExpandCustomTemplate(_objectSpread__default["default"](_objectSpread__default["default"]({}, brickConf), {}, {
9047
9104
  brick: tplTagName,
9048
9105
  // Properties are computed for custom templates.
@@ -9104,6 +9161,7 @@
9104
9161
  onPageLeave,
9105
9162
  onAnchorLoad,
9106
9163
  onAnchorUnload,
9164
+ onMediaChange,
9107
9165
  onMessage,
9108
9166
  onMessageClose
9109
9167
  } = lifeCycle !== null && lifeCycle !== void 0 ? lifeCycle : {};
@@ -9162,6 +9220,15 @@
9162
9220
  });
9163
9221
  }
9164
9222
 
9223
+ if (onMediaChange) {
9224
+ this.mediaChangeHandlers.push({
9225
+ brick,
9226
+ match,
9227
+ tplContextId,
9228
+ handler: onMediaChange
9229
+ });
9230
+ }
9231
+
9165
9232
  if (onMessage) {
9166
9233
  this.messageHandlers.push({
9167
9234
  brick,
@@ -9217,6 +9284,12 @@
9217
9284
  }
9218
9285
  }
9219
9286
 
9287
+ handleMediaChange(detail) {
9288
+ this.dispatchLifeCycleEvent(new CustomEvent("media.change", {
9289
+ detail: getReadOnlyProxy(detail)
9290
+ }), this.mediaChangeHandlers);
9291
+ }
9292
+
9220
9293
  handleMessage() {
9221
9294
  this.messageDispatcher.create(this.messageHandlers, this.getCurrentContext());
9222
9295
  }
@@ -9247,6 +9320,18 @@
9247
9320
  }
9248
9321
  }
9249
9322
 
9323
+ preFetchMenu(data) {
9324
+ var _this7 = this;
9325
+
9326
+ return _asyncToGenerator__default["default"](function* () {
9327
+ var useMenus = brickUtils.scanAppGetMenuInAny(data);
9328
+
9329
+ if (useMenus.length) {
9330
+ yield constructMenuByMenusList(useMenus, _this7.getCurrentContext(), _this7.kernel);
9331
+ }
9332
+ })();
9333
+ }
9334
+
9250
9335
  }
9251
9336
 
9252
9337
  function unmountTree(mountPoint) {
@@ -9728,6 +9813,8 @@
9728
9813
 
9729
9814
  _defineProperty__default["default"](this, "navConfig", void 0);
9730
9815
 
9816
+ _defineProperty__default["default"](this, "mediaEventTargetHandler", void 0);
9817
+
9731
9818
  this.kernel = kernel;
9732
9819
  this.featureFlags = this.kernel.getFeatureFlags();
9733
9820
  var history = getHistory();
@@ -10035,7 +10122,12 @@
10035
10122
  _this3.kernel.unsetBars({
10036
10123
  appChanged,
10037
10124
  legacy: actualLegacy
10038
- }); // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.
10125
+ });
10126
+
10127
+ if (_this3.mediaEventTargetHandler) {
10128
+ mediaEventTarget.removeEventListener("change", _this3.mediaEventTargetHandler);
10129
+ _this3.mediaEventTargetHandler = undefined;
10130
+ } // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.
10039
10131
 
10040
10132
 
10041
10133
  _this3.locationContext.handleBeforePageLoad();
@@ -10108,6 +10200,9 @@
10108
10200
  _this3.locationContext.handleMessage();
10109
10201
  }
10110
10202
 
10203
+ _this3.mediaEventTargetHandler = event => _this3.locationContext.handleMediaChange(event.detail);
10204
+
10205
+ mediaEventTarget.addEventListener("change", _this3.mediaEventTargetHandler);
10111
10206
  pageTracker === null || pageTracker === void 0 ? void 0 : pageTracker(locationContext.getCurrentMatch().path); // analytics page_view event
10112
10207
 
10113
10208
  easyopsAnalytics.userAnalytics.event("page_view", _objectSpread__default["default"]({