@npo/player 1.24.7 → 1.26.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.
Files changed (170) hide show
  1. package/README.md +1 -1
  2. package/lib/js/api/getstreamobject.d.ts +1 -1
  3. package/lib/js/api/getstreamobject.js +4 -4
  4. package/lib/js/api/getstreamobject.test.js +13 -13
  5. package/lib/js/playeractions/handlers/handleoffsets.js +9 -7
  6. package/lib/js/playeractions/handlers/handleoffsets.test.js +1 -1
  7. package/lib/js/playeractions/handlers/processplayerconfig.d.ts +1 -1
  8. package/lib/js/playeractions/handlers/processplayerconfig.js +18 -4
  9. package/lib/js/playeractions/handlers/processplayerconfig.test.js +116 -0
  10. package/lib/js/playeractions/handlers/processsourceconfig.d.ts +3 -1
  11. package/lib/js/playeractions/handlers/processsourceconfig.js +20 -10
  12. package/lib/js/playeractions/handlers/processsourceconfig.test.js +25 -0
  13. package/lib/js/settings/localization.d.ts +76 -1
  14. package/lib/js/settings/localization.js +2 -2
  15. package/lib/js/tracking/handlers/eventbinding.js +25 -17
  16. package/lib/js/tracking/handlers/eventlogging.js +3 -8
  17. package/lib/js/tracking/handlers/playertrackerinit.d.ts +2 -2
  18. package/lib/js/tracking/handlers/playertrackerinit.js +8 -6
  19. package/lib/js/tracking/handlers/playertrackerinit.test.d.ts +1 -0
  20. package/lib/js/tracking/handlers/playertrackerinit.test.js +74 -0
  21. package/lib/js/tracking/handlers/playertrackerstart.js +1 -1
  22. package/lib/js/utilities/utilities.element.d.ts +6 -0
  23. package/lib/js/utilities/utilities.element.js +10 -0
  24. package/lib/js/utilities/utilities.element.test.js +18 -5
  25. package/lib/lang/nl.json +1 -1
  26. package/lib/lang/subtitleLabels/nl.json +14 -0
  27. package/lib/npoplayer.d.ts +15 -6
  28. package/lib/npoplayer.js +57 -50
  29. package/lib/npoplayer.test.js +12 -4
  30. package/lib/package.json +3 -3
  31. package/lib/services/a11y/setup.js +2 -5
  32. package/lib/services/a11y/setup.test.js +2 -19
  33. package/lib/services/advertHandlers/discardAdBreak.js +4 -4
  34. package/lib/services/advertHandlers/discardAdBreak.test.js +25 -13
  35. package/lib/services/advertHandlers/handlePreRolls.js +19 -19
  36. package/lib/services/advertHandlers/handlePrerolls.test.js +4 -4
  37. package/lib/services/cdnProviders/cdnProviders.js +4 -2
  38. package/lib/services/drmHandlers/decideprofile.js +1 -1
  39. package/lib/services/drmHandlers/decideprofile.test.js +1 -1
  40. package/lib/services/drmHandlers/verifydrm.js +6 -6
  41. package/lib/services/drmHandlers/verifydrm.test.js +5 -5
  42. package/lib/services/eventListenerHandlers/removeEventListeners.js +2 -2
  43. package/lib/services/eventListenerHandlers/removeEventListeners.test.js +9 -9
  44. package/lib/services/keyboardHandlers/resolvekeypress.js +5 -5
  45. package/lib/services/keyboardHandlers/resolvekeypress.test.js +1 -1
  46. package/lib/services/liveStreamHandlers/handleLiveStreamControls.js +2 -2
  47. package/lib/services/liveStreamHandlers/handleLiveStreamControls.test.js +2 -2
  48. package/lib/services/localStorageHandlers/localStorageHandlers.js +2 -2
  49. package/lib/services/localStorageHandlers/localStorageHandlers.test.js +2 -5
  50. package/lib/services/nicamHandlers/nicamhandler.d.ts +5 -0
  51. package/lib/{ui/handlers → services/nicamHandlers}/nicamhandler.js +24 -15
  52. package/lib/services/nicamHandlers/nicamhandler.test.js +132 -0
  53. package/lib/services/npoPlayerAPI/npoPlayerAPI.d.ts +3 -2
  54. package/lib/services/npoPlayerAPI/npoPlayerAPI.js +19 -23
  55. package/lib/services/preferences/handlePreferences.d.ts +2 -0
  56. package/lib/services/preferences/handlePreferences.js +42 -0
  57. package/lib/services/preferences/handlePreferences.test.d.ts +1 -0
  58. package/lib/services/preferences/handlePreferences.test.js +102 -0
  59. package/lib/services/segmentHandlers/addSegmentEventListeners.js +2 -2
  60. package/lib/services/segmentHandlers/addSegmentEventListeners.test.js +1 -1
  61. package/lib/services/segmentHandlers/setSegmentMarkers.js +1 -1
  62. package/lib/services/services.d.ts +7 -0
  63. package/lib/services/services.js +26 -0
  64. package/lib/services/streamoptionsHandlers/streamOptionsHandler.d.ts +6 -0
  65. package/lib/services/streamoptionsHandlers/streamOptionsHandler.js +78 -0
  66. package/lib/services/streamoptionsHandlers/streamOptionsHandler.test.js +187 -0
  67. package/lib/services/uiHandlers/uiVisiblityHandler.d.ts +3 -0
  68. package/lib/services/uiHandlers/uiVisiblityHandler.js +26 -0
  69. package/lib/services/uiHandlers/uiVisiblityHandler.test.d.ts +1 -0
  70. package/lib/services/uiHandlers/uiVisiblityHandler.test.js +62 -0
  71. package/lib/src/js/api/getstreamobject.d.ts +1 -1
  72. package/lib/src/js/playeractions/handlers/processplayerconfig.d.ts +1 -1
  73. package/lib/src/js/playeractions/handlers/processplayerconfig.test.d.ts +1 -0
  74. package/lib/src/js/playeractions/handlers/processsourceconfig.d.ts +3 -1
  75. package/lib/src/js/playeractions/handlers/processsourceconfig.test.d.ts +1 -0
  76. package/lib/src/js/settings/localization.d.ts +76 -1
  77. package/lib/src/js/tracking/handlers/playertrackerinit.d.ts +2 -2
  78. package/lib/src/js/tracking/handlers/playertrackerinit.test.d.ts +1 -0
  79. package/lib/src/js/utilities/utilities.element.d.ts +6 -0
  80. package/lib/src/npoplayer.d.ts +15 -6
  81. package/lib/src/services/nicamHandlers/nicamhandler.d.ts +5 -0
  82. package/lib/src/services/nicamHandlers/nicamhandler.test.d.ts +1 -0
  83. package/lib/src/services/npoPlayerAPI/npoPlayerAPI.d.ts +3 -2
  84. package/lib/src/services/preferences/handlePreferences.d.ts +2 -0
  85. package/lib/src/services/preferences/handlePreferences.test.d.ts +1 -0
  86. package/lib/src/services/services.d.ts +7 -0
  87. package/lib/src/services/streamoptionsHandlers/streamOptionsHandler.d.ts +6 -0
  88. package/lib/src/services/streamoptionsHandlers/streamOptionsHandler.test.d.ts +1 -0
  89. package/lib/src/services/uiHandlers/uiVisiblityHandler.d.ts +3 -0
  90. package/lib/src/services/uiHandlers/uiVisiblityHandler.test.d.ts +1 -0
  91. package/lib/src/types/classes.d.ts +6 -0
  92. package/lib/src/types/interfaces.d.ts +25 -3
  93. package/lib/src/ui/components/adbutton.d.ts +1 -1
  94. package/lib/src/ui/components/adlabel.d.ts +1 -1
  95. package/lib/src/ui/components/buttons.d.ts +10 -17
  96. package/lib/src/ui/components/controlbar.d.ts +2 -2
  97. package/lib/src/ui/components/ctabar.d.ts +1 -1
  98. package/lib/src/ui/components/nativemobile/buttons.d.ts +8 -0
  99. package/lib/src/ui/components/playnext.d.ts +1 -3
  100. package/lib/src/ui/components/seekbar.d.ts +1 -1
  101. package/lib/src/ui/components/titlebar.d.ts +1 -1
  102. package/lib/src/ui/components/topbar.d.ts +2 -2
  103. package/lib/src/ui/components/verticalvideo/controlbar.d.ts +2 -2
  104. package/lib/src/ui/handlers/playnextscreen.test.d.ts +1 -0
  105. package/lib/src/ui/handlers/timecontrolhandlers.d.ts +3 -3
  106. package/lib/src/ui/uicontainer.d.ts +2 -3
  107. package/lib/src/ui/uicontainer.test.d.ts +1 -0
  108. package/lib/tests/mocks/mockLogEmitter.d.ts +2 -0
  109. package/lib/tests/mocks/mockLogEmitter.js +20 -0
  110. package/lib/tests/mocks/mockNpoplayer.js +4 -2
  111. package/lib/tests/mocks/playerContextMock.d.ts +5 -3
  112. package/lib/tests/mocks/playerContextMock.js +8 -5
  113. package/lib/types/classes.d.ts +6 -0
  114. package/lib/types/classes.js +12 -0
  115. package/lib/types/interfaces.d.ts +25 -3
  116. package/lib/types/interfaces.js +1 -0
  117. package/lib/ui/components/adbutton.d.ts +1 -1
  118. package/lib/ui/components/adbutton.js +3 -3
  119. package/lib/ui/components/adlabel.d.ts +1 -1
  120. package/lib/ui/components/adlabel.js +3 -3
  121. package/lib/ui/components/buttons.d.ts +10 -17
  122. package/lib/ui/components/buttons.js +44 -27
  123. package/lib/ui/components/controlbar.d.ts +2 -2
  124. package/lib/ui/components/controlbar.js +20 -32
  125. package/lib/ui/components/ctabar.d.ts +1 -1
  126. package/lib/ui/components/ctabar.js +4 -4
  127. package/lib/ui/components/nativemobile/buttons.d.ts +8 -0
  128. package/lib/ui/components/nativemobile/buttons.js +41 -1
  129. package/lib/ui/components/nativemobile/controlbar.js +1 -2
  130. package/lib/ui/components/nativemobile/topbar.js +2 -2
  131. package/lib/ui/components/playnext.d.ts +1 -3
  132. package/lib/ui/components/playnext.js +3 -3
  133. package/lib/ui/components/seekbar.d.ts +1 -1
  134. package/lib/ui/components/seekbar.js +5 -3
  135. package/lib/ui/components/settingspanel.js +9 -9
  136. package/lib/ui/components/titlebar.d.ts +1 -1
  137. package/lib/ui/components/titlebar.js +2 -2
  138. package/lib/ui/components/topbar.d.ts +2 -2
  139. package/lib/ui/components/topbar.js +8 -17
  140. package/lib/ui/components/verticalvideo/controlbar.d.ts +2 -2
  141. package/lib/ui/components/verticalvideo/controlbar.js +4 -4
  142. package/lib/ui/handlers/playnextscreen.test.d.ts +1 -0
  143. package/lib/ui/handlers/timecontrolhandlers.d.ts +3 -3
  144. package/lib/ui/nativemobileuifactory.js +20 -24
  145. package/lib/ui/nativemobileuifactory.test.js +2 -6
  146. package/lib/ui/uicontainer.d.ts +2 -3
  147. package/lib/ui/uicontainer.js +13 -30
  148. package/lib/ui/uicontainer.test.d.ts +1 -0
  149. package/lib/ui/uicontainer.test.js +80 -0
  150. package/package.json +3 -3
  151. package/src/style/components/_advert.scss +0 -9
  152. package/src/style/components/_icons.scss +5 -0
  153. package/src/style/components/_nicam.scss +5 -4
  154. package/src/style/components/_settingspanel.scss +48 -17
  155. package/src/style/components/vertical-video/_settingspanel.scss +1 -1
  156. package/src/style/npoplayer.css +26 -20
  157. package/src/style/variants/_player-base.scss +4 -0
  158. package/src/style/variants/_player-large.scss +5 -1
  159. package/src/style/variants/_player-small.scss +11 -8
  160. package/lib/src/ui/handlers/nicamhandler.d.ts +0 -6
  161. package/lib/src/ui/handlers/streamhandler.d.ts +0 -2
  162. package/lib/ui/handlers/nicamhandler.d.ts +0 -6
  163. package/lib/ui/handlers/nicamhandler.test.js +0 -36
  164. package/lib/ui/handlers/streamhandler.d.ts +0 -2
  165. package/lib/ui/handlers/streamhandler.js +0 -60
  166. /package/lib/{src/ui/handlers/playnextstreen.test.d.ts → js/playeractions/handlers/processplayerconfig.test.d.ts} +0 -0
  167. /package/lib/{ui/handlers/playnextstreen.test.d.ts → js/playeractions/handlers/processsourceconfig.test.d.ts} +0 -0
  168. /package/lib/{src/ui/handlers → services/nicamHandlers}/nicamhandler.test.d.ts +0 -0
  169. /package/lib/{ui/handlers/nicamhandler.test.d.ts → services/streamoptionsHandlers/streamOptionsHandler.test.d.ts} +0 -0
  170. /package/lib/ui/handlers/{playnextstreen.test.js → playnextscreen.test.js} +0 -0
