@hh.ru/magritte-ui-nav-bar 1.3.29 → 1.4.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/index.css +114 -108
- package/index.js +1 -1
- package/internal/useNavBarMetrics.js +4 -1
- package/internal/useNavBarMetrics.js.map +1 -1
- package/nav-bar-B7uPipzE.js +5 -0
- package/nav-bar-B7uPipzE.js.map +1 -0
- package/package.json +7 -7
- package/public/Actions.js +1 -1
- package/public/LayoutMorph.js +1 -1
- package/public/LayoutStage.js +1 -1
- package/public/Morph.js +1 -1
- package/public/NavBar.js +2 -2
- package/public/NavBar.js.map +1 -1
- package/public/Pane.js +1 -1
- package/public/Stage.js +1 -1
- package/public/TitleContainer.d.ts +9 -0
- package/public/TitleContainer.js +9 -25
- package/public/TitleContainer.js.map +1 -1
- package/public/defaultProps.d.ts +25 -0
- package/public/defaultProps.js +55 -2
- package/public/defaultProps.js.map +1 -1
- package/nav-bar-BFd5MVDE.js +0 -5
- package/nav-bar-BFd5MVDE.js.map +0 -1
package/index.css
CHANGED
|
@@ -1,102 +1,102 @@
|
|
|
1
1
|
:root{
|
|
2
|
-
--magritte-color-background-body-v24-7-
|
|
3
|
-
--magritte-color-text-primary-v24-7-
|
|
4
|
-
--magritte-color-text-secondary-v24-7-
|
|
2
|
+
--magritte-color-background-body-v24-7-1:#ffffff;
|
|
3
|
+
--magritte-color-text-primary-v24-7-1:#000000;
|
|
4
|
+
--magritte-color-text-secondary-v24-7-1:#768694;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
.magritte-night-theme{
|
|
8
|
-
--magritte-color-background-body-v24-7-
|
|
9
|
-
--magritte-color-text-primary-v24-7-
|
|
10
|
-
--magritte-color-text-secondary-v24-7-
|
|
8
|
+
--magritte-color-background-body-v24-7-1:#000000;
|
|
9
|
+
--magritte-color-text-primary-v24-7-1:#ffffff;
|
|
10
|
+
--magritte-color-text-secondary-v24-7-1:#ABABAB;
|
|
11
11
|
}
|
|
12
|
-
.magritte-actions-container___CBgYW_1-
|
|
12
|
+
.magritte-actions-container___CBgYW_1-4-0{
|
|
13
13
|
display:flex;
|
|
14
14
|
flex-direction:row;
|
|
15
15
|
gap:12px;
|
|
16
16
|
min-height:40px;
|
|
17
17
|
}
|
|
18
|
-
.magritte-actions-no-children___rgJUl_1-
|
|
18
|
+
.magritte-actions-no-children___rgJUl_1-4-0{
|
|
19
19
|
justify-content:space-between;
|
|
20
20
|
}
|
|
21
|
-
.magritte-actions-left-slot___DNOj0_1-
|
|
22
|
-
.magritte-actions-right-slot___aodtj_1-
|
|
21
|
+
.magritte-actions-left-slot___DNOj0_1-4-0,
|
|
22
|
+
.magritte-actions-right-slot___aodtj_1-4-0{
|
|
23
23
|
display:grid;
|
|
24
24
|
flex:0 0 auto;
|
|
25
25
|
--magritte-ui-icon-margin-not-transparent:var(--magritte-ui-navbar-actions-icon-margin-not-transparent-override, -8px);
|
|
26
26
|
--magritte-ui-icon-margin-transparent:var(--magritte-ui-navbar-actions-icon-margin-transparent-override, 0);
|
|
27
27
|
--magritte-ui-icon-margin-delta:calc(var(--magritte-ui-icon-margin-not-transparent) - var(--magritte-ui-icon-margin-transparent));
|
|
28
28
|
}
|
|
29
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
30
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
31
|
-
.magritte-navbar-not-transparent___5KZNp_1-
|
|
32
|
-
.magritte-navbar-not-transparent___5KZNp_1-
|
|
29
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-actions-start-stage___MJ67a_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child,
|
|
30
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-actions-end-stage___qHtTV_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child,
|
|
31
|
+
.magritte-navbar-not-transparent___5KZNp_1-4-0 .magritte-actions-start-stage___MJ67a_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child,
|
|
32
|
+
.magritte-navbar-not-transparent___5KZNp_1-4-0 .magritte-actions-end-stage___qHtTV_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child{
|
|
33
33
|
margin-left:var(--magritte-ui-icon-margin-not-transparent);
|
|
34
34
|
}
|
|
35
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
36
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
37
|
-
.magritte-navbar-not-transparent___5KZNp_1-
|
|
38
|
-
.magritte-navbar-not-transparent___5KZNp_1-
|
|
35
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-actions-start-stage___MJ67a_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child,
|
|
36
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-actions-end-stage___qHtTV_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child,
|
|
37
|
+
.magritte-navbar-not-transparent___5KZNp_1-4-0 .magritte-actions-start-stage___MJ67a_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child,
|
|
38
|
+
.magritte-navbar-not-transparent___5KZNp_1-4-0 .magritte-actions-end-stage___qHtTV_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child{
|
|
39
39
|
margin-right:var(--magritte-ui-icon-margin-not-transparent);
|
|
40
40
|
}
|
|
41
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
42
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
43
|
-
.magritte-navbar-transparent___ULEh8_1-
|
|
44
|
-
.magritte-navbar-transparent___ULEh8_1-
|
|
41
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-actions-end-stage___qHtTV_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child,
|
|
42
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-actions-start-stage___MJ67a_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child,
|
|
43
|
+
.magritte-navbar-transparent___ULEh8_1-4-0 .magritte-actions-start-stage___MJ67a_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child,
|
|
44
|
+
.magritte-navbar-transparent___ULEh8_1-4-0 .magritte-actions-end-stage___qHtTV_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child{
|
|
45
45
|
margin-left:var(--magritte-ui-icon-margin-transparent);
|
|
46
46
|
}
|
|
47
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
48
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
49
|
-
.magritte-navbar-transparent___ULEh8_1-
|
|
50
|
-
.magritte-navbar-transparent___ULEh8_1-
|
|
47
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-actions-end-stage___qHtTV_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child,
|
|
48
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-actions-start-stage___MJ67a_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child,
|
|
49
|
+
.magritte-navbar-transparent___ULEh8_1-4-0 .magritte-actions-start-stage___MJ67a_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child,
|
|
50
|
+
.magritte-navbar-transparent___ULEh8_1-4-0 .magritte-actions-end-stage___qHtTV_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child{
|
|
51
51
|
margin-right:var(--magritte-ui-icon-margin-transparent);
|
|
52
52
|
}
|
|
53
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
54
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
53
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-actions-only-stage___cg10A_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child,
|
|
54
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-actions-only-stage___cg10A_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content-clone___jDxVm_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child{
|
|
55
55
|
margin-left:calc(var(--magritte-ui-icon-margin-transparent) + (var(--magritte-ui-icon-margin-delta) * var(--magritte-ui-navbar-animation-progress)));
|
|
56
56
|
}
|
|
57
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
58
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
57
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-actions-only-stage___cg10A_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child,
|
|
58
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-actions-only-stage___cg10A_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content-clone___jDxVm_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child{
|
|
59
59
|
margin-right:calc(var(--magritte-ui-icon-margin-transparent) + (var(--magritte-ui-icon-margin-delta) * var(--magritte-ui-navbar-animation-progress)));
|
|
60
60
|
}
|
|
61
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
62
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
61
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-actions-only-stage___cg10A_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child,
|
|
62
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-actions-only-stage___cg10A_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content-clone___jDxVm_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:first-child{
|
|
63
63
|
margin-left:calc(var(--magritte-ui-icon-margin-not-transparent) - (var(--magritte-ui-icon-margin-delta) * var(--magritte-ui-navbar-animation-progress)));
|
|
64
64
|
}
|
|
65
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
66
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
65
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-actions-only-stage___cg10A_1-4-0 .magritte-actions-right-slot___aodtj_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child,
|
|
66
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-actions-only-stage___cg10A_1-4-0 .magritte-actions-left-slot___DNOj0_1-4-0 .magritte-actions-side-slot-content-clone___jDxVm_1-4-0 > .magritte-actions-icon-morph___-nNgW_1-4-0:last-child{
|
|
67
67
|
margin-right:calc(var(--magritte-ui-icon-margin-not-transparent) - (var(--magritte-ui-icon-margin-delta) * var(--magritte-ui-navbar-animation-progress)));
|
|
68
68
|
}
|
|
69
|
-
.magritte-actions-center-slot___hLAy6_1-
|
|
69
|
+
.magritte-actions-center-slot___hLAy6_1-4-0{
|
|
70
70
|
display:flex;
|
|
71
71
|
flex:1 1 auto;
|
|
72
72
|
min-width:0;
|
|
73
73
|
}
|
|
74
|
-
.magritte-actions-center-slot___hLAy6_1-
|
|
74
|
+
.magritte-actions-center-slot___hLAy6_1-4-0.magritte-actions-center-slot-centered___merXQ_1-4-0{
|
|
75
75
|
justify-content:center;
|
|
76
76
|
}
|
|
77
|
-
.magritte-actions-side-slot-content___TlHrX_1-
|
|
78
|
-
.magritte-actions-side-slot-content-clone___jDxVm_1-
|
|
77
|
+
.magritte-actions-side-slot-content___TlHrX_1-4-0,
|
|
78
|
+
.magritte-actions-side-slot-content-clone___jDxVm_1-4-0{
|
|
79
79
|
grid-area:1 / 1;
|
|
80
80
|
display:flex;
|
|
81
81
|
align-items:center;
|
|
82
82
|
gap:4px;
|
|
83
83
|
}
|
|
84
|
-
.magritte-align-top___-QSFW_1-
|
|
85
|
-
.magritte-align-top___-QSFW_1-
|
|
84
|
+
.magritte-align-top___-QSFW_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0,
|
|
85
|
+
.magritte-align-top___-QSFW_1-4-0 .magritte-actions-side-slot-content-clone___jDxVm_1-4-0{
|
|
86
86
|
align-items:start;
|
|
87
87
|
}
|
|
88
|
-
.magritte-align-bottom___FliHI_1-
|
|
89
|
-
.magritte-align-bottom___FliHI_1-
|
|
88
|
+
.magritte-align-bottom___FliHI_1-4-0 .magritte-actions-side-slot-content___TlHrX_1-4-0,
|
|
89
|
+
.magritte-align-bottom___FliHI_1-4-0 .magritte-actions-side-slot-content-clone___jDxVm_1-4-0{
|
|
90
90
|
align-items:end;
|
|
91
91
|
}
|
|
92
|
-
.magritte-actions-side-slot-content-clone___jDxVm_1-
|
|
92
|
+
.magritte-actions-side-slot-content-clone___jDxVm_1-4-0{
|
|
93
93
|
visibility:hidden;
|
|
94
94
|
z-index:0;
|
|
95
95
|
pointer-events:none;
|
|
96
96
|
user-select:none;
|
|
97
97
|
contain:style layout;
|
|
98
98
|
}
|
|
99
|
-
.magritte-title-container-wrapper___DQUcj_1-
|
|
99
|
+
.magritte-title-container-wrapper___DQUcj_1-4-0{
|
|
100
100
|
display:flex;
|
|
101
101
|
flex-direction:row;
|
|
102
102
|
align-items:center;
|
|
@@ -104,29 +104,29 @@
|
|
|
104
104
|
min-width:0;
|
|
105
105
|
gap:12px;
|
|
106
106
|
}
|
|
107
|
-
.magritte-title-main-part___npoHN_1-
|
|
107
|
+
.magritte-title-main-part___npoHN_1-4-0{
|
|
108
108
|
display:flex;
|
|
109
109
|
flex-direction:column;
|
|
110
110
|
flex:0 1 auto;
|
|
111
111
|
min-width:0;
|
|
112
112
|
}
|
|
113
|
-
.magritte-title-left-slot___HTE7h_1-
|
|
113
|
+
.magritte-title-left-slot___HTE7h_1-4-0{
|
|
114
114
|
display:flex;
|
|
115
115
|
align-items:center;
|
|
116
116
|
flex:0 0 auto;
|
|
117
117
|
}
|
|
118
|
-
.magritte-title-container___y9AIx_1-
|
|
118
|
+
.magritte-title-container___y9AIx_1-4-0{
|
|
119
119
|
display:flex;
|
|
120
120
|
flex-direction:row;
|
|
121
121
|
align-items:center;
|
|
122
122
|
gap:5px;
|
|
123
123
|
min-height:var(--magritte-ui-navbar-title-container-min-height-small-override, 0);
|
|
124
124
|
}
|
|
125
|
-
.magritte-subtitle-container___nVUBu_1-
|
|
125
|
+
.magritte-subtitle-container___nVUBu_1-4-0{
|
|
126
126
|
display:flex;
|
|
127
127
|
}
|
|
128
|
-
.magritte-subtitle-container___nVUBu_1-
|
|
129
|
-
color:var(--magritte-color-text-secondary-v24-7-
|
|
128
|
+
.magritte-subtitle-container___nVUBu_1-4-0 .magritte-text-morph-item___-vXru_1-4-0{
|
|
129
|
+
color:var(--magritte-ui-nav-bar-subtitle-color-override, var(--magritte-color-text-secondary-v24-7-1));
|
|
130
130
|
font-family:"hh sans";
|
|
131
131
|
font-weight:400;
|
|
132
132
|
line-height:18px;
|
|
@@ -136,21 +136,21 @@
|
|
|
136
136
|
text-transform:none;
|
|
137
137
|
text-decoration:none;
|
|
138
138
|
}
|
|
139
|
-
.magritte-centered___Y2mlP_1-
|
|
140
|
-
.magritte-centered___Y2mlP_1-
|
|
139
|
+
.magritte-centered___Y2mlP_1-4-0 .magritte-subtitle-container___nVUBu_1-4-0,
|
|
140
|
+
.magritte-centered___Y2mlP_1-4-0 .magritte-title-container___y9AIx_1-4-0{
|
|
141
141
|
justify-content:center;
|
|
142
142
|
}
|
|
143
|
-
.magritte-title-morph-item___t7Wf3_1-
|
|
143
|
+
.magritte-title-morph-item___t7Wf3_1-4-0{
|
|
144
144
|
display:flex;
|
|
145
145
|
min-width:0;
|
|
146
146
|
}
|
|
147
|
-
.magritte-title___ZbLgP_1-
|
|
147
|
+
.magritte-title___ZbLgP_1-4-0{
|
|
148
148
|
display:flex;
|
|
149
149
|
flex:0 1 auto;
|
|
150
150
|
min-width:0;
|
|
151
151
|
}
|
|
152
|
-
.magritte-title___ZbLgP_1-
|
|
153
|
-
color:var(--magritte-color-text-primary-v24-7-
|
|
152
|
+
.magritte-title___ZbLgP_1-4-0 .magritte-text-morph-item___-vXru_1-4-0{
|
|
153
|
+
color:var(--magritte-ui-nav-bar-title-color-override, var(--magritte-color-text-primary-v24-7-1));
|
|
154
154
|
font-family:"hh sans";
|
|
155
155
|
font-weight:500;
|
|
156
156
|
line-height:22px;
|
|
@@ -160,13 +160,13 @@
|
|
|
160
160
|
text-transform:none;
|
|
161
161
|
text-decoration:none;
|
|
162
162
|
}
|
|
163
|
-
.magritte-size-large___ISXfH_1-
|
|
163
|
+
.magritte-size-large___ISXfH_1-4-0 .magritte-title-main-part___npoHN_1-4-0{
|
|
164
164
|
gap:4px;
|
|
165
165
|
}
|
|
166
|
-
.magritte-size-large___ISXfH_1-
|
|
166
|
+
.magritte-size-large___ISXfH_1-4-0 .magritte-title-container___y9AIx_1-4-0{
|
|
167
167
|
min-height:var(--magritte-ui-navbar-title-container-min-height-large-override, 0);
|
|
168
168
|
}
|
|
169
|
-
.magritte-size-large___ISXfH_1-
|
|
169
|
+
.magritte-size-large___ISXfH_1-4-0 .magritte-title___ZbLgP_1-4-0 .magritte-text-morph-item___-vXru_1-4-0{
|
|
170
170
|
font-family:"hh sans";
|
|
171
171
|
font-weight:500;
|
|
172
172
|
line-height:32px;
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
text-transform:none;
|
|
177
177
|
text-decoration:none;
|
|
178
178
|
}
|
|
179
|
-
.magritte-size-large___ISXfH_1-
|
|
179
|
+
.magritte-size-large___ISXfH_1-4-0 .magritte-subtitle-container___nVUBu_1-4-0 .magritte-text-morph-item___-vXru_1-4-0{
|
|
180
180
|
font-family:"hh sans";
|
|
181
181
|
font-weight:400;
|
|
182
182
|
line-height:22px;
|
|
@@ -186,56 +186,56 @@
|
|
|
186
186
|
text-transform:none;
|
|
187
187
|
text-decoration:none;
|
|
188
188
|
}
|
|
189
|
-
.magritte-pane-content___UVmC6_1-
|
|
189
|
+
.magritte-pane-content___UVmC6_1-4-0{
|
|
190
190
|
position:relative;
|
|
191
191
|
pointer-events:none;
|
|
192
192
|
z-index:2;
|
|
193
193
|
}
|
|
194
|
-
.magritte-pane-background___PDZAX_1-
|
|
194
|
+
.magritte-pane-background___PDZAX_1-4-0{
|
|
195
195
|
position:absolute;
|
|
196
|
-
background-color:var(--magritte-ui-nav-bar-background-color-override, var(--magritte-ui-container-background-color-override, var(--magritte-color-background-body-v24-7-
|
|
196
|
+
background-color:var(--magritte-ui-nav-bar-background-color-override, var(--magritte-ui-container-background-color-override, var(--magritte-color-background-body-v24-7-1)));
|
|
197
197
|
opacity:0;
|
|
198
198
|
inset:0;
|
|
199
199
|
z-index:-1;
|
|
200
200
|
transform-origin:0 0;
|
|
201
201
|
}
|
|
202
|
-
.magritte-navbar-transparent-start___wysv0_1-
|
|
202
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-pane-background___PDZAX_1-4-0{
|
|
203
203
|
opacity:calc(var(--magritte-ui-navbar-animation-progress) * 0.95);
|
|
204
204
|
}
|
|
205
|
-
.magritte-navbar-transparent-end___6KqLR_1-
|
|
205
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-pane-background___PDZAX_1-4-0{
|
|
206
206
|
opacity:calc((1 - var(--magritte-ui-navbar-animation-progress)) * 0.95);
|
|
207
207
|
}
|
|
208
|
-
.magritte-navbar-not-transparent___5KZNp_1-
|
|
208
|
+
.magritte-navbar-not-transparent___5KZNp_1-4-0 .magritte-pane-background___PDZAX_1-4-0{
|
|
209
209
|
opacity:0.95;
|
|
210
210
|
}
|
|
211
|
-
.magritte-morph-item___8kF46_1-
|
|
211
|
+
.magritte-morph-item___8kF46_1-4-0{
|
|
212
212
|
line-height:0;
|
|
213
213
|
transform-origin:var(--magritte-ui-morph-item-transform-origin-x, center) var(--magritte-ui-morph-item-transform-origin-y, center);
|
|
214
214
|
}
|
|
215
|
-
.magritte-morph-item-top___WPEkn_1-
|
|
215
|
+
.magritte-morph-item-top___WPEkn_1-4-0{
|
|
216
216
|
--magritte-ui-morph-item-transform-origin-y:top;
|
|
217
217
|
}
|
|
218
|
-
.magritte-morph-item-bottom___zNbsF_1-
|
|
218
|
+
.magritte-morph-item-bottom___zNbsF_1-4-0{
|
|
219
219
|
--magritte-ui-morph-item-transform-origin-y:bottom;
|
|
220
220
|
}
|
|
221
|
-
.magritte-morph-item-left___T6AMW_1-
|
|
221
|
+
.magritte-morph-item-left___T6AMW_1-4-0{
|
|
222
222
|
--magritte-ui-morph-item-transform-origin-x:left;
|
|
223
223
|
}
|
|
224
|
-
.magritte-morph-item-right___EuT1E_1-
|
|
224
|
+
.magritte-morph-item-right___EuT1E_1-4-0{
|
|
225
225
|
--magritte-ui-morph-item-transform-origin-x:right;
|
|
226
226
|
}
|
|
227
|
-
.magritte-pane___f8eFC_1-
|
|
227
|
+
.magritte-pane___f8eFC_1-4-0{
|
|
228
228
|
position:relative;
|
|
229
229
|
overflow:hidden;
|
|
230
230
|
pointer-events:none;
|
|
231
231
|
}
|
|
232
|
-
.magritte-start-state-container___giBVb_1-
|
|
232
|
+
.magritte-start-state-container___giBVb_1-4-0{
|
|
233
233
|
position:relative;
|
|
234
234
|
z-index:1;
|
|
235
235
|
box-sizing:border-box;
|
|
236
236
|
pointer-events:auto;
|
|
237
237
|
}
|
|
238
|
-
.magritte-end-state-container___uiW8Q_1-
|
|
238
|
+
.magritte-end-state-container___uiW8Q_1-4-0{
|
|
239
239
|
position:absolute;
|
|
240
240
|
z-index:0;
|
|
241
241
|
top:0;
|
|
@@ -244,66 +244,66 @@
|
|
|
244
244
|
pointer-events:none;
|
|
245
245
|
opacity:0;
|
|
246
246
|
}
|
|
247
|
-
.magritte-content-container___7s7vv_1-
|
|
247
|
+
.magritte-content-container___7s7vv_1-4-0{
|
|
248
248
|
box-sizing:border-box;
|
|
249
249
|
}
|
|
250
|
-
.magritte-next-pane___H2oxQ_1-
|
|
250
|
+
.magritte-next-pane___H2oxQ_1-4-0{
|
|
251
251
|
position:relative;
|
|
252
252
|
}
|
|
253
|
-
.magritte-nav-bar___RRGe0_1-
|
|
253
|
+
.magritte-nav-bar___RRGe0_1-4-0{
|
|
254
254
|
top:0;
|
|
255
255
|
position:sticky;
|
|
256
256
|
pointer-events:none;
|
|
257
257
|
overflow-anchor:none;
|
|
258
258
|
z-index:10;
|
|
259
259
|
}
|
|
260
|
-
.magritte-nav-bar-overlay___Mq5ZD_1-
|
|
260
|
+
.magritte-nav-bar-overlay___Mq5ZD_1-4-0 .magritte-nav-bar-overlay-wrapper___y1VpY_1-4-0{
|
|
261
261
|
position:absolute;
|
|
262
262
|
inset:0;
|
|
263
263
|
}
|
|
264
|
-
.magritte-nav-bar-content-container___H-WMO_1-
|
|
264
|
+
.magritte-nav-bar-content-container___H-WMO_1-4-0{
|
|
265
265
|
display:grid;
|
|
266
266
|
position:relative;
|
|
267
267
|
}
|
|
268
|
-
.magritte-nav-bar-panes-container___5ZDLa_1-
|
|
268
|
+
.magritte-nav-bar-panes-container___5ZDLa_1-4-0{
|
|
269
269
|
position:relative;
|
|
270
270
|
z-index:1;
|
|
271
271
|
grid-area:1 / 1;
|
|
272
272
|
min-width:0;
|
|
273
273
|
}
|
|
274
|
-
.magritte-nav-bar-progressive-blur___qyeUV_1-
|
|
274
|
+
.magritte-nav-bar-progressive-blur___qyeUV_1-4-0{
|
|
275
275
|
position:relative;
|
|
276
276
|
z-index:0;
|
|
277
277
|
transform-origin:0 0;
|
|
278
278
|
grid-area:1 / 1;
|
|
279
279
|
min-width:0;
|
|
280
280
|
}
|
|
281
|
-
.magritte-nav-bar-content-container___H-WMO_1-
|
|
282
|
-
.magritte-nav-bar-content-container___H-WMO_1-
|
|
283
|
-
.magritte-nav-bar-content-container___H-WMO_1-
|
|
281
|
+
.magritte-nav-bar-content-container___H-WMO_1-4-0 .magritte-nav-bar-stage___amDz7_1-4-0,
|
|
282
|
+
.magritte-nav-bar-content-container___H-WMO_1-4-0 .nav-bar-layout-animation-stage-start,
|
|
283
|
+
.magritte-nav-bar-content-container___H-WMO_1-4-0 .nav-bar-layout-animation-stage-end{
|
|
284
284
|
padding-top:calc(8px + var(--magritte-ui-nav-bar-padding-top-override, 0px));
|
|
285
285
|
}
|
|
286
|
-
.magritte-nav-bar-content-container___H-WMO_1-
|
|
287
|
-
.magritte-nav-bar-content-container___H-WMO_1-
|
|
288
|
-
.magritte-nav-bar-content-container___H-WMO_1-
|
|
286
|
+
.magritte-nav-bar-content-container___H-WMO_1-4-0 .magritte-next-pane___H2oxQ_1-4-0 .magritte-nav-bar-stage___amDz7_1-4-0,
|
|
287
|
+
.magritte-nav-bar-content-container___H-WMO_1-4-0 .magritte-next-pane___H2oxQ_1-4-0 .nav-bar-layout-animation-stage-start,
|
|
288
|
+
.magritte-nav-bar-content-container___H-WMO_1-4-0 .magritte-next-pane___H2oxQ_1-4-0 .nav-bar-layout-animation-stage-end{
|
|
289
289
|
padding-top:8px;
|
|
290
290
|
}
|
|
291
|
-
.magritte-last-pane___Hf2No_1-
|
|
292
|
-
.magritte-last-pane___Hf2No_1-
|
|
293
|
-
.magritte-last-pane___Hf2No_1-
|
|
291
|
+
.magritte-last-pane___Hf2No_1-4-0 .magritte-nav-bar-stage___amDz7_1-4-0,
|
|
292
|
+
.magritte-last-pane___Hf2No_1-4-0 .nav-bar-layout-animation-stage-start,
|
|
293
|
+
.magritte-last-pane___Hf2No_1-4-0 .nav-bar-layout-animation-stage-end{
|
|
294
294
|
padding-bottom:var(--magritte-ui-nav-bar-stage-padding-bottom-override, 8px);
|
|
295
295
|
}
|
|
296
|
-
.magritte-next-pane___H2oxQ_1-
|
|
297
|
-
.magritte-next-pane___H2oxQ_1-
|
|
298
|
-
.magritte-next-pane___H2oxQ_1-
|
|
296
|
+
.magritte-next-pane___H2oxQ_1-4-0 .magritte-last-pane___Hf2No_1-4-0 .magritte-nav-bar-stage___amDz7_1-4-0,
|
|
297
|
+
.magritte-next-pane___H2oxQ_1-4-0 .magritte-last-pane___Hf2No_1-4-0 .nav-bar-layout-animation-stage-start,
|
|
298
|
+
.magritte-next-pane___H2oxQ_1-4-0 .magritte-last-pane___Hf2No_1-4-0 .nav-bar-layout-animation-stage-end{
|
|
299
299
|
padding-bottom:var(--magritte-ui-nav-bar-stage-padding-bottom-override, 16px);
|
|
300
300
|
}
|
|
301
|
-
.magritte-nav-bar-stage___amDz7_1-
|
|
301
|
+
.magritte-nav-bar-stage___amDz7_1-4-0{
|
|
302
302
|
padding:8px var(--magritte-ui-nav-bar-stage-horizontal-padding-override, 16px);
|
|
303
303
|
}
|
|
304
|
-
.magritte-metrics-mode___h38aX_1-
|
|
305
|
-
.magritte-metrics-mode___h38aX_1-
|
|
306
|
-
.magritte-metrics-mode___h38aX_1-
|
|
304
|
+
.magritte-metrics-mode___h38aX_1-4-0 .magritte-morph-item___8kF46_1-4-0,
|
|
305
|
+
.magritte-metrics-mode___h38aX_1-4-0 .magritte-pane___f8eFC_1-4-0,
|
|
306
|
+
.magritte-metrics-mode___h38aX_1-4-0 .magritte-next-pane___H2oxQ_1-4-0{
|
|
307
307
|
transform:none !important;
|
|
308
308
|
}
|
|
309
309
|
.nav-bar-layout-animation-stage-end,
|
|
@@ -314,43 +314,49 @@
|
|
|
314
314
|
height:auto !important;
|
|
315
315
|
transform:none !important;
|
|
316
316
|
}
|
|
317
|
-
.nav-bar-layout-animation-stage-end .magritte-layout-morph___I3SPy_1-
|
|
318
|
-
.nav-bar-layout-animation-stage-start .magritte-layout-morph___I3SPy_1-
|
|
317
|
+
.nav-bar-layout-animation-stage-end .magritte-layout-morph___I3SPy_1-4-0,
|
|
318
|
+
.nav-bar-layout-animation-stage-start .magritte-layout-morph___I3SPy_1-4-0{
|
|
319
319
|
position:static !important;
|
|
320
320
|
width:auto !important;
|
|
321
321
|
height:auto !important;
|
|
322
322
|
transform:none !important;
|
|
323
323
|
}
|
|
324
|
-
.magritte-layout-morph___I3SPy_1-
|
|
324
|
+
.magritte-layout-morph___I3SPy_1-4-0{
|
|
325
325
|
display:block;
|
|
326
326
|
position:absolute;
|
|
327
327
|
transform-origin:var(--magritte-ui-morph-item-transform-origin-x, center) var(--magritte-ui-morph-item-transform-origin-y, center);
|
|
328
328
|
z-index:3;
|
|
329
329
|
}
|
|
330
|
-
.magritte-animation-stage-progress___5FthT_1-
|
|
330
|
+
.magritte-animation-stage-progress___5FthT_1-4-0 .magritte-layout-morph___I3SPy_1-4-0 > *{
|
|
331
331
|
margin:0 !important;
|
|
332
332
|
}
|
|
333
|
-
.magritte-layout-morph-start___9-krP_1-
|
|
333
|
+
.magritte-layout-morph-start___9-krP_1-4-0{
|
|
334
334
|
z-index:2;
|
|
335
335
|
}
|
|
336
|
-
.magritte-layout-morph-end___LIg4d_1-
|
|
336
|
+
.magritte-layout-morph-end___LIg4d_1-4-0{
|
|
337
337
|
z-index:1;
|
|
338
338
|
}
|
|
339
|
-
.nav-bar-layout-animation-stage-start .magritte-layout-morph___I3SPy_1-
|
|
339
|
+
.nav-bar-layout-animation-stage-start .magritte-layout-morph___I3SPy_1-4-0{
|
|
340
340
|
display:contents;
|
|
341
341
|
}
|
|
342
|
-
.nav-bar-layout-animation-stage-start .magritte-layout-morph-end___LIg4d_1-
|
|
342
|
+
.nav-bar-layout-animation-stage-start .magritte-layout-morph-end___LIg4d_1-4-0{
|
|
343
343
|
display:none;
|
|
344
344
|
}
|
|
345
|
-
.nav-bar-layout-animation-stage-end .magritte-layout-morph___I3SPy_1-
|
|
345
|
+
.nav-bar-layout-animation-stage-end .magritte-layout-morph___I3SPy_1-4-0{
|
|
346
346
|
display:contents;
|
|
347
347
|
}
|
|
348
|
-
.nav-bar-layout-animation-stage-end .magritte-layout-morph-start___9-krP_1-
|
|
348
|
+
.nav-bar-layout-animation-stage-end .magritte-layout-morph-start___9-krP_1-4-0{
|
|
349
349
|
display:none;
|
|
350
350
|
}
|
|
351
|
-
.magritte-divider-container___-NdWi_1-
|
|
351
|
+
.magritte-divider-container___-NdWi_1-4-0{
|
|
352
352
|
position:absolute;
|
|
353
353
|
width:100%;
|
|
354
354
|
bottom:0;
|
|
355
355
|
z-index:1;
|
|
356
356
|
}
|
|
357
|
+
.magritte-navbar-transparent-start___wysv0_1-4-0 .magritte-divider-container___-NdWi_1-4-0{
|
|
358
|
+
opacity:var(--magritte-ui-navbar-animation-progress);
|
|
359
|
+
}
|
|
360
|
+
.magritte-navbar-transparent-end___6KqLR_1-4-0 .magritte-divider-container___-NdWi_1-4-0{
|
|
361
|
+
opacity:calc(1 - var(--magritte-ui-navbar-animation-progress));
|
|
362
|
+
}
|
package/index.js
CHANGED
|
@@ -15,7 +15,7 @@ import 'react/jsx-runtime';
|
|
|
15
15
|
import 'react';
|
|
16
16
|
import 'classnames';
|
|
17
17
|
import '@hh.ru/magritte-ui-icon';
|
|
18
|
-
import './nav-bar-
|
|
18
|
+
import './nav-bar-B7uPipzE.js';
|
|
19
19
|
import './internal/MetricsProvider.js';
|
|
20
20
|
import './internal/utils.js';
|
|
21
21
|
import 'motion';
|
|
@@ -24,7 +24,10 @@ const useNavBarMetrics = (panesRegistry, rootRef, scrollAdapter) => {
|
|
|
24
24
|
top,
|
|
25
25
|
bottom: top + height,
|
|
26
26
|
animationHeight: heightDelta ||
|
|
27
|
-
panes.filter((p) => p.animated).reduce((
|
|
27
|
+
panes.filter((p) => p.animated).reduce((acc, p) => acc + (p.startHeight ?? 0), 0) ||
|
|
28
|
+
// если ни одна панель не схлопывается и не анимируется, всё равно нужен ненулевой
|
|
29
|
+
// диапазон скролла, чтобы проигрывалась анимация прозрачности фона навбара
|
|
30
|
+
height,
|
|
28
31
|
};
|
|
29
32
|
}
|
|
30
33
|
return metricsRef.current;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavBarMetrics.js","sources":["src/internal/useNavBarMetrics.ts"],"sourcesContent":["import { type MutableRefObject, RefObject, useRef } from 'react';\n\nimport { type PaneStore } from '@hh.ru/magritte-ui-nav-bar/internal/PaneStore';\nimport { ScrollAdapter } from '@hh.ru/magritte-ui-nav-bar/internal/useScrollAdapter';\nimport { getRelativeOffset, useActualRef, useInitOnce } from '@hh.ru/magritte-ui-nav-bar/internal/utils';\n\nexport interface NavBarMetrics {\n heightDelta: number;\n top: number;\n bottom: number;\n animationHeight: number;\n}\n\nexport const useNavBarMetrics = (\n panesRegistry: Set<PaneStore>,\n rootRef: RefObject<HTMLElement>,\n scrollAdapter: ScrollAdapter\n): [() => NavBarMetrics, VoidFunction] => {\n const metricsRef: MutableRefObject<NavBarMetrics | null> = useRef(null);\n const panesRegistryRef = useActualRef(panesRegistry);\n\n const getNavBarMetrics = useInitOnce(() => () => {\n if (!metricsRef.current) {\n // расстояние от верхнего края NavBar до верхнего края контейнера со скроллом\n const top = getRelativeOffset(scrollAdapter, rootRef.current);\n const panes = [...panesRegistryRef.current.values()].map((pane) => pane.data);\n const heightDelta = panes.reduce(\n (delta, pane) =>\n delta +\n (pane.foldable\n ? (pane.startHeight ?? 0)\n : (pane.startHeight ?? 0) - (pane.endHeight ?? pane.startHeight ?? 0)),\n 0\n );\n const positions = panes\n .map((pane) => ({ top: pane.top ?? 0, bottom: (pane.top ?? 0) + (pane.startHeight ?? 0) }))\n .sort((a, b) => a.top - b.top);\n const height = (positions[positions.length - 1]?.bottom ?? 0) - (positions[0]?.top ?? 0);\n\n metricsRef.current = {\n heightDelta,\n top,\n bottom: top + height,\n animationHeight:\n heightDelta ||\n panes.filter((p) => p.animated).reduce((
|
|
1
|
+
{"version":3,"file":"useNavBarMetrics.js","sources":["src/internal/useNavBarMetrics.ts"],"sourcesContent":["import { type MutableRefObject, RefObject, useRef } from 'react';\n\nimport { type PaneStore } from '@hh.ru/magritte-ui-nav-bar/internal/PaneStore';\nimport { ScrollAdapter } from '@hh.ru/magritte-ui-nav-bar/internal/useScrollAdapter';\nimport { getRelativeOffset, useActualRef, useInitOnce } from '@hh.ru/magritte-ui-nav-bar/internal/utils';\n\nexport interface NavBarMetrics {\n heightDelta: number;\n top: number;\n bottom: number;\n animationHeight: number;\n}\n\nexport const useNavBarMetrics = (\n panesRegistry: Set<PaneStore>,\n rootRef: RefObject<HTMLElement>,\n scrollAdapter: ScrollAdapter\n): [() => NavBarMetrics, VoidFunction] => {\n const metricsRef: MutableRefObject<NavBarMetrics | null> = useRef(null);\n const panesRegistryRef = useActualRef(panesRegistry);\n\n const getNavBarMetrics = useInitOnce(() => () => {\n if (!metricsRef.current) {\n // расстояние от верхнего края NavBar до верхнего края контейнера со скроллом\n const top = getRelativeOffset(scrollAdapter, rootRef.current);\n const panes = [...panesRegistryRef.current.values()].map((pane) => pane.data);\n const heightDelta = panes.reduce(\n (delta, pane) =>\n delta +\n (pane.foldable\n ? (pane.startHeight ?? 0)\n : (pane.startHeight ?? 0) - (pane.endHeight ?? pane.startHeight ?? 0)),\n 0\n );\n const positions = panes\n .map((pane) => ({ top: pane.top ?? 0, bottom: (pane.top ?? 0) + (pane.startHeight ?? 0) }))\n .sort((a, b) => a.top - b.top);\n const height = (positions[positions.length - 1]?.bottom ?? 0) - (positions[0]?.top ?? 0);\n\n metricsRef.current = {\n heightDelta,\n top,\n bottom: top + height,\n animationHeight:\n heightDelta ||\n panes.filter((p) => p.animated).reduce((acc, p) => acc + (p.startHeight ?? 0), 0) ||\n // если ни одна панель не схлопывается и не анимируется, всё равно нужен ненулевой\n // диапазон скролла, чтобы проигрывалась анимация прозрачности фона навбара\n height,\n };\n }\n\n return metricsRef.current;\n });\n\n const invalidateMetricsCache = useInitOnce(() => () => (metricsRef.current = null));\n\n return [getNavBarMetrics, invalidateMetricsCache];\n};\n"],"names":[],"mappings":";;;;AAaa,MAAA,gBAAgB,GAAG,CAC5B,aAA6B,EAC7B,OAA+B,EAC/B,aAA4B,KACS;AACrC,IAAA,MAAM,UAAU,GAA2C,MAAM,CAAC,IAAI,CAAC,CAAC;AACxE,IAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAErD,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,MAAK;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;;YAErB,MAAM,GAAG,GAAG,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9E,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,KAAK,EAAE,IAAI,KACR,KAAK;iBACJ,IAAI,CAAC,QAAQ;AACV,uBAAG,IAAI,CAAC,WAAW,IAAI,CAAC;sBACtB,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAC9E,CAAC,CACJ,CAAC;YACF,MAAM,SAAS,GAAG,KAAK;AAClB,iBAAA,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1F,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAEzF,UAAU,CAAC,OAAO,GAAG;gBACjB,WAAW;gBACX,GAAG;gBACH,MAAM,EAAE,GAAG,GAAG,MAAM;AACpB,gBAAA,eAAe,EACX,WAAW;AACX,oBAAA,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;;;oBAGjF,MAAM;aACb,CAAC;SACL;QAED,OAAO,UAAU,CAAC,OAAO,CAAC;AAC9B,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,OAAO,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;AAEpF,IAAA,OAAO,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;AACtD;;;;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import './index.css';
|
|
2
|
+
var styles = {"actions-container":"magritte-actions-container___CBgYW_1-4-0","actionsContainer":"magritte-actions-container___CBgYW_1-4-0","actions-no-children":"magritte-actions-no-children___rgJUl_1-4-0","actionsNoChildren":"magritte-actions-no-children___rgJUl_1-4-0","actions-left-slot":"magritte-actions-left-slot___DNOj0_1-4-0","actionsLeftSlot":"magritte-actions-left-slot___DNOj0_1-4-0","actions-right-slot":"magritte-actions-right-slot___aodtj_1-4-0","actionsRightSlot":"magritte-actions-right-slot___aodtj_1-4-0","navbar-transparent-end":"magritte-navbar-transparent-end___6KqLR_1-4-0","navbarTransparentEnd":"magritte-navbar-transparent-end___6KqLR_1-4-0","actions-start-stage":"magritte-actions-start-stage___MJ67a_1-4-0","actionsStartStage":"magritte-actions-start-stage___MJ67a_1-4-0","actions-side-slot-content":"magritte-actions-side-slot-content___TlHrX_1-4-0","actionsSideSlotContent":"magritte-actions-side-slot-content___TlHrX_1-4-0","actions-icon-morph":"magritte-actions-icon-morph___-nNgW_1-4-0","actionsIconMorph":"magritte-actions-icon-morph___-nNgW_1-4-0","navbar-transparent-start":"magritte-navbar-transparent-start___wysv0_1-4-0","navbarTransparentStart":"magritte-navbar-transparent-start___wysv0_1-4-0","actions-end-stage":"magritte-actions-end-stage___qHtTV_1-4-0","actionsEndStage":"magritte-actions-end-stage___qHtTV_1-4-0","navbar-not-transparent":"magritte-navbar-not-transparent___5KZNp_1-4-0","navbarNotTransparent":"magritte-navbar-not-transparent___5KZNp_1-4-0","navbar-transparent":"magritte-navbar-transparent___ULEh8_1-4-0","navbarTransparent":"magritte-navbar-transparent___ULEh8_1-4-0","actions-only-stage":"magritte-actions-only-stage___cg10A_1-4-0","actionsOnlyStage":"magritte-actions-only-stage___cg10A_1-4-0","actions-side-slot-content-clone":"magritte-actions-side-slot-content-clone___jDxVm_1-4-0","actionsSideSlotContentClone":"magritte-actions-side-slot-content-clone___jDxVm_1-4-0","actions-center-slot":"magritte-actions-center-slot___hLAy6_1-4-0","actionsCenterSlot":"magritte-actions-center-slot___hLAy6_1-4-0","actions-center-slot-centered":"magritte-actions-center-slot-centered___merXQ_1-4-0","actionsCenterSlotCentered":"magritte-actions-center-slot-centered___merXQ_1-4-0","align-top":"magritte-align-top___-QSFW_1-4-0","alignTop":"magritte-align-top___-QSFW_1-4-0","align-bottom":"magritte-align-bottom___FliHI_1-4-0","alignBottom":"magritte-align-bottom___FliHI_1-4-0","title-container-wrapper":"magritte-title-container-wrapper___DQUcj_1-4-0","titleContainerWrapper":"magritte-title-container-wrapper___DQUcj_1-4-0","title-main-part":"magritte-title-main-part___npoHN_1-4-0","titleMainPart":"magritte-title-main-part___npoHN_1-4-0","title-left-slot":"magritte-title-left-slot___HTE7h_1-4-0","titleLeftSlot":"magritte-title-left-slot___HTE7h_1-4-0","title-container":"magritte-title-container___y9AIx_1-4-0","titleContainer":"magritte-title-container___y9AIx_1-4-0","subtitle-container":"magritte-subtitle-container___nVUBu_1-4-0","subtitleContainer":"magritte-subtitle-container___nVUBu_1-4-0","text-morph-item":"magritte-text-morph-item___-vXru_1-4-0","textMorphItem":"magritte-text-morph-item___-vXru_1-4-0","centered":"magritte-centered___Y2mlP_1-4-0","title-morph-item":"magritte-title-morph-item___t7Wf3_1-4-0","titleMorphItem":"magritte-title-morph-item___t7Wf3_1-4-0","title":"magritte-title___ZbLgP_1-4-0","size-large":"magritte-size-large___ISXfH_1-4-0","sizeLarge":"magritte-size-large___ISXfH_1-4-0","pane-content":"magritte-pane-content___UVmC6_1-4-0","paneContent":"magritte-pane-content___UVmC6_1-4-0","pane-background":"magritte-pane-background___PDZAX_1-4-0","paneBackground":"magritte-pane-background___PDZAX_1-4-0","morph-item":"magritte-morph-item___8kF46_1-4-0","morphItem":"magritte-morph-item___8kF46_1-4-0","morph-item-top":"magritte-morph-item-top___WPEkn_1-4-0","morphItemTop":"magritte-morph-item-top___WPEkn_1-4-0","morph-item-bottom":"magritte-morph-item-bottom___zNbsF_1-4-0","morphItemBottom":"magritte-morph-item-bottom___zNbsF_1-4-0","morph-item-left":"magritte-morph-item-left___T6AMW_1-4-0","morphItemLeft":"magritte-morph-item-left___T6AMW_1-4-0","morph-item-right":"magritte-morph-item-right___EuT1E_1-4-0","morphItemRight":"magritte-morph-item-right___EuT1E_1-4-0","pane":"magritte-pane___f8eFC_1-4-0","start-state-container":"magritte-start-state-container___giBVb_1-4-0","startStateContainer":"magritte-start-state-container___giBVb_1-4-0","end-state-container":"magritte-end-state-container___uiW8Q_1-4-0","endStateContainer":"magritte-end-state-container___uiW8Q_1-4-0","content-container":"magritte-content-container___7s7vv_1-4-0","contentContainer":"magritte-content-container___7s7vv_1-4-0","next-pane":"magritte-next-pane___H2oxQ_1-4-0","nextPane":"magritte-next-pane___H2oxQ_1-4-0","nav-bar":"magritte-nav-bar___RRGe0_1-4-0","navBar":"magritte-nav-bar___RRGe0_1-4-0","nav-bar-overlay":"magritte-nav-bar-overlay___Mq5ZD_1-4-0","navBarOverlay":"magritte-nav-bar-overlay___Mq5ZD_1-4-0","nav-bar-overlay-wrapper":"magritte-nav-bar-overlay-wrapper___y1VpY_1-4-0","navBarOverlayWrapper":"magritte-nav-bar-overlay-wrapper___y1VpY_1-4-0","nav-bar-content-container":"magritte-nav-bar-content-container___H-WMO_1-4-0","navBarContentContainer":"magritte-nav-bar-content-container___H-WMO_1-4-0","nav-bar-panes-container":"magritte-nav-bar-panes-container___5ZDLa_1-4-0","navBarPanesContainer":"magritte-nav-bar-panes-container___5ZDLa_1-4-0","nav-bar-progressive-blur":"magritte-nav-bar-progressive-blur___qyeUV_1-4-0","navBarProgressiveBlur":"magritte-nav-bar-progressive-blur___qyeUV_1-4-0","nav-bar-stage":"magritte-nav-bar-stage___amDz7_1-4-0","navBarStage":"magritte-nav-bar-stage___amDz7_1-4-0","last-pane":"magritte-last-pane___Hf2No_1-4-0","lastPane":"magritte-last-pane___Hf2No_1-4-0","metrics-mode":"magritte-metrics-mode___h38aX_1-4-0","metricsMode":"magritte-metrics-mode___h38aX_1-4-0","layout-morph":"magritte-layout-morph___I3SPy_1-4-0","layoutMorph":"magritte-layout-morph___I3SPy_1-4-0","animation-stage-progress":"magritte-animation-stage-progress___5FthT_1-4-0","animationStageProgress":"magritte-animation-stage-progress___5FthT_1-4-0","layout-morph-start":"magritte-layout-morph-start___9-krP_1-4-0","layoutMorphStart":"magritte-layout-morph-start___9-krP_1-4-0","layout-morph-end":"magritte-layout-morph-end___LIg4d_1-4-0","layoutMorphEnd":"magritte-layout-morph-end___LIg4d_1-4-0","divider-container":"magritte-divider-container___-NdWi_1-4-0","dividerContainer":"magritte-divider-container___-NdWi_1-4-0"};
|
|
3
|
+
|
|
4
|
+
export { styles as s };
|
|
5
|
+
//# sourceMappingURL=nav-bar-B7uPipzE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-bar-B7uPipzE.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hh.ru/magritte-ui-nav-bar",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"sideEffects": [
|
|
@@ -29,16 +29,16 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@hh.ru/magritte-common-use-multiple-refs": "1.1.11",
|
|
31
31
|
"@hh.ru/magritte-common-use-when-font-loaded": "1.0.14",
|
|
32
|
-
"@hh.ru/magritte-design-tokens": "24.7.
|
|
32
|
+
"@hh.ru/magritte-design-tokens": "24.7.1",
|
|
33
33
|
"@hh.ru/magritte-internal-accessible-region": "1.0.1",
|
|
34
34
|
"@hh.ru/magritte-internal-custom-scroll": "2.1.1",
|
|
35
35
|
"@hh.ru/magritte-internal-default-props-context": "1.0.2",
|
|
36
36
|
"@hh.ru/magritte-internal-slot-registry": "1.1.0",
|
|
37
|
-
"@hh.ru/magritte-ui-divider": "3.1.
|
|
38
|
-
"@hh.ru/magritte-ui-icon": "14.2.
|
|
39
|
-
"@hh.ru/magritte-ui-layer": "3.2.
|
|
37
|
+
"@hh.ru/magritte-ui-divider": "3.1.4",
|
|
38
|
+
"@hh.ru/magritte-ui-icon": "14.2.10",
|
|
39
|
+
"@hh.ru/magritte-ui-layer": "3.2.5",
|
|
40
40
|
"@hh.ru/magritte-ui-mock-component": "1.1.7",
|
|
41
|
-
"@hh.ru/magritte-ui-typography": "5.3.
|
|
41
|
+
"@hh.ru/magritte-ui-typography": "5.3.4"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "9f10e45677eb8f50f47c766674fb072a4dc88dc0"
|
|
44
44
|
}
|
package/public/Actions.js
CHANGED
|
@@ -7,7 +7,7 @@ import { EnvironmentFingerprintNode } from './EnvironmentFingerprintNode.js';
|
|
|
7
7
|
import { Morph } from './Morph.js';
|
|
8
8
|
import { useAnimationStage } from './Stage.js';
|
|
9
9
|
import { useActionsDefaultProps, useActionsIconsDefaultProps } from './defaultProps.js';
|
|
10
|
-
import { s as styles } from '../nav-bar-
|
|
10
|
+
import { s as styles } from '../nav-bar-B7uPipzE.js';
|
|
11
11
|
import '../internal/MetricsProvider.js';
|
|
12
12
|
import '../internal/utils.js';
|
|
13
13
|
import 'motion';
|
package/public/LayoutMorph.js
CHANGED
|
@@ -10,7 +10,7 @@ import { usePaneStore } from '../internal/PaneStore.js';
|
|
|
10
10
|
import { useInert } from '../internal/useInert.js';
|
|
11
11
|
import { useActualRef, useStoreSyncedTransform, lerp, calcMorphParams } from '../internal/utils.js';
|
|
12
12
|
import { AnimationStageContext } from './LayoutStage.js';
|
|
13
|
-
import { s as styles } from '../nav-bar-
|
|
13
|
+
import { s as styles } from '../nav-bar-B7uPipzE.js';
|
|
14
14
|
import '../internal/KeyedSubscriptions.js';
|
|
15
15
|
import 'motion';
|
|
16
16
|
import '../internal/NavBarContext.js';
|
package/public/LayoutStage.js
CHANGED
|
@@ -9,7 +9,7 @@ import { MorphStoreProvider, useMorphStore } from '../internal/MorphStore.js';
|
|
|
9
9
|
import { usePaneStore } from '../internal/PaneStore.js';
|
|
10
10
|
import { useInitOnce } from '../internal/utils.js';
|
|
11
11
|
import { EnvironmentFingerprintNode, useEnvironmentFingerprint } from './EnvironmentFingerprintNode.js';
|
|
12
|
-
import { s as styles } from '../nav-bar-
|
|
12
|
+
import { s as styles } from '../nav-bar-B7uPipzE.js';
|
|
13
13
|
import '../internal/KeyedSubscriptions.js';
|
|
14
14
|
import 'motion';
|
|
15
15
|
import '../internal/NavBarContext.js';
|
package/public/Morph.js
CHANGED
|
@@ -9,7 +9,7 @@ import { usePaneStore } from '../internal/PaneStore.js';
|
|
|
9
9
|
import { useStoreSyncedTransform, calcMorphParams, lerp } from '../internal/utils.js';
|
|
10
10
|
import { useEnvironmentFingerprint } from './EnvironmentFingerprintNode.js';
|
|
11
11
|
import { useAnimationStage } from './Stage.js';
|
|
12
|
-
import { s as styles } from '../nav-bar-
|
|
12
|
+
import { s as styles } from '../nav-bar-B7uPipzE.js';
|
|
13
13
|
import '../internal/KeyedSubscriptions.js';
|
|
14
14
|
import 'motion';
|
|
15
15
|
import '../internal/NavBarContext.js';
|
package/public/NavBar.js
CHANGED
|
@@ -18,7 +18,7 @@ import { useInitOnce, scheduleMicro, scheduleMacro, remap } from '../internal/ut
|
|
|
18
18
|
import { isPaneElement, ExternalPane } from './Pane.js';
|
|
19
19
|
import { useTriggerSlot } from './TriggerContext.js';
|
|
20
20
|
import { useNavBarRootDefaultProps } from './defaultProps.js';
|
|
21
|
-
import { s as styles } from '../nav-bar-
|
|
21
|
+
import { s as styles } from '../nav-bar-B7uPipzE.js';
|
|
22
22
|
import '@hh.ru/magritte-internal-custom-scroll';
|
|
23
23
|
import 'motion';
|
|
24
24
|
import '../internal/MorphStore.js';
|
|
@@ -136,7 +136,7 @@ const NavBar = (props) => {
|
|
|
136
136
|
[styles.navbarNotTransparent]: !transparent,
|
|
137
137
|
[styles.navbarTransparent]: transparent === true,
|
|
138
138
|
[styles.navBarOverlay]: overlay,
|
|
139
|
-
}), ref: rootRef, measureClassName: styles.metricsMode, children: jsx("div", { className: styles.navBarOverlayWrapper, children: jsxs(
|
|
139
|
+
}), ref: rootRef, measureClassName: styles.metricsMode, children: jsx("div", { className: styles.navBarOverlayWrapper, children: jsxs(motion.div, { className: styles.navBarContentContainer, style: { '--magritte-ui-navbar-animation-progress': totalAnimationProgress }, children: [jsx("div", { className: styles.navBarPanesContainer, children: jsx(NavBarContext.Provider, { value: registerPaneStore, children: nested }) }), jsx(motion.div, { className: styles.dividerContainer, style: { ...dividerStyle, visibility: dividerVisibility }, children: jsx(Divider, {}) })] }) }) }) }));
|
|
140
140
|
};
|
|
141
141
|
|
|
142
142
|
export { NavBar };
|
package/public/NavBar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavBar.js","sources":["src/public/NavBar.tsx"],"sourcesContent":["import React, { Children, type ReactNode, type RefObject, useLayoutEffect, useRef, type FC } from 'react';\nimport classNames from 'classnames';\nimport { motion, type MotionStyle, MotionValue, frame } from 'motion/react';\n\nimport { Divider, type ShowDivider } from '@hh.ru/magritte-ui-divider';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { MetricsProvider } from '@hh.ru/magritte-ui-nav-bar/internal/MetricsProvider';\nimport { NavBarContext } from '@hh.ru/magritte-ui-nav-bar/internal/NavBarContext';\nimport { PaneStore } from '@hh.ru/magritte-ui-nav-bar/internal/PaneStore';\nimport { useAnimationRanges } from '@hh.ru/magritte-ui-nav-bar/internal/useAnimationRanges';\nimport { useBindScrollToAnimationProgress } from '@hh.ru/magritte-ui-nav-bar/internal/useBindScrollToAnimationProgress';\nimport { useNavBarMetrics } from '@hh.ru/magritte-ui-nav-bar/internal/useNavBarMetrics';\nimport { useResetFocus } from '@hh.ru/magritte-ui-nav-bar/internal/useResetFocus';\nimport { useScrollAdapter } from '@hh.ru/magritte-ui-nav-bar/internal/useScrollAdapter';\nimport { useSnapScroll } from '@hh.ru/magritte-ui-nav-bar/internal/useSnapScroll';\nimport { useSyncMotionValue } from '@hh.ru/magritte-ui-nav-bar/internal/useSyncMotionValue';\nimport { remap, scheduleMicro, scheduleMacro, useInitOnce } from '@hh.ru/magritte-ui-nav-bar/internal/utils';\nimport {\n type PaneElement,\n type InternalPaneProps,\n ExternalPane,\n isPaneElement,\n} from '@hh.ru/magritte-ui-nav-bar/public/Pane';\nimport { type TriggerEdge, useTriggerSlot } from '@hh.ru/magritte-ui-nav-bar/public/TriggerContext';\nimport { useNavBarRootDefaultProps } from '@hh.ru/magritte-ui-nav-bar/public/defaultProps';\n\nimport styles from './nav-bar.less';\n\nexport interface NavBarProps {\n /**\n * В качестве потомков могут передаваться компоненты <Pane /> или произвольные элементы,\n * которые будут автоматически обёрнуты в <Pane />.\n */\n children: ReactNode;\n /**\n * Управляет режимом прозрачности:\n * -- Прозрачность отключена (`false`)\n * -- Прозрачный всегда (`true`)\n * -- Прозрачный в начале анимации (`start`)\n * -- Прозрачный в конце анимации (`end`)\n * @default false\n */\n transparent?: 'start' | 'end' | boolean;\n /**\n * Управляет позицией триггера начала анимации\n * @default start\n */\n startTriggerPosition?: 'start' | 'full-area' | RefObject<HTMLElement | null>;\n /**\n * Край элемента `startTriggerPosition`, по которому измеряется позиция начала анимации.\n * @default top\n */\n startTriggerEdge?: TriggerEdge;\n /**\n * Управляет позицией триггера конца анимации. Если не передан вычисляется автоматически на основе изменения\n * высоты навбара в процессе анимации и позиции триггера начала анмиации. Если передано число, то интерпретируется\n * как отступ в пикселях от позиции триггера старта анимации.\n */\n endTriggerPosition?: RefObject<HTMLElement | null> | number;\n /**\n * Край элемента `endTriggerPosition`, по которому измеряется позиция конца анимации.\n * @default bottom\n */\n endTriggerEdge?: TriggerEdge;\n /**\n * Включает режим когда NavBar не занимает место в лейауте и контент располагается под ним.\n * @default false\n */\n overlay?: boolean;\n /**\n * Управляет режимом автодоскролла. По умолчанию включен.\n * @default true\n */\n snapScroll?: boolean;\n /**\n * Управляет режимом отображения дивайдера:\n * - `false` дивайдер отключен\n * - `always` дивайдер отображается постоянно\n * - `with-scroll` дивайдер отображается только когда контент подскроллен под NavBar\n * @default false\n */\n showDivider?: ShowDivider;\n /**\n * Принимает MotionValue значение которого будет обновляться синхронно с анимацией всего NavBar.\n * Прогресс анимации представляется в виде числа 0..1\n * Предназначен для синхронизации внешних анимаций с анимациями NavBar.\n */\n animationProgress?: MotionValue<number>;\n}\n\nexport const NavBar: FC<NavBarProps> = (props) => {\n const defaultProps = useNavBarRootDefaultProps();\n const startSlot = useTriggerSlot('startTrigger');\n const endSlot = useTriggerSlot('endTrigger');\n // Приоритет (от высшего к низшему): явные пропсы > NavBarDefaultPropsContext > слоты `Trigger` > дефолты.\n const slotProps = {\n ...(startSlot ? { startTriggerPosition: startSlot.ref, startTriggerEdge: startSlot.edge } : null),\n ...(endSlot ? { endTriggerPosition: endSlot.ref, endTriggerEdge: endSlot.edge } : null),\n };\n const {\n children,\n transparent = false,\n startTriggerPosition = 'start',\n startTriggerEdge = 'top',\n endTriggerPosition,\n endTriggerEdge = 'bottom',\n overlay = false,\n snapScroll: scrollSnapping = true,\n showDivider = false,\n animationProgress,\n } = { ...slotProps, ...defaultProps, ...props };\n const paneStoreRegistry = useInitOnce(() => new Set<PaneStore>());\n const prevFullHeight = useRef<null | number>(0);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const [scrollAdapter, scrollPosition] = useScrollAdapter(rootRef);\n const [getMetrics, invalidateMetrics] = useNavBarMetrics(paneStoreRegistry, rootRef, scrollAdapter);\n const [getAnimationRanges, invalidateAnimationRanges] = useAnimationRanges(paneStoreRegistry, getMetrics);\n const [bindScrollToAnimation, getClosestStops, totalAnimationProgress, dividerStyle] =\n useBindScrollToAnimationProgress(\n scrollPosition,\n getMetrics,\n getAnimationRanges,\n scrollAdapter,\n startTriggerPosition,\n endTriggerPosition,\n startTriggerEdge,\n endTriggerEdge\n );\n const snapScroll = useSnapScroll(\n scrollPosition,\n totalAnimationProgress,\n scrollAdapter,\n getClosestStops,\n scrollSnapping\n );\n\n // При получении размеров важно дождаться применения MotionValue к DOM, поэтому используем frame.render\n const bindScrollToAnimationScheduled = useInitOnce(() => scheduleMicro(() => frame.render(bindScrollToAnimation)));\n useResetFocus(rootRef, totalAnimationProgress);\n useSyncMotionValue(totalAnimationProgress, animationProgress);\n\n const dividerVisibility =\n // eslint-disable-next-line no-nested-ternary\n showDivider === 'with-scroll' ? dividerStyle.visibility : showDivider ? 'visible' : 'hidden';\n\n const registerPaneStore = useInitOnce(() => {\n const subscriptions: VoidFunction[] = [];\n\n const updateAnimationParams = () => {\n subscriptions.length = 0;\n invalidateMetrics();\n invalidateAnimationRanges();\n bindScrollToAnimationScheduled();\n const navBarMetrics = getMetrics();\n const fullPanesStartHeight = navBarMetrics.bottom - navBarMetrics.top;\n\n let scroll = scrollAdapter.getScrollTop();\n if (prevFullHeight.current !== null && scroll !== 0) {\n const heightDelta = fullPanesStartHeight - prevFullHeight.current;\n scroll += heightDelta;\n\n requestAnimationFrame(() => {\n scrollPosition.jump(scrollAdapter.getScrollTop() - 1);\n scrollPosition.jump(scrollAdapter.getScrollTop());\n });\n }\n\n const animationRanges = getAnimationRanges();\n [...paneStoreRegistry.values()].forEach((paneStore) => {\n const range = animationRanges.get(paneStore.get('id'));\n if (!range) {\n return;\n }\n const remapFn = remap(\n range[0] === 0 && range[1] === 0\n ? [0, 1]\n : [range[0] / navBarMetrics.animationHeight, range[1] / navBarMetrics.animationHeight],\n [0, 1]\n );\n const motionValue = paneStore.get('motionValue');\n motionValue.set(remapFn(totalAnimationProgress.get()));\n subscriptions.push(totalAnimationProgress.on('change', (value) => motionValue.set(remapFn(value))));\n });\n\n prevFullHeight.current = fullPanesStartHeight;\n };\n\n // основной триггер запуска updateAnimationParams это изменения размеров, обработка которых происходит\n // в очереди микрозадач, поэтому откладываем запуск функции до перехдоа к макрозадачам, чтобы сократить\n // количество вызовов при массовых изменениях\n const onChange = scheduleMacro(updateAnimationParams);\n\n return (paneStore: PaneStore) => {\n const unsubscribe = paneStore.onChange(\n ['startHeight', 'endHeight', 'top', 'foldable', 'animated'],\n onChange\n );\n paneStoreRegistry.add(paneStore);\n return () => {\n paneStoreRegistry.delete(paneStore);\n unsubscribe();\n };\n };\n });\n\n useLayoutEffect(() => {\n bindScrollToAnimation();\n snapScroll();\n if (!rootRef.current || (typeof startTriggerPosition === 'string' && !endTriggerPosition)) {\n return void 0;\n }\n return scrollAdapter.onResize(bindScrollToAnimationScheduled);\n }, [\n startTriggerPosition,\n endTriggerPosition,\n bindScrollToAnimation,\n bindScrollToAnimationScheduled,\n snapScroll,\n scrollAdapter,\n ]);\n\n // Оборачиваем потомков, не являющихся Pane, в Pane и вкладываем панели друг в друга через проп nextPane\n const childrenArray = Children.toArray(children);\n const nested = isPaneElement(childrenArray[0]) ? (\n childrenArray.reduceRight<PaneElement | null>((acc, child) => {\n if (!isPaneElement(child)) {\n return acc;\n }\n // cloneElement сужает конструктор до InternalPaneProps, поэтому возвращаем к PaneElement\n return React.cloneElement<InternalPaneProps>(child, {\n ...child.props,\n nextPane: acc,\n }) as PaneElement;\n }, null)\n ) : (\n <ExternalPane>{children}</ExternalPane>\n );\n\n return (\n <Layer layer=\"navigation-bar\">\n <MetricsProvider\n className={classNames(styles.navBar, {\n [styles.navbarTransparentStart]: transparent === 'start',\n [styles.navbarTransparentEnd]: transparent === 'end',\n [styles.navbarNotTransparent]: !transparent,\n [styles.navbarTransparent]: transparent === true,\n [styles.navBarOverlay]: overlay,\n })}\n ref={rootRef}\n measureClassName={styles.metricsMode}\n >\n <div className={styles.navBarOverlayWrapper}>\n <div className={styles.navBarContentContainer}>\n <motion.div\n style={{ '--magritte-ui-navbar-animation-progress': totalAnimationProgress } as MotionStyle}\n className={styles.navBarPanesContainer}\n >\n <NavBarContext.Provider value={registerPaneStore}>{nested}</NavBarContext.Provider>\n </motion.div>\n <motion.div\n className={styles.dividerContainer}\n style={{ ...dividerStyle, visibility: dividerVisibility }}\n >\n <Divider />\n </motion.div>\n </div>\n </div>\n </MetricsProvider>\n </Layer>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Fa,MAAA,MAAM,GAAoB,CAAC,KAAK,KAAI;AAC7C,IAAA,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAC;AACjD,IAAA,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AACjD,IAAA,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;;AAE7C,IAAA,MAAM,SAAS,GAAG;QACd,IAAI,SAAS,GAAG,EAAE,oBAAoB,EAAE,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI;QAChG,IAAI,OAAO,GAAG,EAAE,kBAAkB,EAAE,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI;KACzF,CAAC;IACF,MAAM,EACF,QAAQ,EACR,WAAW,GAAG,KAAK,EACnB,oBAAoB,GAAG,OAAO,EAC9B,gBAAgB,GAAG,KAAK,EACxB,kBAAkB,EAClB,cAAc,GAAG,QAAQ,EACzB,OAAO,GAAG,KAAK,EACf,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,WAAW,GAAG,KAAK,EACnB,iBAAiB,GACpB,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC;IAChD,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,IAAI,GAAG,EAAa,CAAC,CAAC;AAClE,IAAA,MAAM,cAAc,GAAG,MAAM,CAAgB,CAAC,CAAC,CAAC;AAChD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE7C,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAClE,IAAA,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACpG,IAAA,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,GAAG,kBAAkB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;AAC1G,IAAA,MAAM,CAAC,qBAAqB,EAAE,eAAe,EAAE,sBAAsB,EAAE,YAAY,CAAC,GAChF,gCAAgC,CAC5B,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,CACjB,CAAC;AACN,IAAA,MAAM,UAAU,GAAG,aAAa,CAC5B,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,cAAc,CACjB,CAAC;;IAGF,MAAM,8BAA8B,GAAG,WAAW,CAAC,MAAM,aAAa,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACnH,IAAA,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;AAC/C,IAAA,kBAAkB,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AAE9D,IAAA,MAAM,iBAAiB;;IAEnB,WAAW,KAAK,aAAa,GAAG,YAAY,CAAC,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjG,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAK;QACvC,MAAM,aAAa,GAAmB,EAAE,CAAC;QAEzC,MAAM,qBAAqB,GAAG,MAAK;AAC/B,YAAA,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,yBAAyB,EAAE,CAAC;AAC5B,YAAA,8BAA8B,EAAE,CAAC;AACjC,YAAA,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC;YACnC,MAAM,oBAAoB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;AAEtE,YAAA,IAAI,MAAM,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,cAAc,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;AACjD,gBAAA,MAAM,WAAW,GAAG,oBAAoB,GAAG,cAAc,CAAC,OAAO,CAAC;gBAClE,MAAM,IAAI,WAAW,CAAC;gBAEtB,qBAAqB,CAAC,MAAK;oBACvB,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;oBACtD,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC;AACtD,iBAAC,CAAC,CAAC;aACN;AAED,YAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;AAC7C,YAAA,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAClD,gBAAA,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,EAAE;oBACR,OAAO;iBACV;AACD,gBAAA,MAAM,OAAO,GAAG,KAAK,CACjB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5B,sBAAE,CAAC,CAAC,EAAE,CAAC,CAAC;sBACN,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,EAC1F,CAAC,CAAC,EAAE,CAAC,CAAC,CACT,CAAC;gBACF,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACjD,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACvD,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,aAAC,CAAC,CAAC;AAEH,YAAA,cAAc,CAAC,OAAO,GAAG,oBAAoB,CAAC;AAClD,SAAC,CAAC;;;;AAKF,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAEtD,OAAO,CAAC,SAAoB,KAAI;YAC5B,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAClC,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAC3D,QAAQ,CACX,CAAC;AACF,YAAA,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjC,YAAA,OAAO,MAAK;AACR,gBAAA,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACpC,gBAAA,WAAW,EAAE,CAAC;AAClB,aAAC,CAAC;AACN,SAAC,CAAC;AACN,KAAC,CAAC,CAAC;IAEH,eAAe,CAAC,MAAK;AACjB,QAAA,qBAAqB,EAAE,CAAC;AACxB,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,oBAAoB,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,EAAE;YACvF,OAAO,KAAK,CAAC,CAAC;SACjB;AACD,QAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;AAClE,KAAC,EAAE;QACC,oBAAoB;QACpB,kBAAkB;QAClB,qBAAqB;QACrB,8BAA8B;QAC9B,UAAU;QACV,aAAa;AAChB,KAAA,CAAC,CAAC;;IAGH,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAC1C,aAAa,CAAC,WAAW,CAAqB,CAAC,GAAG,EAAE,KAAK,KAAI;AACzD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,GAAG,CAAC;SACd;;AAED,QAAA,OAAO,KAAK,CAAC,YAAY,CAAoB,KAAK,EAAE;YAChD,GAAG,KAAK,CAAC,KAAK;AACd,YAAA,QAAQ,EAAE,GAAG;AAChB,SAAA,CAAgB,CAAC;AACtB,KAAC,EAAE,IAAI,CAAC,KAERA,GAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EAAE,QAAQ,EAAA,CAAgB,CAC1C,CAAC;AAEF,IAAA,QACIA,GAAC,CAAA,KAAK,IAAC,KAAK,EAAC,gBAAgB,EACzB,QAAA,EAAAA,GAAA,CAAC,eAAe,EAAA,EACZ,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,gBAAA,CAAC,MAAM,CAAC,sBAAsB,GAAG,WAAW,KAAK,OAAO;AACxD,gBAAA,CAAC,MAAM,CAAC,oBAAoB,GAAG,WAAW,KAAK,KAAK;AACpD,gBAAA,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,WAAW;AAC3C,gBAAA,CAAC,MAAM,CAAC,iBAAiB,GAAG,WAAW,KAAK,IAAI;AAChD,gBAAA,CAAC,MAAM,CAAC,aAAa,GAAG,OAAO;AAClC,aAAA,CAAC,EACF,GAAG,EAAE,OAAO,EACZ,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAEpC,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,oBAAoB,EAAA,QAAA,EACvCC,cAAK,SAAS,EAAE,MAAM,CAAC,sBAAsB,EACzC,QAAA,EAAA,CAAAD,GAAA,CAAC,MAAM,CAAC,GAAG,IACP,KAAK,EAAE,EAAE,yCAAyC,EAAE,sBAAsB,EAAiB,EAC3F,SAAS,EAAE,MAAM,CAAC,oBAAoB,EAAA,QAAA,EAEtCA,GAAC,CAAA,aAAa,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,iBAAiB,YAAG,MAAM,EAAA,CAA0B,GAC1E,EACbA,GAAA,CAAC,MAAM,CAAC,GAAG,IACP,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAClC,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAEzDA,GAAC,CAAA,OAAO,KAAG,EACF,CAAA,CAAA,EAAA,CACX,GACJ,EACQ,CAAA,EAAA,CACd,EACV;AACN;;;;"}
|
|
1
|
+
{"version":3,"file":"NavBar.js","sources":["src/public/NavBar.tsx"],"sourcesContent":["import React, { Children, type ReactNode, type RefObject, useLayoutEffect, useRef, type FC } from 'react';\nimport classNames from 'classnames';\nimport { motion, type MotionStyle, MotionValue, frame } from 'motion/react';\n\nimport { Divider, type ShowDivider } from '@hh.ru/magritte-ui-divider';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { MetricsProvider } from '@hh.ru/magritte-ui-nav-bar/internal/MetricsProvider';\nimport { NavBarContext } from '@hh.ru/magritte-ui-nav-bar/internal/NavBarContext';\nimport { PaneStore } from '@hh.ru/magritte-ui-nav-bar/internal/PaneStore';\nimport { useAnimationRanges } from '@hh.ru/magritte-ui-nav-bar/internal/useAnimationRanges';\nimport { useBindScrollToAnimationProgress } from '@hh.ru/magritte-ui-nav-bar/internal/useBindScrollToAnimationProgress';\nimport { useNavBarMetrics } from '@hh.ru/magritte-ui-nav-bar/internal/useNavBarMetrics';\nimport { useResetFocus } from '@hh.ru/magritte-ui-nav-bar/internal/useResetFocus';\nimport { useScrollAdapter } from '@hh.ru/magritte-ui-nav-bar/internal/useScrollAdapter';\nimport { useSnapScroll } from '@hh.ru/magritte-ui-nav-bar/internal/useSnapScroll';\nimport { useSyncMotionValue } from '@hh.ru/magritte-ui-nav-bar/internal/useSyncMotionValue';\nimport { remap, scheduleMicro, scheduleMacro, useInitOnce } from '@hh.ru/magritte-ui-nav-bar/internal/utils';\nimport {\n type PaneElement,\n type InternalPaneProps,\n ExternalPane,\n isPaneElement,\n} from '@hh.ru/magritte-ui-nav-bar/public/Pane';\nimport { type TriggerEdge, useTriggerSlot } from '@hh.ru/magritte-ui-nav-bar/public/TriggerContext';\nimport { useNavBarRootDefaultProps } from '@hh.ru/magritte-ui-nav-bar/public/defaultProps';\n\nimport styles from './nav-bar.less';\n\nexport interface NavBarProps {\n /**\n * В качестве потомков могут передаваться компоненты <Pane /> или произвольные элементы,\n * которые будут автоматически обёрнуты в <Pane />.\n */\n children: ReactNode;\n /**\n * Управляет режимом прозрачности:\n * -- Прозрачность отключена (`false`)\n * -- Прозрачный всегда (`true`)\n * -- Прозрачный в начале анимации (`start`)\n * -- Прозрачный в конце анимации (`end`)\n * @default false\n */\n transparent?: 'start' | 'end' | boolean;\n /**\n * Управляет позицией триггера начала анимации\n * @default start\n */\n startTriggerPosition?: 'start' | 'full-area' | RefObject<HTMLElement | null>;\n /**\n * Край элемента `startTriggerPosition`, по которому измеряется позиция начала анимации.\n * @default top\n */\n startTriggerEdge?: TriggerEdge;\n /**\n * Управляет позицией триггера конца анимации. Если не передан вычисляется автоматически на основе изменения\n * высоты навбара в процессе анимации и позиции триггера начала анмиации. Если передано число, то интерпретируется\n * как отступ в пикселях от позиции триггера старта анимации.\n */\n endTriggerPosition?: RefObject<HTMLElement | null> | number;\n /**\n * Край элемента `endTriggerPosition`, по которому измеряется позиция конца анимации.\n * @default bottom\n */\n endTriggerEdge?: TriggerEdge;\n /**\n * Включает режим когда NavBar не занимает место в лейауте и контент располагается под ним.\n * @default false\n */\n overlay?: boolean;\n /**\n * Управляет режимом автодоскролла. По умолчанию включен.\n * @default true\n */\n snapScroll?: boolean;\n /**\n * Управляет режимом отображения дивайдера:\n * - `false` дивайдер отключен\n * - `always` дивайдер отображается постоянно\n * - `with-scroll` дивайдер отображается только когда контент подскроллен под NavBar\n * @default false\n */\n showDivider?: ShowDivider;\n /**\n * Принимает MotionValue значение которого будет обновляться синхронно с анимацией всего NavBar.\n * Прогресс анимации представляется в виде числа 0..1\n * Предназначен для синхронизации внешних анимаций с анимациями NavBar.\n */\n animationProgress?: MotionValue<number>;\n}\n\nexport const NavBar: FC<NavBarProps> = (props) => {\n const defaultProps = useNavBarRootDefaultProps();\n const startSlot = useTriggerSlot('startTrigger');\n const endSlot = useTriggerSlot('endTrigger');\n // Приоритет (от высшего к низшему): явные пропсы > NavBarDefaultPropsContext > слоты `Trigger` > дефолты.\n const slotProps = {\n ...(startSlot ? { startTriggerPosition: startSlot.ref, startTriggerEdge: startSlot.edge } : null),\n ...(endSlot ? { endTriggerPosition: endSlot.ref, endTriggerEdge: endSlot.edge } : null),\n };\n const {\n children,\n transparent = false,\n startTriggerPosition = 'start',\n startTriggerEdge = 'top',\n endTriggerPosition,\n endTriggerEdge = 'bottom',\n overlay = false,\n snapScroll: scrollSnapping = true,\n showDivider = false,\n animationProgress,\n } = { ...slotProps, ...defaultProps, ...props };\n const paneStoreRegistry = useInitOnce(() => new Set<PaneStore>());\n const prevFullHeight = useRef<null | number>(0);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const [scrollAdapter, scrollPosition] = useScrollAdapter(rootRef);\n const [getMetrics, invalidateMetrics] = useNavBarMetrics(paneStoreRegistry, rootRef, scrollAdapter);\n const [getAnimationRanges, invalidateAnimationRanges] = useAnimationRanges(paneStoreRegistry, getMetrics);\n const [bindScrollToAnimation, getClosestStops, totalAnimationProgress, dividerStyle] =\n useBindScrollToAnimationProgress(\n scrollPosition,\n getMetrics,\n getAnimationRanges,\n scrollAdapter,\n startTriggerPosition,\n endTriggerPosition,\n startTriggerEdge,\n endTriggerEdge\n );\n const snapScroll = useSnapScroll(\n scrollPosition,\n totalAnimationProgress,\n scrollAdapter,\n getClosestStops,\n scrollSnapping\n );\n\n // При получении размеров важно дождаться применения MotionValue к DOM, поэтому используем frame.render\n const bindScrollToAnimationScheduled = useInitOnce(() => scheduleMicro(() => frame.render(bindScrollToAnimation)));\n useResetFocus(rootRef, totalAnimationProgress);\n useSyncMotionValue(totalAnimationProgress, animationProgress);\n\n const dividerVisibility =\n // eslint-disable-next-line no-nested-ternary\n showDivider === 'with-scroll' ? dividerStyle.visibility : showDivider ? 'visible' : 'hidden';\n\n const registerPaneStore = useInitOnce(() => {\n const subscriptions: VoidFunction[] = [];\n\n const updateAnimationParams = () => {\n subscriptions.length = 0;\n invalidateMetrics();\n invalidateAnimationRanges();\n bindScrollToAnimationScheduled();\n const navBarMetrics = getMetrics();\n const fullPanesStartHeight = navBarMetrics.bottom - navBarMetrics.top;\n\n let scroll = scrollAdapter.getScrollTop();\n if (prevFullHeight.current !== null && scroll !== 0) {\n const heightDelta = fullPanesStartHeight - prevFullHeight.current;\n scroll += heightDelta;\n\n requestAnimationFrame(() => {\n scrollPosition.jump(scrollAdapter.getScrollTop() - 1);\n scrollPosition.jump(scrollAdapter.getScrollTop());\n });\n }\n\n const animationRanges = getAnimationRanges();\n [...paneStoreRegistry.values()].forEach((paneStore) => {\n const range = animationRanges.get(paneStore.get('id'));\n if (!range) {\n return;\n }\n const remapFn = remap(\n range[0] === 0 && range[1] === 0\n ? [0, 1]\n : [range[0] / navBarMetrics.animationHeight, range[1] / navBarMetrics.animationHeight],\n [0, 1]\n );\n const motionValue = paneStore.get('motionValue');\n motionValue.set(remapFn(totalAnimationProgress.get()));\n subscriptions.push(totalAnimationProgress.on('change', (value) => motionValue.set(remapFn(value))));\n });\n\n prevFullHeight.current = fullPanesStartHeight;\n };\n\n // основной триггер запуска updateAnimationParams это изменения размеров, обработка которых происходит\n // в очереди микрозадач, поэтому откладываем запуск функции до перехдоа к макрозадачам, чтобы сократить\n // количество вызовов при массовых изменениях\n const onChange = scheduleMacro(updateAnimationParams);\n\n return (paneStore: PaneStore) => {\n const unsubscribe = paneStore.onChange(\n ['startHeight', 'endHeight', 'top', 'foldable', 'animated'],\n onChange\n );\n paneStoreRegistry.add(paneStore);\n return () => {\n paneStoreRegistry.delete(paneStore);\n unsubscribe();\n };\n };\n });\n\n useLayoutEffect(() => {\n bindScrollToAnimation();\n snapScroll();\n if (!rootRef.current || (typeof startTriggerPosition === 'string' && !endTriggerPosition)) {\n return void 0;\n }\n return scrollAdapter.onResize(bindScrollToAnimationScheduled);\n }, [\n startTriggerPosition,\n endTriggerPosition,\n bindScrollToAnimation,\n bindScrollToAnimationScheduled,\n snapScroll,\n scrollAdapter,\n ]);\n\n // Оборачиваем потомков, не являющихся Pane, в Pane и вкладываем панели друг в друга через проп nextPane\n const childrenArray = Children.toArray(children);\n const nested = isPaneElement(childrenArray[0]) ? (\n childrenArray.reduceRight<PaneElement | null>((acc, child) => {\n if (!isPaneElement(child)) {\n return acc;\n }\n // cloneElement сужает конструктор до InternalPaneProps, поэтому возвращаем к PaneElement\n return React.cloneElement<InternalPaneProps>(child, {\n ...child.props,\n nextPane: acc,\n }) as PaneElement;\n }, null)\n ) : (\n <ExternalPane>{children}</ExternalPane>\n );\n\n return (\n <Layer layer=\"navigation-bar\">\n <MetricsProvider\n className={classNames(styles.navBar, {\n [styles.navbarTransparentStart]: transparent === 'start',\n [styles.navbarTransparentEnd]: transparent === 'end',\n [styles.navbarNotTransparent]: !transparent,\n [styles.navbarTransparent]: transparent === true,\n [styles.navBarOverlay]: overlay,\n })}\n ref={rootRef}\n measureClassName={styles.metricsMode}\n >\n <div className={styles.navBarOverlayWrapper}>\n <motion.div\n className={styles.navBarContentContainer}\n style={{ '--magritte-ui-navbar-animation-progress': totalAnimationProgress } as MotionStyle}\n >\n <div className={styles.navBarPanesContainer}>\n <NavBarContext.Provider value={registerPaneStore}>{nested}</NavBarContext.Provider>\n </div>\n <motion.div\n className={styles.dividerContainer}\n style={{ ...dividerStyle, visibility: dividerVisibility }}\n >\n <Divider />\n </motion.div>\n </motion.div>\n </div>\n </MetricsProvider>\n </Layer>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
package/public/Pane.js
CHANGED
|
@@ -10,7 +10,7 @@ import { useInitOnce, useStoreSyncedTransform, lerp } from '../internal/utils.js
|
|
|
10
10
|
import { EnvironmentFingerprintProvider } from './EnvironmentFingerprintNode.js';
|
|
11
11
|
import { LayoutStage } from './LayoutStage.js';
|
|
12
12
|
import { Stage } from './Stage.js';
|
|
13
|
-
import { s as styles } from '../nav-bar-
|
|
13
|
+
import { s as styles } from '../nav-bar-B7uPipzE.js';
|
|
14
14
|
import '../internal/KeyedSubscriptions.js';
|
|
15
15
|
import 'motion';
|
|
16
16
|
import '../internal/NavBarContext.js';
|
package/public/Stage.js
CHANGED
|
@@ -7,7 +7,7 @@ import { useMeasureAuto } from '../internal/MetricsProvider.js';
|
|
|
7
7
|
import { usePaneStore } from '../internal/PaneStore.js';
|
|
8
8
|
import { useInert } from '../internal/useInert.js';
|
|
9
9
|
import { EnvironmentFingerprintNode } from './EnvironmentFingerprintNode.js';
|
|
10
|
-
import { s as styles } from '../nav-bar-
|
|
10
|
+
import { s as styles } from '../nav-bar-B7uPipzE.js';
|
|
11
11
|
import '../internal/utils.js';
|
|
12
12
|
import 'motion';
|
|
13
13
|
import '../internal/KeyedSubscriptions.js';
|
|
@@ -20,6 +20,15 @@ export interface TitleContainerProps {
|
|
|
20
20
|
* Позволяет выровнять по горизонтали контент слотов для заголовка и подзаголовка
|
|
21
21
|
*/
|
|
22
22
|
centered?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Задает дефолтное начертание и цвет для заголовка и подзаголовка
|
|
25
|
+
*/
|
|
23
26
|
size?: 'large' | 'small';
|
|
27
|
+
/**
|
|
28
|
+
* Позволяет отключить регистрацию заголовка и подзаголовка в качестве
|
|
29
|
+
* метки (aria-label) и описания (aria-description) доступной области (accessible region).
|
|
30
|
+
* Полезно, когда заголовок навбара дублирует уже размеченный на странице заголовок региона.
|
|
31
|
+
*/
|
|
32
|
+
notRegionTitle?: boolean;
|
|
24
33
|
}
|
|
25
34
|
export declare const TitleContainer: FC<TitleContainerProps>;
|
package/public/TitleContainer.js
CHANGED
|
@@ -3,8 +3,9 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { useRegisterRegionLabel, useRegisterRegionDescription } from '@hh.ru/magritte-internal-accessible-region';
|
|
5
5
|
import { Morph } from './Morph.js';
|
|
6
|
+
import { useTitleDefaultProps, useSubtitleDefaultProps } from './defaultProps.js';
|
|
6
7
|
import { TextDefaultPropsContext } from '@hh.ru/magritte-ui-typography';
|
|
7
|
-
import { s as styles } from '../nav-bar-
|
|
8
|
+
import { s as styles } from '../nav-bar-B7uPipzE.js';
|
|
8
9
|
import 'react';
|
|
9
10
|
import 'motion/react';
|
|
10
11
|
import '../internal/MetricsProvider.js';
|
|
@@ -17,33 +18,16 @@ import '../internal/NavBarContext.js';
|
|
|
17
18
|
import './EnvironmentFingerprintNode.js';
|
|
18
19
|
import './Stage.js';
|
|
19
20
|
import '../internal/useInert.js';
|
|
21
|
+
import '@hh.ru/magritte-internal-default-props-context';
|
|
20
22
|
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
large: {
|
|
27
|
-
typography: 'title-4-semibold',
|
|
28
|
-
style: 'primary',
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
const TEXT_DEFAULT_PROPS_SUBTITLE = {
|
|
32
|
-
small: {
|
|
33
|
-
typography: 'label-4-regular',
|
|
34
|
-
style: 'secondary',
|
|
35
|
-
},
|
|
36
|
-
large: {
|
|
37
|
-
typography: 'label-2-regular',
|
|
38
|
-
style: 'secondary',
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
const TitleContainer = ({ left, title, icon, subtitle, size = 'small', centered = false, }) => {
|
|
42
|
-
const { id: labelId } = useRegisterRegionLabel(!!title);
|
|
43
|
-
const { id: descriptionId } = useRegisterRegionDescription(!!subtitle);
|
|
23
|
+
const TitleContainer = ({ left, title, icon, subtitle, size = 'small', centered = false, notRegionTitle = false, }) => {
|
|
24
|
+
const { id: labelId } = useRegisterRegionLabel(!!title && !notRegionTitle);
|
|
25
|
+
const { id: descriptionId } = useRegisterRegionDescription(!!subtitle && !notRegionTitle);
|
|
26
|
+
const titleDefaultProps = useTitleDefaultProps(size);
|
|
27
|
+
const subtitleDefaultProps = useSubtitleDefaultProps(size);
|
|
44
28
|
return (jsxs("div", { className: classNames(styles.titleContainerWrapper, {
|
|
45
29
|
[styles.sizeLarge]: size === 'large',
|
|
46
|
-
}), children: [!!left && (jsx("div", { className: styles.titleLeftSlot, children: jsx(Morph, { id: "title-component-left-slot", className: styles.titleMorphItem, children: left }) })), jsxs("div", { className: classNames(styles.titleMainPart, { [styles.centered]: centered }), children: [jsxs("div", { className: styles.titleContainer, children: [jsx("div", { className: styles.title, id: labelId, suppressHydrationWarning: true, children: !!title && (jsx(TextDefaultPropsContext, { props:
|
|
30
|
+
}), children: [!!left && (jsx("div", { className: styles.titleLeftSlot, children: jsx(Morph, { id: "title-component-left-slot", className: styles.titleMorphItem, children: left }) })), jsxs("div", { className: classNames(styles.titleMainPart, { [styles.centered]: centered }), children: [jsxs("div", { className: styles.titleContainer, children: [jsx("div", { className: styles.title, id: labelId, suppressHydrationWarning: true, children: !!title && (jsx(TextDefaultPropsContext, { props: titleDefaultProps, children: jsx(Morph, { id: "title-component-title", className: classNames(styles.titleMorphItem, styles.textMorphItem), horizontalPositionAlign: "left", children: title }) })) }), jsx("div", { className: styles.titleInlineContainer, children: !!icon && (jsx(Morph, { id: "title-component-inline-slot", className: styles.titleMorphItem, children: icon })) })] }), jsx("div", { className: styles.subtitleContainer, id: descriptionId, suppressHydrationWarning: true, children: !!subtitle && (jsx(TextDefaultPropsContext, { props: subtitleDefaultProps, children: jsx(Morph, { id: "title-component-subtitle", className: classNames(styles.titleMorphItem, styles.textMorphItem), horizontalPositionAlign: "left", children: subtitle }) })) })] })] }));
|
|
47
31
|
};
|
|
48
32
|
|
|
49
33
|
export { TitleContainer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TitleContainer.js","sources":["src/public/TitleContainer.tsx"],"sourcesContent":["import { type FC, type ReactNode } from 'react';\nimport classNames from 'classnames';\n\nimport { useRegisterRegionDescription, useRegisterRegionLabel } from '@hh.ru/magritte-internal-accessible-region';\nimport { Morph } from '@hh.ru/magritte-ui-nav-bar/public/Morph';\nimport {
|
|
1
|
+
{"version":3,"file":"TitleContainer.js","sources":["src/public/TitleContainer.tsx"],"sourcesContent":["import { type FC, type ReactNode } from 'react';\nimport classNames from 'classnames';\n\nimport { useRegisterRegionDescription, useRegisterRegionLabel } from '@hh.ru/magritte-internal-accessible-region';\nimport { Morph } from '@hh.ru/magritte-ui-nav-bar/public/Morph';\nimport { useSubtitleDefaultProps, useTitleDefaultProps } from '@hh.ru/magritte-ui-nav-bar/public/defaultProps';\nimport { TextDefaultPropsContext } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './nav-bar.less';\n\nexport interface TitleContainerProps {\n /**\n * Контент левого слота\n */\n left?: ReactNode;\n /**\n * Контент слота для заголовка\n */\n title?: ReactNode;\n /**\n * Контент слота для подзаголовка\n */\n subtitle?: ReactNode;\n /**\n * Контент слота справа от заголовка\n */\n icon?: ReactNode;\n /**\n * Позволяет выровнять по горизонтали контент слотов для заголовка и подзаголовка\n */\n centered?: boolean;\n /**\n * Задает дефолтное начертание и цвет для заголовка и подзаголовка\n */\n size?: 'large' | 'small';\n /**\n * Позволяет отключить регистрацию заголовка и подзаголовка в качестве\n * метки (aria-label) и описания (aria-description) доступной области (accessible region).\n * Полезно, когда заголовок навбара дублирует уже размеченный на странице заголовок региона.\n */\n notRegionTitle?: boolean;\n}\n\nexport const TitleContainer: FC<TitleContainerProps> = ({\n left,\n title,\n icon,\n subtitle,\n size = 'small',\n centered = false,\n notRegionTitle = false,\n}) => {\n const { id: labelId } = useRegisterRegionLabel(!!title && !notRegionTitle);\n const { id: descriptionId } = useRegisterRegionDescription(!!subtitle && !notRegionTitle);\n\n const titleDefaultProps = useTitleDefaultProps(size);\n const subtitleDefaultProps = useSubtitleDefaultProps(size);\n\n return (\n <div\n className={classNames(styles.titleContainerWrapper, {\n [styles.sizeLarge]: size === 'large',\n })}\n >\n {!!left && (\n <div className={styles.titleLeftSlot}>\n <Morph id=\"title-component-left-slot\" className={styles.titleMorphItem}>\n {left}\n </Morph>\n </div>\n )}\n <div className={classNames(styles.titleMainPart, { [styles.centered]: centered })}>\n <div className={styles.titleContainer}>\n <div className={styles.title} id={labelId} suppressHydrationWarning>\n {!!title && (\n <TextDefaultPropsContext props={titleDefaultProps}>\n <Morph\n id=\"title-component-title\"\n className={classNames(styles.titleMorphItem, styles.textMorphItem)}\n horizontalPositionAlign=\"left\"\n >\n {title}\n </Morph>\n </TextDefaultPropsContext>\n )}\n </div>\n <div className={styles.titleInlineContainer}>\n {!!icon && (\n <Morph id=\"title-component-inline-slot\" className={styles.titleMorphItem}>\n {icon}\n </Morph>\n )}\n </div>\n </div>\n <div className={styles.subtitleContainer} id={descriptionId} suppressHydrationWarning>\n {!!subtitle && (\n <TextDefaultPropsContext props={subtitleDefaultProps}>\n <Morph\n id=\"title-component-subtitle\"\n className={classNames(styles.titleMorphItem, styles.textMorphItem)}\n horizontalPositionAlign=\"left\"\n >\n {subtitle}\n </Morph>\n </TextDefaultPropsContext>\n )}\n </div>\n </div>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2Ca,MAAA,cAAc,GAA4B,CAAC,EACpD,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,IAAI,GAAG,OAAO,EACd,QAAQ,GAAG,KAAK,EAChB,cAAc,GAAG,KAAK,GACzB,KAAI;AACD,IAAA,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3E,IAAA,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,4BAA4B,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC;AAE1F,IAAA,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACrD,IAAA,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE3D,QACIA,cACI,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAChD,YAAA,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,KAAK,OAAO;SACvC,CAAC,EAAA,QAAA,EAAA,CAED,CAAC,CAAC,IAAI,KACHC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,aAAa,EAAA,QAAA,EAChCA,IAAC,KAAK,EAAA,EAAC,EAAE,EAAC,2BAA2B,EAAC,SAAS,EAAE,MAAM,CAAC,cAAc,EAAA,QAAA,EACjE,IAAI,EACD,CAAA,EAAA,CACN,CACT,EACDD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAC7E,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,cAAc,EAAA,QAAA,EAAA,CACjCC,aAAK,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAC9D,IAAA,EAAA,QAAA,EAAA,CAAC,CAAC,KAAK,KACJA,GAAA,CAAC,uBAAuB,EAAC,EAAA,KAAK,EAAE,iBAAiB,EAAA,QAAA,EAC7CA,GAAC,CAAA,KAAK,EACF,EAAA,EAAE,EAAC,uBAAuB,EAC1B,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,EAClE,uBAAuB,EAAC,MAAM,YAE7B,KAAK,EAAA,CACF,GACc,CAC7B,EAAA,CACC,EACNA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,oBAAoB,EACtC,QAAA,EAAA,CAAC,CAAC,IAAI,KACHA,IAAC,KAAK,EAAA,EAAC,EAAE,EAAC,6BAA6B,EAAC,SAAS,EAAE,MAAM,CAAC,cAAc,EAAA,QAAA,EACnE,IAAI,EACD,CAAA,CACX,GACC,CACJ,EAAA,CAAA,EACNA,aAAK,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,EAAE,aAAa,EAAE,wBAAwB,EAAA,IAAA,EAAA,QAAA,EAChF,CAAC,CAAC,QAAQ,KACPA,GAAC,CAAA,uBAAuB,IAAC,KAAK,EAAE,oBAAoB,EAChD,QAAA,EAAAA,GAAA,CAAC,KAAK,EACF,EAAA,EAAE,EAAC,0BAA0B,EAC7B,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,EAClE,uBAAuB,EAAC,MAAM,EAAA,QAAA,EAE7B,QAAQ,EACL,CAAA,EAAA,CACc,CAC7B,EACC,CAAA,CAAA,EAAA,CACJ,CACJ,EAAA,CAAA,EACR;AACN;;;;"}
|
package/public/defaultProps.d.ts
CHANGED
|
@@ -2,12 +2,24 @@ import { type FC, type ReactNode } from 'react';
|
|
|
2
2
|
import type { IconProps } from '@hh.ru/magritte-ui-icon/types';
|
|
3
3
|
import type { ActionsProps } from '@hh.ru/magritte-ui-nav-bar/public/Actions';
|
|
4
4
|
import type { NavBarProps } from '@hh.ru/magritte-ui-nav-bar/public/NavBar';
|
|
5
|
+
import type { TextProps } from '@hh.ru/magritte-ui-typography';
|
|
6
|
+
type TitleContainerSize = 'large' | 'small';
|
|
5
7
|
/** Внутренний хук чтения дефолтов корневых пропсов `NavBar` из ближайшего `NavBarDefaultPropsContext`. */
|
|
6
8
|
export declare const useNavBarRootDefaultProps: () => Partial<NavBarProps>;
|
|
7
9
|
/** Внутренний хук чтения дефолтов `Actions` из ближайшего `NavBarDefaultPropsContext`. */
|
|
8
10
|
export declare const useActionsDefaultProps: () => Partial<ActionsProps>;
|
|
9
11
|
/** Внутренний хук чтения переопределений дефолтов иконок боковых слотов `Actions`. */
|
|
10
12
|
export declare const useActionsIconsDefaultProps: () => Partial<IconProps>;
|
|
13
|
+
/**
|
|
14
|
+
* Внутренний хук готовых дефолтов текста заголовка для размера `size`: базовые дефолты по размеру,
|
|
15
|
+
* поверх которых смёржены переопределения из ближайшего `NavBarDefaultPropsContext` (`titleProps`).
|
|
16
|
+
*/
|
|
17
|
+
export declare const useTitleDefaultProps: (size: TitleContainerSize) => Partial<TextProps>;
|
|
18
|
+
/**
|
|
19
|
+
* Внутренний хук готовых дефолтов текста подзаголовка для размера `size`: базовые дефолты по размеру,
|
|
20
|
+
* поверх которых смёржены переопределения из ближайшего `NavBarDefaultPropsContext` (`subtitleProps`).
|
|
21
|
+
*/
|
|
22
|
+
export declare const useSubtitleDefaultProps: (size: TitleContainerSize) => Partial<TextProps>;
|
|
11
23
|
export interface NavBarDefaultPropsContextProps {
|
|
12
24
|
/**
|
|
13
25
|
* Дефолтные пропсы для самого `NavBar` в поддереве (например `startTriggerPosition` /
|
|
@@ -21,6 +33,18 @@ export interface NavBarDefaultPropsContextProps {
|
|
|
21
33
|
* Мёржится поверх базовых дефолтов боковых иконок; на иконки центрального слота не влияет.
|
|
22
34
|
*/
|
|
23
35
|
actionsIconsProps?: Partial<IconProps>;
|
|
36
|
+
/**
|
|
37
|
+
* Дефолтные пропсы для текста заголовка (`title`) `TitleContainer` в поддереве — например `style`
|
|
38
|
+
* для переопределения цвета. Мёржится поверх базовых дефолтов заголовка; явные пропсы на самом
|
|
39
|
+
* тексте побеждают.
|
|
40
|
+
*/
|
|
41
|
+
titleProps?: Partial<TextProps>;
|
|
42
|
+
/**
|
|
43
|
+
* Дефолтные пропсы для текста подзаголовка (`subtitle`) `TitleContainer` в поддереве — например
|
|
44
|
+
* `style` для переопределения цвета. Мёржится поверх базовых дефолтов подзаголовка; явные пропсы
|
|
45
|
+
* на самом тексте побеждают.
|
|
46
|
+
*/
|
|
47
|
+
subtitleProps?: Partial<TextProps>;
|
|
24
48
|
/**
|
|
25
49
|
* Если `true`, заданные здесь дефолты форсируются: по пересекающимся ключам они побеждают
|
|
26
50
|
* любой вложенный (внутренний) провайдер, а не наоборот. Явные пропсы на самом компоненте
|
|
@@ -38,3 +62,4 @@ export interface NavBarDefaultPropsContextProps {
|
|
|
38
62
|
* Добавление поддержки нового подкомпонента = новое поле-слот здесь + чтение в этом подкомпоненте.
|
|
39
63
|
*/
|
|
40
64
|
export declare const NavBarDefaultPropsContext: FC<NavBarDefaultPropsContextProps>;
|
|
65
|
+
export {};
|
package/public/defaultProps.js
CHANGED
|
@@ -10,18 +10,71 @@ import { createDefaultPropsContext } from '@hh.ru/magritte-internal-default-prop
|
|
|
10
10
|
const EMPTY_ACTIONS_PROPS = {};
|
|
11
11
|
const EMPTY_ICON_PROPS = {};
|
|
12
12
|
const EMPTY_ROOT_PROPS = {};
|
|
13
|
+
const EMPTY_TEXT_PROPS = {};
|
|
14
|
+
/** Базовые дефолтные пропсы текста заголовка по размеру `TitleContainer` (начертание + цвет). */
|
|
15
|
+
const TEXT_DEFAULT_PROPS_TITLE = {
|
|
16
|
+
small: {
|
|
17
|
+
typography: 'subtitle-1-semibold',
|
|
18
|
+
style: 'primary',
|
|
19
|
+
},
|
|
20
|
+
large: {
|
|
21
|
+
typography: 'title-4-semibold',
|
|
22
|
+
style: 'primary',
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
/** Базовые дефолтные пропсы текста подзаголовка по размеру `TitleContainer` (начертание + цвет). */
|
|
26
|
+
const TEXT_DEFAULT_PROPS_SUBTITLE = {
|
|
27
|
+
small: {
|
|
28
|
+
typography: 'label-4-regular',
|
|
29
|
+
style: 'secondary',
|
|
30
|
+
},
|
|
31
|
+
large: {
|
|
32
|
+
typography: 'label-2-regular',
|
|
33
|
+
style: 'secondary',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
13
36
|
const rootContext = createDefaultPropsContext('NavBarRoot');
|
|
14
37
|
const actionsContext = createDefaultPropsContext('NavBarActions');
|
|
15
38
|
const actionsIconsContext = createDefaultPropsContext('NavBarActionsIcons');
|
|
39
|
+
const titleContext = createDefaultPropsContext('NavBarTitle');
|
|
40
|
+
const subtitleContext = createDefaultPropsContext('NavBarSubtitle');
|
|
16
41
|
const RootDefaultPropsContext = rootContext.DefaultPropsContext;
|
|
17
42
|
const ActionsDefaultPropsContext = actionsContext.DefaultPropsContext;
|
|
18
43
|
const ActionsIconsDefaultPropsContext = actionsIconsContext.DefaultPropsContext;
|
|
44
|
+
const TitleDefaultPropsContext = titleContext.DefaultPropsContext;
|
|
45
|
+
const SubtitleDefaultPropsContext = subtitleContext.DefaultPropsContext;
|
|
19
46
|
/** Внутренний хук чтения дефолтов корневых пропсов `NavBar` из ближайшего `NavBarDefaultPropsContext`. */
|
|
20
47
|
const useNavBarRootDefaultProps = rootContext.useDefaultProps;
|
|
21
48
|
/** Внутренний хук чтения дефолтов `Actions` из ближайшего `NavBarDefaultPropsContext`. */
|
|
22
49
|
const useActionsDefaultProps = actionsContext.useDefaultProps;
|
|
23
50
|
/** Внутренний хук чтения переопределений дефолтов иконок боковых слотов `Actions`. */
|
|
24
51
|
const useActionsIconsDefaultProps = actionsIconsContext.useDefaultProps;
|
|
52
|
+
/**
|
|
53
|
+
* Внутренний хук готовых дефолтов текста заголовка для размера `size`: базовые дефолты по размеру,
|
|
54
|
+
* поверх которых смёржены переопределения из ближайшего `NavBarDefaultPropsContext` (`titleProps`).
|
|
55
|
+
*/
|
|
56
|
+
const useTitleDefaultProps = (size) => {
|
|
57
|
+
const props = titleContext.useDefaultProps();
|
|
58
|
+
return props === EMPTY_TEXT_PROPS
|
|
59
|
+
? TEXT_DEFAULT_PROPS_TITLE[size]
|
|
60
|
+
: {
|
|
61
|
+
...TEXT_DEFAULT_PROPS_TITLE[size],
|
|
62
|
+
...props,
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Внутренний хук готовых дефолтов текста подзаголовка для размера `size`: базовые дефолты по размеру,
|
|
67
|
+
* поверх которых смёржены переопределения из ближайшего `NavBarDefaultPropsContext` (`subtitleProps`).
|
|
68
|
+
*/
|
|
69
|
+
const useSubtitleDefaultProps = (size) => {
|
|
70
|
+
const props = subtitleContext.useDefaultProps();
|
|
71
|
+
return props === EMPTY_TEXT_PROPS
|
|
72
|
+
? TEXT_DEFAULT_PROPS_SUBTITLE[size]
|
|
73
|
+
: {
|
|
74
|
+
...TEXT_DEFAULT_PROPS_SUBTITLE[size],
|
|
75
|
+
...props,
|
|
76
|
+
};
|
|
77
|
+
};
|
|
25
78
|
/**
|
|
26
79
|
* Провайдер дефолтных пропсов для подкомпонентов NavBar в поддереве.
|
|
27
80
|
*
|
|
@@ -29,8 +82,8 @@ const useActionsIconsDefaultProps = actionsIconsContext.useDefaultProps;
|
|
|
29
82
|
* (`actions` → контекст `Actions` и т.д.), а подкомпоненты читают свои дефолты через собственные хуки.
|
|
30
83
|
* Добавление поддержки нового подкомпонента = новое поле-слот здесь + чтение в этом подкомпоненте.
|
|
31
84
|
*/
|
|
32
|
-
const NavBarDefaultPropsContext = ({ rootProps: root = EMPTY_ROOT_PROPS, actionsProps: actions = EMPTY_ACTIONS_PROPS, actionsIconsProps: actionsIcons = EMPTY_ICON_PROPS, important = false, children, }) => (jsx(RootDefaultPropsContext, { props: root, important: important, children: jsx(ActionsDefaultPropsContext, { props: actions, important: important, children: jsx(ActionsIconsDefaultPropsContext, { props: actionsIcons, important: important, children: children }) }) }));
|
|
85
|
+
const NavBarDefaultPropsContext = ({ rootProps: root = EMPTY_ROOT_PROPS, actionsProps: actions = EMPTY_ACTIONS_PROPS, actionsIconsProps: actionsIcons = EMPTY_ICON_PROPS, titleProps: title = EMPTY_TEXT_PROPS, subtitleProps: subtitle = EMPTY_TEXT_PROPS, important = false, children, }) => (jsx(RootDefaultPropsContext, { props: root, important: important, children: jsx(ActionsDefaultPropsContext, { props: actions, important: important, children: jsx(ActionsIconsDefaultPropsContext, { props: actionsIcons, important: important, children: jsx(TitleDefaultPropsContext, { props: title, important: important, children: jsx(SubtitleDefaultPropsContext, { props: subtitle, important: important, children: children }) }) }) }) }));
|
|
33
86
|
NavBarDefaultPropsContext.displayName = 'NavBarDefaultPropsContext';
|
|
34
87
|
|
|
35
|
-
export { NavBarDefaultPropsContext, useActionsDefaultProps, useActionsIconsDefaultProps, useNavBarRootDefaultProps };
|
|
88
|
+
export { NavBarDefaultPropsContext, useActionsDefaultProps, useActionsIconsDefaultProps, useNavBarRootDefaultProps, useSubtitleDefaultProps, useTitleDefaultProps };
|
|
36
89
|
//# sourceMappingURL=defaultProps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultProps.js","sources":["src/public/defaultProps.tsx"],"sourcesContent":["import { type FC, type ReactNode } from 'react';\n\nimport { createDefaultPropsContext } from '@hh.ru/magritte-internal-default-props-context';\nimport type { IconProps } from '@hh.ru/magritte-ui-icon/types';\nimport type { ActionsProps } from '@hh.ru/magritte-ui-nav-bar/public/Actions';\nimport type { NavBarProps } from '@hh.ru/magritte-ui-nav-bar/public/NavBar';\n\n/**\n * Стабильные ссылки на пустые дефолты для незаданных слотов. Объявлены на уровне модуля,\n * чтобы не создавать новый объект на каждый рендер composite-провайдера — иначе внутренний\n * провайдер слота пересчитывал бы свёртку дефолтов вхолостую на каждый рендер.\n */\nconst EMPTY_ACTIONS_PROPS: Partial<ActionsProps> = {};\nconst EMPTY_ICON_PROPS: Partial<IconProps> = {};\nconst EMPTY_ROOT_PROPS: Partial<NavBarProps> = {};\n\nconst rootContext = createDefaultPropsContext<NavBarProps>('NavBarRoot');\nconst actionsContext = createDefaultPropsContext<ActionsProps>('NavBarActions');\nconst actionsIconsContext = createDefaultPropsContext<IconProps>('NavBarActionsIcons');\n\nconst RootDefaultPropsContext = rootContext.DefaultPropsContext;\nconst ActionsDefaultPropsContext = actionsContext.DefaultPropsContext;\nconst ActionsIconsDefaultPropsContext = actionsIconsContext.DefaultPropsContext;\n\n/** Внутренний хук чтения дефолтов корневых пропсов `NavBar` из ближайшего `NavBarDefaultPropsContext`. */\nexport const useNavBarRootDefaultProps = rootContext.useDefaultProps;\n\n/** Внутренний хук чтения дефолтов `Actions` из ближайшего `NavBarDefaultPropsContext`. */\nexport const useActionsDefaultProps = actionsContext.useDefaultProps;\n\n/** Внутренний хук чтения переопределений дефолтов иконок боковых слотов `Actions`. */\nexport const useActionsIconsDefaultProps = actionsIconsContext.useDefaultProps;\n\nexport interface NavBarDefaultPropsContextProps {\n /**\n * Дефолтные пропсы для самого `NavBar` в поддереве (например `startTriggerPosition` /\n * `endTriggerPosition`) — явные пропсы на самом `NavBar` побеждают.\n */\n rootProps?: Partial<NavBarProps>;\n /** Дефолтные пропсы для всех `Actions` в поддереве — явные пропсы на самом `Actions` побеждают. */\n actionsProps?: Partial<ActionsProps>;\n /**\n * Переопределение дефолтных пропсов иконок в боковых слотах `Actions` (`left` / `right`).\n * Мёржится поверх базовых дефолтов боковых иконок; на иконки центрального слота не влияет.\n */\n actionsIconsProps?: Partial<IconProps>;\n /**\n * Если `true`, заданные здесь дефолты форсируются: по пересекающимся ключам они побеждают\n * любой вложенный (внутренний) провайдер, а не наоборот. Явные пропсы на самом компоненте\n * по-прежнему перекрывают любой дефолт. Применяется ко всем слотам.\n * @default false\n */\n important?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Провайдер дефолтных пропсов для подкомпонентов NavBar в поддереве.\n *\n * Под капотом раскладывает пропсы по изолированным, типизированным контекстам каждого подкомпонента\n * (`actions` → контекст `Actions` и т.д.), а подкомпоненты читают свои дефолты через собственные хуки.\n * Добавление поддержки нового подкомпонента = новое поле-слот здесь + чтение в этом подкомпоненте.\n */\nexport const NavBarDefaultPropsContext: FC<NavBarDefaultPropsContextProps> = ({\n rootProps: root = EMPTY_ROOT_PROPS,\n actionsProps: actions = EMPTY_ACTIONS_PROPS,\n actionsIconsProps: actionsIcons = EMPTY_ICON_PROPS,\n important = false,\n children,\n}) => (\n <RootDefaultPropsContext props={root} important={important}>\n <ActionsDefaultPropsContext props={actions} important={important}>\n <ActionsIconsDefaultPropsContext props={actionsIcons} important={important}>\n {children}\n </ActionsIconsDefaultPropsContext>\n </ActionsDefaultPropsContext>\n </RootDefaultPropsContext>\n);\n\nNavBarDefaultPropsContext.displayName = 'NavBarDefaultPropsContext';\n"],"names":["_jsx"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"defaultProps.js","sources":["src/public/defaultProps.tsx"],"sourcesContent":["import { type FC, type ReactNode } from 'react';\n\nimport { createDefaultPropsContext } from '@hh.ru/magritte-internal-default-props-context';\nimport type { IconProps } from '@hh.ru/magritte-ui-icon/types';\nimport type { ActionsProps } from '@hh.ru/magritte-ui-nav-bar/public/Actions';\nimport type { NavBarProps } from '@hh.ru/magritte-ui-nav-bar/public/NavBar';\nimport type { TextProps } from '@hh.ru/magritte-ui-typography';\n\n/**\n * Стабильные ссылки на пустые дефолты для незаданных слотов. Объявлены на уровне модуля,\n * чтобы не создавать новый объект на каждый рендер composite-провайдера — иначе внутренний\n * провайдер слота пересчитывал бы свёртку дефолтов вхолостую на каждый рендер.\n */\nconst EMPTY_ACTIONS_PROPS: Partial<ActionsProps> = {};\nconst EMPTY_ICON_PROPS: Partial<IconProps> = {};\nconst EMPTY_ROOT_PROPS: Partial<NavBarProps> = {};\nconst EMPTY_TEXT_PROPS: Partial<TextProps> = {};\n\ntype TitleContainerSize = 'large' | 'small';\n\n/** Базовые дефолтные пропсы текста заголовка по размеру `TitleContainer` (начертание + цвет). */\nconst TEXT_DEFAULT_PROPS_TITLE: Record<TitleContainerSize, Partial<TextProps>> = {\n small: {\n typography: 'subtitle-1-semibold',\n style: 'primary',\n },\n large: {\n typography: 'title-4-semibold',\n style: 'primary',\n },\n};\n\n/** Базовые дефолтные пропсы текста подзаголовка по размеру `TitleContainer` (начертание + цвет). */\nconst TEXT_DEFAULT_PROPS_SUBTITLE: Record<TitleContainerSize, Partial<TextProps>> = {\n small: {\n typography: 'label-4-regular',\n style: 'secondary',\n },\n large: {\n typography: 'label-2-regular',\n style: 'secondary',\n },\n};\n\nconst rootContext = createDefaultPropsContext<NavBarProps>('NavBarRoot');\nconst actionsContext = createDefaultPropsContext<ActionsProps>('NavBarActions');\nconst actionsIconsContext = createDefaultPropsContext<IconProps>('NavBarActionsIcons');\nconst titleContext = createDefaultPropsContext<TextProps>('NavBarTitle');\nconst subtitleContext = createDefaultPropsContext<TextProps>('NavBarSubtitle');\n\nconst RootDefaultPropsContext = rootContext.DefaultPropsContext;\nconst ActionsDefaultPropsContext = actionsContext.DefaultPropsContext;\nconst ActionsIconsDefaultPropsContext = actionsIconsContext.DefaultPropsContext;\nconst TitleDefaultPropsContext = titleContext.DefaultPropsContext;\nconst SubtitleDefaultPropsContext = subtitleContext.DefaultPropsContext;\n\n/** Внутренний хук чтения дефолтов корневых пропсов `NavBar` из ближайшего `NavBarDefaultPropsContext`. */\nexport const useNavBarRootDefaultProps = rootContext.useDefaultProps;\n\n/** Внутренний хук чтения дефолтов `Actions` из ближайшего `NavBarDefaultPropsContext`. */\nexport const useActionsDefaultProps = actionsContext.useDefaultProps;\n\n/** Внутренний хук чтения переопределений дефолтов иконок боковых слотов `Actions`. */\nexport const useActionsIconsDefaultProps = actionsIconsContext.useDefaultProps;\n\n/**\n * Внутренний хук готовых дефолтов текста заголовка для размера `size`: базовые дефолты по размеру,\n * поверх которых смёржены переопределения из ближайшего `NavBarDefaultPropsContext` (`titleProps`).\n */\nexport const useTitleDefaultProps = (size: TitleContainerSize): Partial<TextProps> => {\n const props = titleContext.useDefaultProps();\n return props === EMPTY_TEXT_PROPS\n ? TEXT_DEFAULT_PROPS_TITLE[size]\n : {\n ...TEXT_DEFAULT_PROPS_TITLE[size],\n ...props,\n };\n};\n\n/**\n * Внутренний хук готовых дефолтов текста подзаголовка для размера `size`: базовые дефолты по размеру,\n * поверх которых смёржены переопределения из ближайшего `NavBarDefaultPropsContext` (`subtitleProps`).\n */\nexport const useSubtitleDefaultProps = (size: TitleContainerSize): Partial<TextProps> => {\n const props = subtitleContext.useDefaultProps();\n return props === EMPTY_TEXT_PROPS\n ? TEXT_DEFAULT_PROPS_SUBTITLE[size]\n : {\n ...TEXT_DEFAULT_PROPS_SUBTITLE[size],\n ...props,\n };\n};\n\nexport interface NavBarDefaultPropsContextProps {\n /**\n * Дефолтные пропсы для самого `NavBar` в поддереве (например `startTriggerPosition` /\n * `endTriggerPosition`) — явные пропсы на самом `NavBar` побеждают.\n */\n rootProps?: Partial<NavBarProps>;\n /** Дефолтные пропсы для всех `Actions` в поддереве — явные пропсы на самом `Actions` побеждают. */\n actionsProps?: Partial<ActionsProps>;\n /**\n * Переопределение дефолтных пропсов иконок в боковых слотах `Actions` (`left` / `right`).\n * Мёржится поверх базовых дефолтов боковых иконок; на иконки центрального слота не влияет.\n */\n actionsIconsProps?: Partial<IconProps>;\n /**\n * Дефолтные пропсы для текста заголовка (`title`) `TitleContainer` в поддереве — например `style`\n * для переопределения цвета. Мёржится поверх базовых дефолтов заголовка; явные пропсы на самом\n * тексте побеждают.\n */\n titleProps?: Partial<TextProps>;\n /**\n * Дефолтные пропсы для текста подзаголовка (`subtitle`) `TitleContainer` в поддереве — например\n * `style` для переопределения цвета. Мёржится поверх базовых дефолтов подзаголовка; явные пропсы\n * на самом тексте побеждают.\n */\n subtitleProps?: Partial<TextProps>;\n /**\n * Если `true`, заданные здесь дефолты форсируются: по пересекающимся ключам они побеждают\n * любой вложенный (внутренний) провайдер, а не наоборот. Явные пропсы на самом компоненте\n * по-прежнему перекрывают любой дефолт. Применяется ко всем слотам.\n * @default false\n */\n important?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Провайдер дефолтных пропсов для подкомпонентов NavBar в поддереве.\n *\n * Под капотом раскладывает пропсы по изолированным, типизированным контекстам каждого подкомпонента\n * (`actions` → контекст `Actions` и т.д.), а подкомпоненты читают свои дефолты через собственные хуки.\n * Добавление поддержки нового подкомпонента = новое поле-слот здесь + чтение в этом подкомпоненте.\n */\nexport const NavBarDefaultPropsContext: FC<NavBarDefaultPropsContextProps> = ({\n rootProps: root = EMPTY_ROOT_PROPS,\n actionsProps: actions = EMPTY_ACTIONS_PROPS,\n actionsIconsProps: actionsIcons = EMPTY_ICON_PROPS,\n titleProps: title = EMPTY_TEXT_PROPS,\n subtitleProps: subtitle = EMPTY_TEXT_PROPS,\n important = false,\n children,\n}) => (\n <RootDefaultPropsContext props={root} important={important}>\n <ActionsDefaultPropsContext props={actions} important={important}>\n <ActionsIconsDefaultPropsContext props={actionsIcons} important={important}>\n <TitleDefaultPropsContext props={title} important={important}>\n <SubtitleDefaultPropsContext props={subtitle} important={important}>\n {children}\n </SubtitleDefaultPropsContext>\n </TitleDefaultPropsContext>\n </ActionsIconsDefaultPropsContext>\n </ActionsDefaultPropsContext>\n </RootDefaultPropsContext>\n);\n\nNavBarDefaultPropsContext.displayName = 'NavBarDefaultPropsContext';\n"],"names":["_jsx"],"mappings":"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"}
|
package/nav-bar-BFd5MVDE.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import './index.css';
|
|
2
|
-
var styles = {"actions-container":"magritte-actions-container___CBgYW_1-3-29","actionsContainer":"magritte-actions-container___CBgYW_1-3-29","actions-no-children":"magritte-actions-no-children___rgJUl_1-3-29","actionsNoChildren":"magritte-actions-no-children___rgJUl_1-3-29","actions-left-slot":"magritte-actions-left-slot___DNOj0_1-3-29","actionsLeftSlot":"magritte-actions-left-slot___DNOj0_1-3-29","actions-right-slot":"magritte-actions-right-slot___aodtj_1-3-29","actionsRightSlot":"magritte-actions-right-slot___aodtj_1-3-29","navbar-transparent-end":"magritte-navbar-transparent-end___6KqLR_1-3-29","navbarTransparentEnd":"magritte-navbar-transparent-end___6KqLR_1-3-29","actions-start-stage":"magritte-actions-start-stage___MJ67a_1-3-29","actionsStartStage":"magritte-actions-start-stage___MJ67a_1-3-29","actions-side-slot-content":"magritte-actions-side-slot-content___TlHrX_1-3-29","actionsSideSlotContent":"magritte-actions-side-slot-content___TlHrX_1-3-29","actions-icon-morph":"magritte-actions-icon-morph___-nNgW_1-3-29","actionsIconMorph":"magritte-actions-icon-morph___-nNgW_1-3-29","navbar-transparent-start":"magritte-navbar-transparent-start___wysv0_1-3-29","navbarTransparentStart":"magritte-navbar-transparent-start___wysv0_1-3-29","actions-end-stage":"magritte-actions-end-stage___qHtTV_1-3-29","actionsEndStage":"magritte-actions-end-stage___qHtTV_1-3-29","navbar-not-transparent":"magritte-navbar-not-transparent___5KZNp_1-3-29","navbarNotTransparent":"magritte-navbar-not-transparent___5KZNp_1-3-29","navbar-transparent":"magritte-navbar-transparent___ULEh8_1-3-29","navbarTransparent":"magritte-navbar-transparent___ULEh8_1-3-29","actions-only-stage":"magritte-actions-only-stage___cg10A_1-3-29","actionsOnlyStage":"magritte-actions-only-stage___cg10A_1-3-29","actions-side-slot-content-clone":"magritte-actions-side-slot-content-clone___jDxVm_1-3-29","actionsSideSlotContentClone":"magritte-actions-side-slot-content-clone___jDxVm_1-3-29","actions-center-slot":"magritte-actions-center-slot___hLAy6_1-3-29","actionsCenterSlot":"magritte-actions-center-slot___hLAy6_1-3-29","actions-center-slot-centered":"magritte-actions-center-slot-centered___merXQ_1-3-29","actionsCenterSlotCentered":"magritte-actions-center-slot-centered___merXQ_1-3-29","align-top":"magritte-align-top___-QSFW_1-3-29","alignTop":"magritte-align-top___-QSFW_1-3-29","align-bottom":"magritte-align-bottom___FliHI_1-3-29","alignBottom":"magritte-align-bottom___FliHI_1-3-29","title-container-wrapper":"magritte-title-container-wrapper___DQUcj_1-3-29","titleContainerWrapper":"magritte-title-container-wrapper___DQUcj_1-3-29","title-main-part":"magritte-title-main-part___npoHN_1-3-29","titleMainPart":"magritte-title-main-part___npoHN_1-3-29","title-left-slot":"magritte-title-left-slot___HTE7h_1-3-29","titleLeftSlot":"magritte-title-left-slot___HTE7h_1-3-29","title-container":"magritte-title-container___y9AIx_1-3-29","titleContainer":"magritte-title-container___y9AIx_1-3-29","subtitle-container":"magritte-subtitle-container___nVUBu_1-3-29","subtitleContainer":"magritte-subtitle-container___nVUBu_1-3-29","text-morph-item":"magritte-text-morph-item___-vXru_1-3-29","textMorphItem":"magritte-text-morph-item___-vXru_1-3-29","centered":"magritte-centered___Y2mlP_1-3-29","title-morph-item":"magritte-title-morph-item___t7Wf3_1-3-29","titleMorphItem":"magritte-title-morph-item___t7Wf3_1-3-29","title":"magritte-title___ZbLgP_1-3-29","size-large":"magritte-size-large___ISXfH_1-3-29","sizeLarge":"magritte-size-large___ISXfH_1-3-29","pane-content":"magritte-pane-content___UVmC6_1-3-29","paneContent":"magritte-pane-content___UVmC6_1-3-29","pane-background":"magritte-pane-background___PDZAX_1-3-29","paneBackground":"magritte-pane-background___PDZAX_1-3-29","morph-item":"magritte-morph-item___8kF46_1-3-29","morphItem":"magritte-morph-item___8kF46_1-3-29","morph-item-top":"magritte-morph-item-top___WPEkn_1-3-29","morphItemTop":"magritte-morph-item-top___WPEkn_1-3-29","morph-item-bottom":"magritte-morph-item-bottom___zNbsF_1-3-29","morphItemBottom":"magritte-morph-item-bottom___zNbsF_1-3-29","morph-item-left":"magritte-morph-item-left___T6AMW_1-3-29","morphItemLeft":"magritte-morph-item-left___T6AMW_1-3-29","morph-item-right":"magritte-morph-item-right___EuT1E_1-3-29","morphItemRight":"magritte-morph-item-right___EuT1E_1-3-29","pane":"magritte-pane___f8eFC_1-3-29","start-state-container":"magritte-start-state-container___giBVb_1-3-29","startStateContainer":"magritte-start-state-container___giBVb_1-3-29","end-state-container":"magritte-end-state-container___uiW8Q_1-3-29","endStateContainer":"magritte-end-state-container___uiW8Q_1-3-29","content-container":"magritte-content-container___7s7vv_1-3-29","contentContainer":"magritte-content-container___7s7vv_1-3-29","next-pane":"magritte-next-pane___H2oxQ_1-3-29","nextPane":"magritte-next-pane___H2oxQ_1-3-29","nav-bar":"magritte-nav-bar___RRGe0_1-3-29","navBar":"magritte-nav-bar___RRGe0_1-3-29","nav-bar-overlay":"magritte-nav-bar-overlay___Mq5ZD_1-3-29","navBarOverlay":"magritte-nav-bar-overlay___Mq5ZD_1-3-29","nav-bar-overlay-wrapper":"magritte-nav-bar-overlay-wrapper___y1VpY_1-3-29","navBarOverlayWrapper":"magritte-nav-bar-overlay-wrapper___y1VpY_1-3-29","nav-bar-content-container":"magritte-nav-bar-content-container___H-WMO_1-3-29","navBarContentContainer":"magritte-nav-bar-content-container___H-WMO_1-3-29","nav-bar-panes-container":"magritte-nav-bar-panes-container___5ZDLa_1-3-29","navBarPanesContainer":"magritte-nav-bar-panes-container___5ZDLa_1-3-29","nav-bar-progressive-blur":"magritte-nav-bar-progressive-blur___qyeUV_1-3-29","navBarProgressiveBlur":"magritte-nav-bar-progressive-blur___qyeUV_1-3-29","nav-bar-stage":"magritte-nav-bar-stage___amDz7_1-3-29","navBarStage":"magritte-nav-bar-stage___amDz7_1-3-29","last-pane":"magritte-last-pane___Hf2No_1-3-29","lastPane":"magritte-last-pane___Hf2No_1-3-29","metrics-mode":"magritte-metrics-mode___h38aX_1-3-29","metricsMode":"magritte-metrics-mode___h38aX_1-3-29","layout-morph":"magritte-layout-morph___I3SPy_1-3-29","layoutMorph":"magritte-layout-morph___I3SPy_1-3-29","animation-stage-progress":"magritte-animation-stage-progress___5FthT_1-3-29","animationStageProgress":"magritte-animation-stage-progress___5FthT_1-3-29","layout-morph-start":"magritte-layout-morph-start___9-krP_1-3-29","layoutMorphStart":"magritte-layout-morph-start___9-krP_1-3-29","layout-morph-end":"magritte-layout-morph-end___LIg4d_1-3-29","layoutMorphEnd":"magritte-layout-morph-end___LIg4d_1-3-29","divider-container":"magritte-divider-container___-NdWi_1-3-29","dividerContainer":"magritte-divider-container___-NdWi_1-3-29"};
|
|
3
|
-
|
|
4
|
-
export { styles as s };
|
|
5
|
-
//# sourceMappingURL=nav-bar-BFd5MVDE.js.map
|
package/nav-bar-BFd5MVDE.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nav-bar-BFd5MVDE.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|