Blame view

天文台pc/tianwentai-ui/node_modules/@mui/system/Grid/traverseBreakpoints.js 2 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  "use strict";
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports.traverseBreakpoints = exports.filterBreakpointKeys = void 0;
  const filterBreakpointKeys = (breakpointsKeys, responsiveKeys) => breakpointsKeys.filter(key => responsiveKeys.includes(key));
  exports.filterBreakpointKeys = filterBreakpointKeys;
  const traverseBreakpoints = (breakpoints, responsive, iterator) => {
    const smallestBreakpoint = breakpoints.keys[0]; // the keys is sorted from smallest to largest by `createBreakpoints`.
  
    if (Array.isArray(responsive)) {
      responsive.forEach((breakpointValue, index) => {
        iterator((responsiveStyles, style) => {
          if (index <= breakpoints.keys.length - 1) {
            if (index === 0) {
              Object.assign(responsiveStyles, style);
            } else {
              responsiveStyles[breakpoints.up(breakpoints.keys[index])] = style;
            }
          }
        }, breakpointValue);
      });
    } else if (responsive && typeof responsive === 'object') {
      // prevent null
      // responsive could be a very big object, pick the smallest responsive values
  
      const keys = Object.keys(responsive).length > breakpoints.keys.length ? breakpoints.keys : filterBreakpointKeys(breakpoints.keys, Object.keys(responsive));
      keys.forEach(key => {
        if (breakpoints.keys.includes(key)) {
          // @ts-ignore already checked that responsive is an object
          const breakpointValue = responsive[key];
          if (breakpointValue !== undefined) {
            iterator((responsiveStyles, style) => {
              if (smallestBreakpoint === key) {
                Object.assign(responsiveStyles, style);
              } else {
                responsiveStyles[breakpoints.up(key)] = style;
              }
            }, breakpointValue);
          }
        }
      });
    } else if (typeof responsive === 'number' || typeof responsive === 'string') {
      iterator((responsiveStyles, style) => {
        Object.assign(responsiveStyles, style);
      }, responsive);
    }
  };
  exports.traverseBreakpoints = traverseBreakpoints;