@@ -0,0 +1,80 @@
1
+ import '@testing-library/jest-dom';
2
+ import { createPlayerContextMock } from '../../tests/mocks/playerContextMock';
3
+ import { NpoPlayerUIVariants } from '../types/interfaces';
4
+ import { DEFAULT_UI_DELAY, PREVENT_UI_DELAY } from '../services/npoPlayerAPI/contants';
5
+ import { createUIContainer } from './uicontainer';
6
+ import { mockPlayerAPI } from '../../tests/mocks/mockPlayerAPI';
7
+ import { BufferingOverlay, CastStatusOverlay, Container, ControlBar, ErrorMessageOverlay, PlaybackToggleButton, PlaybackToggleOverlay, SubtitleOverlay, TitleBar } from 'bitmovin-player-ui';
8
+ describe('createUIContainer', () => {
9
+ let playerContextMock;
10
+ let playerMock;
11
+ beforeEach(() => {
12
+ playerMock = mockPlayerAPI;
13
+ playerContextMock = createPlayerContextMock({
14
+ npoPlayer: {
15
+ container: document.createElement('div'),
16
+ version: '1.0.0',
17
+ player: playerMock,
18
+ uiComponents: []
19
+ }
20
+ });
21
+ });
22
+ afterEach(() => {
23
+ jest.resetAllMocks();
24
+ });
25
+ it('should create the default UI container with the correct components', () => {
26
+ const uiContainer = createUIContainer(playerContextMock, playerMock, NpoPlayerUIVariants.DEFAULT);
27
+ expect(uiContainer.getComponents()).toEqual([
28
+ expect.any(SubtitleOverlay),
29
+ expect.any(BufferingOverlay),
30
+ expect.any(PlaybackToggleOverlay),
31
+ expect.any(CastStatusOverlay),
32
+ expect.any(ControlBar),
33
+ expect.any(Container),
34
+ expect.any(ControlBar),
35
+ expect.any(Container),
36
+ expect.any(TitleBar),
37
+ expect.any(TitleBar),
38
+ expect.any(ErrorMessageOverlay)
39
+ ]);
40
+ expect(uiContainer.getConfig().hideDelay).toBe(DEFAULT_UI_DELAY);
41
+ expect(uiContainer.getDomElement().hasClass('bmpui-npo-player')).toBe(true);
42
+ });
43
+ it('should create the AD variant with the correct components and prevent UI delay', () => {
44
+ const uiContainer = createUIContainer(playerContextMock, playerMock, NpoPlayerUIVariants.AD);
45
+ expect(uiContainer.getComponents()).toEqual([
46
+ expect.any(PlaybackToggleOverlay),
47
+ expect.any(CastStatusOverlay),
48
+ expect.any(ControlBar),
49
+ expect.any(Container),
50
+ expect.any(ErrorMessageOverlay)
51
+ ]);
52
+ expect(uiContainer.getConfig().hideDelay).toBe(PREVENT_UI_DELAY);
53
+ expect(uiContainer.getDomElement().hasClass('bmpui-ster-ad')).toBe(true);
54
+ });
55
+ it('should create the AUDIO variant with the correct components and no video-specific classes', () => {
56
+ const uiContainer = createUIContainer(playerContextMock, playerMock, NpoPlayerUIVariants.AUDIO);
57
+ expect(uiContainer.getComponents()).toEqual([
58
+ expect.any(PlaybackToggleButton),
59
+ expect.any(ControlBar),
60
+ expect.any(TitleBar),
61
+ expect.any(ErrorMessageOverlay)
62
+ ]);
63
+ expect(uiContainer.getConfig().hideDelay).toBe(PREVENT_UI_DELAY);
64
+ expect(uiContainer.getDomElement().hasClass('bmpui-audio')).toBe(true);
65
+ });
66
+ it('should create the VERTICAL variant with the correct aspect ratio and components', () => {
67
+ playerMock.setAspectRatio = jest.fn();
68
+ const uiContainer = createUIContainer(playerContextMock, playerMock, NpoPlayerUIVariants.VERTICAL);
69
+ expect(playerMock.setAspectRatio).toHaveBeenCalledWith('9:16');
70
+ expect(uiContainer.getComponents()).toEqual([
71
+ expect.any(SubtitleOverlay),
72
+ expect.any(BufferingOverlay),
73
+ expect.any(ControlBar),
74
+ expect.any(TitleBar),
75
+ expect.any(ErrorMessageOverlay)
76
+ ]);
77
+ expect(uiContainer.getConfig().hideDelay).toBe(DEFAULT_UI_DELAY);
78
+ expect(uiContainer.getDomElement().hasClass('bmpui-vertical-video')).toBe(true);
79
+ });
80
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npo/player",
3
- "version": "1.24.7",
3
+ "version": "1.26.0",
4
4
  "description": "NPO Player",
5
5
  "author": "Publieke Omroep <player@npo.nl>",
6
6
  "contributors": [
@@ -89,8 +89,8 @@
89
89
  "webpack-dev-server": "^4.11.1"
90
90
  },
91
91
  "dependencies": {
92
- "@npotag/tag": "3.2.1",
93
- "bitmovin-player": "8.173.0",
92
+ "@npotag/tag": "3.2.4",
93
+ "bitmovin-player": "^8.166.0",
94
94
  "bitmovin-player-ui": "3.67.0"
95
95
  },
96
96
  "browserslist": [
@@ -4,15 +4,6 @@
4
4
  display: none;
5
5
  }
6
6
 
7
- .bmpui-ui-controlbar {
8
- &.bmpui-controlbar-middle,
9
- .bmpui-ui-rewindbutton,
10
- .bmpui-ui-forwardbutton,
11
- .bmpui-ui-settingstogglebutton {
12
- display: none;
13
- }
14
- }
15
-
16
7
  .bmpui-ui-seekbar {
17
8
  .bmpui-seekbar {
18
9
  .bmpui-seekbar-bufferlevel {
@@ -109,6 +109,11 @@
109
109
  &.bmpui-on .bmpui-label {
110
110
  mask-image: var(--npo-player-icon-cast-active);
111
111
  }
112
+
113
+ &.bmpui-disabled,
114
+ &.bmpui-hidden {
115
+ display: none;
116
+ }
112
117
  }
113
118
 
114
119
  /* Icon Airplay */
@@ -79,12 +79,13 @@
79
79
  }
80
80
  }
81
81
 
82
- // show nicam on default state
82
+ // show nicam on initial state and after UI hide
83
83
  &.bmpui-player-state-prepared,
84
84
  &.bmpui-player-state-prepared.bmpui-layout-max-width-400,
85
85
  &.bmpui-player-state-prepared.bmpui-layout-max-width-600,
86
- &.bmpui-show-nicam:not(.bmpui-player-state-paused).bmpui-layout-max-width-400,
87
- &.bmpui-show-nicam:not(.bmpui-player-state-paused).bmpui-layout-max-width-600 {
86
+ &.bmpui-player-state-prepared.bmpui-layout-max-width-800,
87
+ &.bmpui-player-state-prepared.bmpui-layout-max-width-1200,
88
+ &.bmpui-show-nicam {
88
89
  .bmpui-metadata,
89
90
  .bmpui-metadata.bmpui-title-bar {
90
91
  display: block;
@@ -94,7 +95,7 @@
94
95
 
95
96
  .bmpui-label-metadata-title,
96
97
  .bmpui-label-metadata-description {
97
- display: none;
98
+ opacity: 0;
98
99
  }
99
100
  }
100
101
 
@@ -3,18 +3,39 @@ $settings-panel-line-height: 19px;
3
3
 
4
4
  .bmpui-ui-settings-panel {
5
5
  display: block;
6
- padding: 40px 24px 24px;
6
+ padding: 0;
7
7
  height: auto;
8
- min-width: 290px; //Hotfix for select capping of text with only 'Snelheid'
8
+ min-width: 270px;
9
9
  z-index: 100;
10
10
  filter: drop-shadow(0px 6px 16px rgba(0, 0, 0, 0.35));
11
11
  border-radius: 12px;
12
12
  background-color: var(--npo-player-secondarycolor);
13
13
  color: var(--npo-player-textcolor);
14
14
  font-family: var(--fontRegular);
15
+ overflow: visible;
16
+ bottom: 75px;
15
17
 
16
- > .bmpui-container-wrapper {
17
- margin: 0;
18
+ &::after {
19
+ content: '';
20
+ position: absolute;
21
+ background: var(--npo-player-secondarycolor);
22
+ border-radius: 6px;
23
+ width: 32px;
24
+ height: 32px;
25
+ bottom: -10px;
26
+ transform: rotate(-45deg);
27
+ right: 36px;
28
+ }
29
+
30
+ .bmpui-container-wrapper {
31
+ position: relative;
32
+ z-index: 1;
33
+ }
34
+
35
+ label {
36
+ font-size: $settings-panel-font-size;
37
+ line-height: $settings-panel-line-height;
38
+ opacity: .75;
18
39
  }
19
40
 
20
41
  .bmpui-setting-header {
@@ -32,7 +53,7 @@ $settings-panel-line-height: 19px;
32
53
  .bmpui-ui-settingspanelpageopenbutton:focus-visible {
33
54
  box-shadow: none;
34
55
 
35
- .bmpui-label {
56
+ .bmpui-ui-label {
36
57
  @include focusStyle(-2px);
37
58
  }
38
59
  }
@@ -43,8 +64,19 @@ $settings-panel-line-height: 19px;
43
64
  > .bmpui-container-wrapper {
44
65
  display: flex;
45
66
  flex-direction: column;
46
- padding: 0px;
47
- gap: 16px;
67
+ padding: 52px 24px 16px;
68
+ gap: 10px;
69
+
70
+ &::before {
71
+ content: '';
72
+ opacity: 0.1;
73
+ height: 1px;
74
+ left: 0;
75
+ width: 100%;
76
+ position: absolute;
77
+ background-color: currentColor;
78
+ top: 36px;
79
+ }
48
80
 
49
81
  label {
50
82
  font-size: $settings-panel-font-size;
@@ -83,7 +115,7 @@ $settings-panel-line-height: 19px;
83
115
  border: solid 0.17em var(--npo-player-textcolor);
84
116
  border-width: 0 0.17em 0.17em 0;
85
117
  display: inline-block;
86
- padding: 0px;
118
+ padding: 0;
87
119
  margin-left: 8px;
88
120
  transform: rotate(-45deg);
89
121
  }
@@ -98,7 +130,7 @@ $settings-panel-line-height: 19px;
98
130
  display: flex;
99
131
  flex-direction: row;
100
132
  align-items: center;
101
- padding: 0px;
133
+ padding: 0;
102
134
  gap: 8px;
103
135
  justify-content: space-between;
104
136
  }
@@ -111,8 +143,7 @@ $settings-panel-line-height: 19px;
111
143
  > .bmpui-container-wrapper {
112
144
  display: flex;
113
145
  flex-direction: column;
114
- padding: 0px;
115
- gap: 16px;
146
+ padding: 24px 24px 16px;
116
147
 
117
148
  .bmpui-ui-settingspanelpagebackbutton {
118
149
  width: auto;
@@ -217,10 +248,10 @@ $settings-panel-line-height: 19px;
217
248
 
218
249
  .bmpui-ui-settingstogglebutton {
219
250
  position: absolute;
220
- top: 12px;
221
- right: 20px;
222
- width: 32px;
223
- height: 32px;
251
+ top: 8px;
252
+ right: 8px;
253
+ width: 24px;
254
+ height: 24px;
224
255
  padding: 0;
225
256
 
226
257
  span {
@@ -230,8 +261,8 @@ $settings-panel-line-height: 19px;
230
261
  &::before,
231
262
  &::after {
232
263
  content: '';
233
- top: 8px;
234
- left: 16px;
264
+ top: 4px;
265
+ left: 12px;
235
266
  width: 2px;
236
267
  height: 15px;
237
268
  position: absolute;
@@ -1,5 +1,5 @@
1
1
  .bmpui-ui-settings-panel {
2
- position: fixed;
2
+ position: absolute;
3
3
  bottom: 0;
4
4
  left: 0;
5
5
  width: 100%;