Blame view

天文台pc/tianwentai-ui/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.mjs 1.46 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
  import { complex } from '../../value/types/complex/index.mjs';
  import { mixNumber } from '../../utils/mix/number.mjs';
  
  const correctBoxShadow = {
      correct: (latest, { treeScale, projectionDelta }) => {
          const original = latest;
          const shadow = complex.parse(latest);
          // TODO: Doesn't support multiple shadows
          if (shadow.length > 5)
              return original;
          const template = complex.createTransformer(latest);
          const offset = typeof shadow[0] !== "number" ? 1 : 0;
          // Calculate the overall context scale
          const xScale = projectionDelta.x.scale * treeScale.x;
          const yScale = projectionDelta.y.scale * treeScale.y;
          shadow[0 + offset] /= xScale;
          shadow[1 + offset] /= yScale;
          /**
           * Ideally we'd correct x and y scales individually, but because blur and
           * spread apply to both we have to take a scale average and apply that instead.
           * We could potentially improve the outcome of this by incorporating the ratio between
           * the two scales.
           */
          const averageScale = mixNumber(xScale, yScale, 0.5);
          // Blur
          if (typeof shadow[2 + offset] === "number")
              shadow[2 + offset] /= averageScale;
          // Spread
          if (typeof shadow[3 + offset] === "number")
              shadow[3 + offset] /= averageScale;
          return template(shadow);
      },
  };
  
  export { correctBoxShadow };
  //# sourceMappingURL=scale-box-shadow.mjs.map