@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/dist/index.esm.js CHANGED
@@ -2187,6 +2187,56 @@ function getCustomTemplateContext(tplContextId) {
2187
2187
  return tplContextMap.get(tplContextId);
2188
2188
  }
2189
2189
 
2190
+ var MediaSize;
2191
+
2192
+ (function (MediaSize) {
2193
+ MediaSize["xLarge"] = "xLarge";
2194
+ MediaSize["large"] = "large";
2195
+ MediaSize["medium"] = "medium";
2196
+ MediaSize["small"] = "small";
2197
+ MediaSize["xSmall"] = "xSmall";
2198
+ })(MediaSize || (MediaSize = {}));
2199
+
2200
+ var mediaSizeBreakpointMap = new Map([[MediaSize.xLarge, "1920px"], [MediaSize.large, "1600px"], [MediaSize.medium, "1280px"], [MediaSize.small, "1024px"], [MediaSize.xSmall, 0]]);
2201
+ var mediaEventTarget = new EventTarget$1();
2202
+ var sizeMatchesMap = {};
2203
+ var MEDIA = {};
2204
+
2205
+ function handleMatchesChange(data, size) {
2206
+ var changed = false;
2207
+ sizeMatchesMap[size] = data.matches;
2208
+
2209
+ for (var [_size] of mediaSizeBreakpointMap) {
2210
+ if (sizeMatchesMap[_size] && MEDIA.size !== _size) {
2211
+ MEDIA.size = _size;
2212
+ changed = true;
2213
+ break;
2214
+ }
2215
+ }
2216
+
2217
+ if (changed) {
2218
+ mediaEventTarget.dispatchEvent(new CustomEvent("change", {
2219
+ detail: MEDIA
2220
+ }));
2221
+ }
2222
+ }
2223
+
2224
+ mediaSizeBreakpointMap.forEach((breakpoint, size) => {
2225
+ var mediaQueryList = window.matchMedia("(min-width: ".concat(breakpoint, ")"));
2226
+ handleMatchesChange(mediaQueryList, size);
2227
+
2228
+ if (mediaQueryList.addEventListener) {
2229
+ mediaQueryList.addEventListener("change", event => {
2230
+ handleMatchesChange(event, size);
2231
+ });
2232
+ } else {
2233
+ mediaQueryList.addListener(event => {
2234
+ handleMatchesChange(event, size);
2235
+ });
2236
+ }
2237
+ });
2238
+ var getMedia = () => MEDIA;
2239
+
2190
2240
  var symbolForRaw = Symbol.for("pre.evaluated.raw");
2191
2241
  var symbolForContext = Symbol.for("pre.evaluated.context");
