@playkit-js/hotspots 3.2.8 → 3.2.9-canary.0-28b6f6e

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playkit-js/hotspots",
3
- "version": "3.2.8",
3
+ "version": "3.2.9-canary.0-28b6f6e",
4
4
  "private": false,
5
5
  "bugs": {
6
6
  "url": "https://github.com/kaltura/playkit-js-hotspots/issues"
@@ -19,7 +19,7 @@
19
19
  "conventional-github-releaser": "3.1.3",
20
20
  "cross-env": "^7.0.3",
21
21
  "css-loader": "^6.7.1",
22
- "cypress": "^12.12.0",
22
+ "cypress": "13.13.1",
23
23
  "playwright-webkit": "^1.33.0",
24
24
  "prettier": "^2.6.2",
25
25
  "sass": "^1.52.3",
@@ -13,18 +13,19 @@ const defaultContainerStyles = {
13
13
  const defaultButtonsStyles = {
14
14
  position: 'relative',
15
15
  width: '100%',
16
- height: '100%',
16
+ height: 'inherit',
17
17
  appearance: 'none',
18
18
  border: 'none',
19
- display: 'table-cell',
20
- verticalAlign: 'middle',
21
- textAlign: 'center',
19
+ display: 'flex',
22
20
  cursor: 'pointer',
23
21
  wordBreak: 'break-all',
24
22
  textRendering: 'geometricPrecision',
25
23
  overflow: 'hidden',
26
24
  textOverflow: 'ellipsis',
27
- whiteSpace: 'nowrap'
25
+ padding: '3px',
26
+ alignItems: 'center',
27
+ justifyContent: 'center',
28
+ outline: 0,
28
29
  };
29
30
 
30
31
  type Props = {
@@ -164,42 +165,6 @@ export default class Hotspot extends Component<Props, State> {
164
165
  }
165
166
  };
166
167
 
167
- getFontSize = (layout: any, hotspot: any, label: string): number => {
168
- let textEl = this.createDivElement();
169
- textEl.style.top = `${layout.y}px`;
170
- textEl.style.fontSize = `${hotspot.styles['font-size']}px`;
171
- textEl.style.fontFamily = `${hotspot.styles['font-family']}`;
172
- textEl.textContent = label || '';
173
- document.body.appendChild(textEl);
174
-
175
- const textWidth = textEl.clientWidth;
176
- let initialFontSize = parseInt(hotspot.styles['font-size']);
177
- let fontSizeToUse = initialFontSize;
178
- if (textWidth > layout.width) {
179
- for (fontSizeToUse = initialFontSize - 1; fontSizeToUse >= MINIMAL_FONT_SIZE; fontSizeToUse--) {
180
- textEl.style.fontSize = `${fontSizeToUse}px`;
181
- const newTextWidth = textEl.clientWidth;
182
- if (newTextWidth <= layout.width) {
183
- break;
184
- }
185
- }
186
- }
187
-
188
- document.body.removeChild(textEl);
189
- return fontSizeToUse;
190
- };
191
-
192
- createDivElement = (): HTMLDivElement => {
193
- let divEl = document.createElement('div');
194
- divEl.id = 'textDivTest';
195
- divEl.style.position = 'absolute';
196
- divEl.style.display = 'table-cell';
197
- divEl.style.textAlign = 'center';
198
- divEl.style.wordBreak = 'break-all';
199
- divEl.style.textRendering = 'geometricPrecision';
200
- return divEl;
201
- };
202
-
203
168
  render() {
204
169
  const {hotspot} = this.props;
205
170
  const {layout, label} = hotspot;
@@ -217,14 +182,13 @@ export default class Hotspot extends Component<Props, State> {
217
182
  width: layout.width
218
183
  };
219
184
 
220
- const fontSizeToUse = `${this.getFontSize(layout, hotspot, label || '')}px`;
221
-
222
185
  const buttonStyles = {
223
186
  ...defaultButtonsStyles,
224
187
  ...hotspot.styles,
225
188
  cursor: disableClick ? 'default' : 'pointer',
226
189
  maxWidth: `${layout.width}px`,
227
- fontSize: fontSizeToUse
190
+ fontSize: `${hotspot.relativeStyle.fontSize}px`,
191
+ borderRadius: `${hotspot.relativeStyle.radiusBorder}px`,
228
192
  };
229
193
 
230
194
  return (
@@ -2,7 +2,14 @@ import {h, ComponentChildren} from 'preact';
2
2
  import {FloatingItem, FloatingManager, FloatingItemProps} from '@playkit-js/ui-managers';
3
3
 
4
4
  import {ContribServices, CuePoint, TimedMetadataEvent} from '@playkit-js/common';
5
- import {RawLayoutHotspot, LayoutHotspot, Canvas, RawFloatingCuepoint, Layout} from './utils/hotspot';
5
+ import {
6
+ RawLayoutHotspot,
7
+ LayoutHotspot,
8
+ Canvas,
9
+ RawFloatingCuepoint,
10
+ Layout,
11
+ Style
12
+ } from './utils/hotspot';
6
13
  import HotspotWrapper from './components/HotspotWrapper';
7
14
  import {ScaleCalculation, scaleVideo} from './utils/scale-video';
8
15
 
@@ -105,6 +112,14 @@ export class HotspotsPlugin extends KalturaPlayer.core.BasePlugin {
105
112
  };
106
113
  }
107
114
 
115
+ private _calculateStyle(cuepoint: LayoutHotspot, scaleCalculation: ScaleCalculation): Style {
116
+ const {rawLayout, styles} = cuepoint;
117
+ return {
118
+ fontSize: parseInt(styles['font-size'])/ rawLayout.stageWidth * scaleCalculation.width,
119
+ radiusBorder: parseInt(styles['border-radius'])/ rawLayout.stageWidth * scaleCalculation.width,
120
+ };
121
+ }
122
+
108
123
  private _recalculateCuepointLayout = (hotspots: RawLayoutHotspot[] | LayoutHotspot[]): LayoutHotspot[] => {
109
124
  this.logger.debug('calculating cuepoint layout based on video/player sizes');
110
125
 
@@ -127,7 +142,8 @@ export class HotspotsPlugin extends KalturaPlayer.core.BasePlugin {
127
142
  this.logger.debug('recalculate cuepoint layout based on new sizes');
128
143
  return hotspots.map(cuepoint => ({
129
144
  ...cuepoint,
130
- layout: this._calculateLayout(cuepoint as any, scaleCalculation)
145
+ layout: this._calculateLayout(cuepoint as any, scaleCalculation),
146
+ relativeStyle: this._calculateStyle(cuepoint as any, scaleCalculation)
131
147
  }));
132
148
  };
133
149
 
@@ -5,6 +5,11 @@ export interface Layout {
5
5
  height: number;
6
6
  }
7
7
 
8
+ export interface Style {
9
+ radiusBorder: number;
10
+ fontSize: number;
11
+ }
12
+
8
13
  export interface RawFloatingCuepoint {
9
14
  id: string;
10
15
  startTime: number;
@@ -21,6 +26,7 @@ export interface RawFloatingCuepoint {
21
26
 
22
27
  export interface FloatingCuepoint extends RawFloatingCuepoint {
23
28
  layout: Layout;
29
+ relativeStyle : Style;
24
30
  }
25
31
 
26
32
  export interface OpenUrl {