1 | import Layout from '../base/layout';
|
2 |
|
3 | interface Style {
|
4 | left: number;
|
5 | top: number;
|
6 | width: number;
|
7 | height: number;
|
8 | padding: number[];
|
9 | }
|
10 |
|
11 | class LayoutController {
|
12 | private layout: Layout;
|
13 |
|
14 | private getRectRange(style: Style) {
|
15 | const { left, top, width, height, padding } = style;
|
16 | const [paddingTop, paddingRight, paddingBottom, paddingLeft] = padding;
|
17 | return {
|
18 | left: left + paddingLeft,
|
19 | top: top + paddingTop,
|
20 | width: width - paddingLeft - paddingRight,
|
21 | height: height - paddingTop - paddingBottom,
|
22 | };
|
23 | }
|
24 |
|
25 | create(style: Style) {
|
26 | const rectRange = this.getRectRange(style);
|
27 | const layout = new Layout(rectRange);
|
28 | this.layout = layout;
|
29 | return layout;
|
30 | }
|
31 |
|
32 | update(style: Style) {
|
33 | const rectRange = this.getRectRange(style);
|
34 | const { layout } = this;
|
35 | layout.update(rectRange);
|
36 | return layout;
|
37 | }
|
38 | }
|
39 |
|
40 | export default LayoutController;
|