2192
2242
  function isPreEvaluated(raw) {
@@ -2423,6 +2473,9 @@ function evaluate(raw) {
2423
2473
  case "SYS":
2424
2474
  return getReadOnlyProxy(sys);
2425
2475
 
2476
+ case "MEDIA":
2477
+ return getReadOnlyProxy(getMedia());
2478
+
2426
2479
  case "__WIDGET_FN__":
2427
2480
  return widgetFunctions;
2428
2481
 
@@ -2664,6 +2717,7 @@ var symbolAppId = Symbol("appId");
2664
2717
  // Caching menu requests to avoid flicker.
2665
2718
  var menuCache = new Map();
2666
2719
  var menuTitleCache = new Map();
2720
+ var processMenuCache = new Map();
2667
2721
  function constructMenu(_x, _x2, _x3) {
2668
2722
  return _constructMenu.apply(this, arguments);
2669
2723
  }
@@ -2700,12 +2754,14 @@ function constructMenuByMenusList(_x4, _x5, _x6) {
2700
2754
 
2701
2755
  function _constructMenuByMenusList() {
2702
2756
  _constructMenuByMenusList = _asyncToGenerator$4(function* (menus, context, kernel) {
2703
- yield Promise.all(menus.map(menuId => processMenu(menuId, context, kernel)));
2757
+ processMenuCache.clear();
2758
+ var data = yield Promise.all(menus.map(menuId => processMenu(menuId, context, kernel)));
2759
+ data.forEach((item, index) => processMenuCache.set(menus[index], item));
2704
2760
  });
2705
2761
  return _constructMenuByMenusList.apply(this, arguments);
2706
2762
  }
2707
2763
 
2708
- var getMenu = menuId => menuCache.get(menuId);
2764
+ var getMenu = menuId => processMenuCache.get(menuId);
2709
2765
  function fetchMenuById(_x7, _x8) {
2710
2766
  return _fetchMenuById.apply(this, arguments);
2711
2767
  }
@@ -8591,6 +8647,8 @@ class LocationContext {
8591
8647
 
8592
8648
  _defineProperty$1(this, "anchorUnloadHandlers", []);
8593
8649
 
8650
+ _defineProperty$1(this, "mediaChangeHandlers", []);
8651
+
8594
8652
  _defineProperty$1(this, "messageCloseHandlers", []);
8595
8653
 
8596
8654
  _defineProperty$1(this, "messageHandlers", []);
@@ -8780,15 +8838,11 @@ class LocationContext {
8780
8838
  }
8781
8839
 
8782
8840
  if (isRouteConfOfRoutes(route) && Array.isArray(route.routes)) {
8841
+ yield _this.preFetchMenu(route.context);
8783
8842
  yield _this.mountRoutes(route.routes, slotId, mountRoutesResult);
8784
8843
  } else if (isRouteConfOfBricks(route) && Array.isArray(route.bricks)) {
8785
- var useMenus = scanAppGetMenuInAny(route);
8786
-
8787
- if (useMenus.length) {
8788
- yield constructMenuByMenusList(useMenus, _this.getCurrentContext(), _this.kernel);
8789
- }
8790
-
8791
- yield _this.mountBricks(route.bricks, matched.match, slotId, mountRoutesResult); // analytics data (page_view event)
8844
+ yield _this.mountBricks(route.bricks, matched.match, slotId, mountRoutesResult);
8845
+ yield _this.preFetchMenu(route); // analytics data (page_view event)
8792
8846
 
8793
8847
  if (route.analyticsData) {
8794
8848
  mountRoutesResult.analyticsData = computeRealValue(route.analyticsData, context, true);
@@ -9044,6 +9098,9 @@ class LocationContext {
9044
9098
  var expandedBrickConf = brickConf;
9045
9099
 
9046
9100
  if (tplTagName) {
9101
+ var _customTemplateRegist;
9102
+
9103
+ yield _this6.preFetchMenu((_customTemplateRegist = customTemplateRegistry.get(tplTagName)) === null || _customTemplateRegist === void 0 ? void 0 : _customTemplateRegist.bricks);
9047
9104
  expandedBrickConf = yield asyncExpandCustomTemplate(_objectSpread(_objectSpread({}, brickConf), {}, {
9048
9105
  brick: tplTagName,
9049
9106
  // Properties are computed for custom templates.
@@ -9105,6 +9162,7 @@ class LocationContext {
9105
9162
  onPageLeave,
9106
9163
  onAnchorLoad,
9107
9164
  onAnchorUnload,
9165
+ onMediaChange,
9108
9166
  onMessage,
9109
9167
  onMessageClose
9110
9168
  } = lifeCycle !== null && lifeCycle !== void 0 ? lifeCycle : {};
@@ -9163,6 +9221,15 @@ class LocationContext {
9163
9221
  });
9164
9222
  }
9165
9223
 
9224
+ if (onMediaChange) {
9225
+ this.mediaChangeHandlers.push({
9226
+ brick,
9227
+ match,
9228
+ tplContextId,
9229
+ handler: onMediaChange
9230
+ });
9231
+ }
9232
+
9166
9233
  if (onMessage) {
9167
9234
  this.messageHandlers.push({
9168
9235
  brick,
@@ -9218,6 +9285,12 @@ class LocationContext {
9218
9285
  }
9219
9286
  }
9220
9287
 
9288
+ handleMediaChange(detail) {
9289
+ this.dispatchLifeCycleEvent(new CustomEvent("media.change", {
9290
+ detail: getReadOnlyProxy(detail)
9291
+ }), this.mediaChangeHandlers);
9292
+ }
9293
+
9221
9294
  handleMessage() {
9222
9295
  this.messageDispatcher.create(this.messageHandlers, this.getCurrentContext());
9223
9296
  }
@@ -9248,6 +9321,18 @@ class LocationContext {
9248
9321
  }
9249
9322
  }
9250
9323
 
9324
+ preFetchMenu(data) {
9325
+ var _this7 = this;
9326
+
9327
+ return _asyncToGenerator$4(function* () {
9328
+ var useMenus = scanAppGetMenuInAny(data);
9329
+
9330
+ if (useMenus.length) {
9331
+ yield constructMenuByMenusList(useMenus, _this7.getCurrentContext(), _this7.kernel);
9332
+ }
9333
+ })();
9334
+ }
9335
+
9251
9336
  }
9252
9337
 
9253
9338
  function unmountTree(mountPoint) {
@@ -9729,6 +9814,8 @@ class Router {
9729
9814
 
9730
9815
  _defineProperty$1(this, "navConfig", void 0);
9731
9816
 
9817
+ _defineProperty$1(this, "mediaEventTargetHandler", void 0);
9818
+
9732
9819
  this.kernel = kernel;
9733
9820
  this.featureFlags = this.kernel.getFeatureFlags();
9734
9821
  var history = getHistory();
@@ -10036,7 +10123,12 @@ class Router {
10036
10123
  _this3.kernel.unsetBars({
10037
10124
  appChanged,
10038
10125
  legacy: actualLegacy
10039
- }); // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.
10126
+ });
10127
+
10128
+ if (_this3.mediaEventTargetHandler) {
10129
+ mediaEventTarget.removeEventListener("change", _this3.mediaEventTargetHandler);
10130
+ _this3.mediaEventTargetHandler = undefined;
10131
+ } // There is a window to set theme and mode by `lifeCycle.onBeforePageLoad`.
10040
10132
 
10041
10133
 
10042
10134
  _this3.locationContext.handleBeforePageLoad();
@@ -10109,6 +10201,9 @@ class Router {
10109
10201
  _this3.locationContext.handleMessage();
10110
10202
  }
10111
10203
 
10204
+ _this3.mediaEventTargetHandler = event => _this3.locationContext.handleMediaChange(event.detail);
10205
+
10206
+ mediaEventTarget.addEventListener("change", _this3.mediaEventTargetHandler);
10112
10207
  pageTracker === null || pageTracker === void 0 ? void 0 : pageTracker(locationContext.getCurrentMatch().path); // analytics page_view event
10113
10208
 
10114
10209
  userAnalytics.event("page_view", _objectSpread({