@applicaster/zapp-react-native-utils 12.0.0-alpha.5895113034 → 12.0.0-alpha.5923342081

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 (71) hide show
  1. package/analyticsUtils/AnalyticPlayerListener.ts +2 -16
  2. package/analyticsUtils/AnalyticsEvents/index.ts +7 -0
  3. package/analyticsUtils/AnalyticsEvents/sendShareEvent.ts +21 -0
  4. package/analyticsUtils/events.ts +6 -0
  5. package/analyticsUtils/index.tsx +6 -0
  6. package/appUtils/accessibilityManager/const.ts +50 -0
  7. package/appUtils/accessibilityManager/hooks.ts +40 -0
  8. package/appUtils/accessibilityManager/index.ts +166 -0
  9. package/appUtils/accessibilityManager/logger.ts +5 -0
  10. package/appUtils/focusManager/__tests__/__snapshots__/focusManager.test.js.snap +2 -3
  11. package/appUtils/focusManager/__tests__/focusManager.test.js +4 -24
  12. package/appUtils/focusManager/__tests__/index.test.ts +2 -3
  13. package/appUtils/focusManager/index.ts +76 -57
  14. package/appUtils/focusManager/treeDataStructure/Utils/index.js +75 -44
  15. package/appUtils/focusManager/utils/index.ts +100 -0
  16. package/appUtils/focusManagerAux/index.ts +76 -0
  17. package/appUtils/focusManagerAux/utils/index.ts +100 -0
  18. package/appUtils/index.js +2 -0
  19. package/appUtils/keyCodes/keys.web.js +8 -0
  20. package/appUtils/keyCodes/keysByPlatform.js +11 -1
  21. package/appUtils/platform/const.ts +25 -0
  22. package/appUtils/platform/index.ts +3 -0
  23. package/appUtils/platform/platformUtils.ts +217 -0
  24. package/appUtils/playerManager/conts.ts +1 -0
  25. package/appUtils/playerManager/index.ts +11 -5
  26. package/appUtils/playerManager/nativePlayerManager.ts +12 -0
  27. package/appUtils/playerManager/player.ts +14 -16
  28. package/appUtils/playerManager/playerHooks/usePlayerCurrentTime.tsx +57 -0
  29. package/appUtils/playerManager/playerNative.ts +5 -15
  30. package/appUtils/playerManager/usePlayerControllerSetup.tsx +5 -18
  31. package/appUtils/playerManager/usePlayerState.tsx +19 -34
  32. package/arrayUtils/__tests__/isFilledArray.test.ts +63 -0
  33. package/arrayUtils/index.ts +5 -0
  34. package/booleanUtils/index.ts +4 -4
  35. package/cellUtils/index.ts +38 -5
  36. package/functionUtils/index.ts +38 -0
  37. package/index.d.ts +15 -0
  38. package/keyboardState/index.ts +0 -0
  39. package/manifestUtils/defaultManifestConfigurations/player.js +121 -0
  40. package/manifestUtils/keys.js +2 -1
  41. package/navigationUtils/index.ts +48 -0
  42. package/numberUtils/__tests__/isLikeNumber.test.ts +18 -0
  43. package/numberUtils/__tests__/toNumber.test.ts +2 -2
  44. package/numberUtils/index.ts +5 -18
  45. package/package.json +2 -2
  46. package/playerUtils/configurationGenerator.ts +120 -0
  47. package/playerUtils/imaScriptDom.ts +59 -0
  48. package/pluginUtils/index.ts +9 -0
  49. package/reactHooks/cell-click/__tests__/index.test.js +9 -5
  50. package/reactHooks/cell-click/index.ts +11 -11
  51. package/reactHooks/debugging/__tests__/index.test.js +81 -11
  52. package/reactHooks/feed/__tests__/useBuildPipesUrl.test.tsx +30 -70
  53. package/reactHooks/feed/__tests__/useFeedRefresh.test.tsx +6 -2
  54. package/reactHooks/feed/useBuildPipesUrl.ts +7 -10
  55. package/reactHooks/feed/useFeedRefresh.tsx +9 -7
  56. package/reactHooks/layout/useDimensions/useDimensions.ts +2 -0
  57. package/reactHooks/navigation/index.ts +44 -7
  58. package/reactHooks/player/__tests__/useAutoSeek.test.tsx +1 -8
  59. package/reactHooks/player/useAutoSeek.tsx +14 -32
  60. package/reactHooks/player/useSeek.tsx +2 -4
  61. package/reactHooks/player/useTapSeek.tsx +7 -34
  62. package/reactHooks/resolvers/useCellResolver.ts +5 -1
  63. package/reactHooks/screen/__tests__/useCurrentScreenData.test.tsx +21 -23
  64. package/reactHooks/screen/index.ts +2 -0
  65. package/reactHooks/screen/useScreenBackgroundColor.ts +23 -0
  66. package/reactHooks/screen/useScreenContext.ts +1 -2
  67. package/reactUtils/index.ts +104 -0
  68. package/appUtils/focusManager/FocusableEvents.ts +0 -8
  69. package/appUtils/focusManager/treeDataStructure/Utils/__tests__/Utils_android.test.js +0 -1094
  70. package/appUtils/focusManager/treeDataStructure/Utils/index.android.js +0 -261
  71. package/appUtils/playerManager/DelayedSeekPlayerWrapper.tsx +0 -179
@@ -1,7 +1,7 @@
1
- import * as R from "ramda";
1
+ import { is, toLower } from "ramda";
2
2
 
3
3
  export const toBoolean = (value: any): boolean | undefined => {
4
- if (R.is(Boolean, value)) {
4
+ if (is(Boolean, value)) {
5
5
  return value;
6
6
  }
7
7
 
@@ -17,12 +17,12 @@ export const toBooleanWithDefaultTrue = toBooleanWithDefault(true);
17
17
 
18
18
  export const toBooleanWithDefaultFalse = toBooleanWithDefault(false);
19
19
 
20
- export const isTrue = (value: any): boolean => {
20
+ export const isTrue = (value: unknown): boolean => {
21
21
  if (value === true) {
22
22
  return true;
23
23
  }
24
24
 
25
- if (R.is(String, value) && value.toLowerCase() === "true") {
25
+ if (is(String, value) && toLower(value) === "true") {
26
26
  return true;
27
27
  }
28
28
 
@@ -31,13 +31,12 @@ export const getKeyForLabel = (dataKey, customKey) => {
31
31
  * This method will return true if the argument passed to it is either empty or nil
32
32
  * The method prevents zero from being evaluated as falsey in an || condition
33
33
  * i.e. - NaN, null, {}, "", [], should all return true
34
- * @param {*} argument - argument passed to it could be any type
35
34
  * @returns {Boolean} returns true if empty or nil
35
+ * @param value
36
36
  */
37
- export const isEmptyOrNil = R.either(
38
- R.equals(NaN),
39
- R.either(R.isEmpty, R.isNil)
40
- );
37
+
38
+ export const isEmptyOrNil = (value: any): boolean =>
39
+ Number.isNaN(value) || value == null || R.isEmpty(value);
41
40
 
42
41
  /**
43
42
  * This method is used to find the appropriate label for any given text field.
@@ -320,6 +319,7 @@ export const ifElseFocusedSelected = (
320
319
  * @param {Object} stylesObj styles object with keys from zapp { button_icon_width: "10" }
321
320
  * @returns {*} value, returns any type that can be used as styles
322
321
  */
322
+
323
323
  export const getValue = (stylesObj) => (key) => {
324
324
  return R.propOr(null, key, stylesObj);
325
325
  };
@@ -468,3 +468,36 @@ export const getColorFromData = ({
468
468
 
469
469
  return valueFromLayout;
470
470
  };
471
+
472
+ export const getImageStyles = ({
473
+ image,
474
+ value,
475
+ }: {
476
+ image: any;
477
+ value: any;
478
+ }) => {
479
+ return {
480
+ width: image.imageContentWidth,
481
+ height: image.imageContentHeight,
482
+ aspectRatio: image.aspectRatio,
483
+ borderRadius: toNumberWithDefaultZero(value("image_corner_radius")),
484
+ };
485
+ };
486
+
487
+ export const getImageContainerPaddingStyles = ({ value }: { value: any }) => {
488
+ return {
489
+ paddingTop: value("image_padding_top"),
490
+ paddingBottom: value("image_padding_bottom"),
491
+ paddingLeft: value("image_padding_left"),
492
+ paddingRight: value("image_padding_right"),
493
+ };
494
+ };
495
+
496
+ export const getImageContainerMarginStyles = ({ value }: { value: any }) => {
497
+ return {
498
+ marginTop: value("image_margin_top"),
499
+ marginBottom: value("image_margin_bottom"),
500
+ marginLeft: value("image_margin_left"),
501
+ marginRight: value("image_margin_right"),
502
+ };
503
+ };
@@ -1,4 +1,42 @@
1
1
  import * as R from "ramda";
2
+ import { useRef } from "react";
3
+
4
+ /**
5
+ *
6
+ * @param callback - The function to throttle.
7
+ * @param delay - The delay in milliseconds.
8
+ * @returns A throttled version of the callback.
9
+ */
10
+ export const useThrottle = (callback: () => void, delay: number) => {
11
+ const lastCallRef = useRef<number>(0);
12
+ const timeoutRef = useRef<any | null>(null);
13
+
14
+ const throttledFunction = () => {
15
+ const now = Date.now();
16
+
17
+ if (now - lastCallRef.current >= delay) {
18
+ callback();
19
+ lastCallRef.current = now;
20
+ } else if (!timeoutRef.current) {
21
+ const remainingTime = delay - (now - lastCallRef.current);
22
+
23
+ timeoutRef.current = setTimeout(() => {
24
+ callback();
25
+ lastCallRef.current = Date.now();
26
+ timeoutRef.current = null;
27
+ }, remainingTime);
28
+ }
29
+ };
30
+
31
+ const cancel = () => {
32
+ if (timeoutRef.current) {
33
+ clearTimeout(timeoutRef.current);
34
+ timeoutRef.current = null;
35
+ }
36
+ };
37
+
38
+ return { throttledFunction, cancel };
39
+ };
2
40
 
3
41
  /**
4
42
  * standard debounce function.
package/index.d.ts CHANGED
@@ -143,3 +143,18 @@ declare type BuilderData = {
143
143
  river?: ZappRiver;
144
144
  method?: string;
145
145
  };
146
+
147
+ declare type AccessibilityState = {
148
+ screenReaderEnabled: boolean;
149
+ reduceMotionEnabled: boolean;
150
+ boldTextEnabled: boolean;
151
+ };
152
+
153
+ declare type AccessibilityProps = {
154
+ accessibilityLabel?: string;
155
+ accessibilityHint?: string;
156
+ "aria-label"?: string;
157
+ "aria-description"?: string;
158
+ accessibilityRole?: string;
159
+ "aria-role"?: string;
160
+ };
File without changes
@@ -18,6 +18,7 @@ function getDevice(platform) {
18
18
  case "lg_tv":
19
19
  case "samsung_tv":
20
20
  case "web":
21
+ case "vizio":
21
22
  return "tv";
22
23
  }
23
24
  }
@@ -1795,6 +1796,30 @@ function getPlayerConfiguration({ platform }) {
1795
1796
  key: "menu_header_samsung_letter_spacing",
1796
1797
  initial_value: 0,
1797
1798
  },
1799
+ {
1800
+ type: "vizio_font_selector",
1801
+ label: "Vizio Font Family",
1802
+ key: "menu_header_vizio_font_family",
1803
+ initial_value: "SmsungOneUI-Bold",
1804
+ },
1805
+ {
1806
+ type: "number_input",
1807
+ label: "Vizio Font Size",
1808
+ key: "menu_header_vizio_font_size",
1809
+ initial_value: 30,
1810
+ },
1811
+ {
1812
+ type: "number_input",
1813
+ label: "Vizio Line Height",
1814
+ key: "menu_header_vizio_line_height",
1815
+ initial_value: 60,
1816
+ },
1817
+ {
1818
+ type: "number_input",
1819
+ label: "Vizio Letter Spacing",
1820
+ key: "menu_header_vizio_letter_spacing",
1821
+ initial_value: 0,
1822
+ },
1798
1823
  ]
1799
1824
  ),
1800
1825
  // Captions Menu - Item Text Label
@@ -1874,6 +1899,30 @@ function getPlayerConfiguration({ platform }) {
1874
1899
  key: "menu_item_samsung_letter_spacing",
1875
1900
  initial_value: 0,
1876
1901
  },
1902
+ {
1903
+ type: "vizio_font_selector",
1904
+ label: "Vizio Font Family",
1905
+ key: "menu_item_vizio_font_family",
1906
+ initial_value: "SmsungOneUI-Bold",
1907
+ },
1908
+ {
1909
+ type: "number_input",
1910
+ label: "Vizio Font Size",
1911
+ key: "menu_item_vizio_font_size",
1912
+ initial_value: 25,
1913
+ },
1914
+ {
1915
+ type: "number_input",
1916
+ label: "Vizio Line Height",
1917
+ key: "menu_item_vizio_line_height",
1918
+ initial_value: 40,
1919
+ },
1920
+ {
1921
+ type: "number_input",
1922
+ label: "Vizio Letter Spacing",
1923
+ key: "menu_item_vizio_letter_spacing",
1924
+ initial_value: 0,
1925
+ },
1877
1926
  ]
1878
1927
  ),
1879
1928
  // Captions Menu - Item Border
@@ -2017,6 +2066,18 @@ function getPlayerConfiguration({ platform }) {
2017
2066
  key: "samsung_tv_video_player_title_font_size",
2018
2067
  initial_value: 64,
2019
2068
  },
2069
+ {
2070
+ type: "vizio_font_selector",
2071
+ label: "Vizio Font Family",
2072
+ key: "vizio_video_player_title_font_family",
2073
+ initial_value: "Ubuntu-Bold",
2074
+ },
2075
+ {
2076
+ type: "number_input",
2077
+ label: "Vizio Font Size",
2078
+ key: "vizio_video_player_title_font_size",
2079
+ initial_value: 64,
2080
+ },
2020
2081
  {
2021
2082
  type: "tvos_font_selector",
2022
2083
  label: "tvOS Font Family",
@@ -2090,6 +2151,18 @@ function getPlayerConfiguration({ platform }) {
2090
2151
  key: "samsung_tv_video_player_summary_font_size",
2091
2152
  initial_value: 30,
2092
2153
  },
2154
+ {
2155
+ type: "vizio_font_selector",
2156
+ label: "Vizio Font Family",
2157
+ key: "vizio_video_player_summary_font_family",
2158
+ initial_value: "Ubuntu-Bold",
2159
+ },
2160
+ {
2161
+ type: "number_input",
2162
+ label: "Vizio Font Size",
2163
+ key: "vizio_video_player_summary_font_size",
2164
+ initial_value: 30,
2165
+ },
2093
2166
  {
2094
2167
  type: "tvos_font_selector",
2095
2168
  label: "tvOS Font Family",
@@ -2157,6 +2230,18 @@ function getPlayerConfiguration({ platform }) {
2157
2230
  key: "samsung_tv_audio_player_title_font_size",
2158
2231
  initial_value: 38,
2159
2232
  },
2233
+ {
2234
+ type: "vizio_font_selector",
2235
+ label: "Vizio Font Family",
2236
+ key: "vizio_tv_audio_player_title_font_family",
2237
+ initial_value: "Ubuntu-Bold",
2238
+ },
2239
+ {
2240
+ type: "number_input",
2241
+ label: "Vizio Font Size",
2242
+ key: "vizio_audio_player_title_font_size",
2243
+ initial_value: 38,
2244
+ },
2160
2245
  {
2161
2246
  type: "tvos_font_selector",
2162
2247
  label: "tvOS Font Family",
@@ -2212,6 +2297,18 @@ function getPlayerConfiguration({ platform }) {
2212
2297
  key: "samsung_tv_audio_player_summary_font_size",
2213
2298
  initial_value: 20,
2214
2299
  },
2300
+ {
2301
+ type: "vizio_font_selector",
2302
+ label: "Vizio Font Family",
2303
+ key: "vizio_audio_player_summary_font_family",
2304
+ initial_value: "Ubuntu-Bold",
2305
+ },
2306
+ {
2307
+ type: "number_input",
2308
+ label: "Vizio Font Size",
2309
+ key: "vizio_audio_player_summary_font_size",
2310
+ initial_value: 20,
2311
+ },
2215
2312
  {
2216
2313
  type: "tvos_font_selector",
2217
2314
  label: "tvOS Font Family",
@@ -2267,6 +2364,18 @@ function getPlayerConfiguration({ platform }) {
2267
2364
  key: "samsung_tv_player_time_font_size",
2268
2365
  initial_value: 20,
2269
2366
  },
2367
+ {
2368
+ type: "vizio_font_selector",
2369
+ label: "Vizio Font Family",
2370
+ key: "vizio_player_time_font_family",
2371
+ initial_value: "Ubuntu-Bold",
2372
+ },
2373
+ {
2374
+ type: "number_input",
2375
+ label: "Vizio Font Size",
2376
+ key: "vizio_player_time_font_size",
2377
+ initial_value: 20,
2378
+ },
2270
2379
  {
2271
2380
  type: "android_font_selector",
2272
2381
  label: "Android TV Font Family",
@@ -2322,6 +2431,18 @@ function getPlayerConfiguration({ platform }) {
2322
2431
  key: "samsung_tv_audio_player_run_time_font_size",
2323
2432
  initial_value: 20,
2324
2433
  },
2434
+ {
2435
+ type: "vizio_font_selector",
2436
+ label: "Vizio Font Family",
2437
+ key: "vizio_audio_player_run_time_font_family",
2438
+ initial_value: "Ubuntu-Bold",
2439
+ },
2440
+ {
2441
+ type: "number_input",
2442
+ label: "Vizio Font Size",
2443
+ key: "vizio_audio_player_run_time_font_size",
2444
+ initial_value: 20,
2445
+ },
2325
2446
  {
2326
2447
  type: "tvos_font_selector",
2327
2448
  label: "tvOS Font Family",
@@ -17,10 +17,11 @@ const ZAPPIFEST_FIELDS = {
17
17
  lg: "lg_tv_font_selector",
18
18
  samsung: "samsung_font_selector",
19
19
  roku: "roku_font_selector",
20
+ vizio: "vizio_font_selector",
20
21
  },
21
22
  };
22
23
 
23
- const TV_PLATFORMS = ["tvOS", "android", "LG", "samsung", "roku"];
24
+ const TV_PLATFORMS = ["tvOS", "android", "LG", "samsung", "roku", "vizio"];
24
25
 
25
26
  const FontPropsForTVPlatform = (platform) => ({
26
27
  [`${R.toLower(platform)}FontFamily`]: {
@@ -592,3 +592,51 @@ export function isMenuDisabled(
592
592
  export function routeIsPlayerScreen(currentRoute) {
593
593
  return currentRoute?.includes("/playable");
594
594
  }
595
+
596
+ export const getNavBarProps =
597
+ (currentRiver: ZappRiver, pathname: string, title: string) => () => {
598
+ const props = getNavigationPropsV2({
599
+ currentRiver,
600
+ title,
601
+ category: "nav_bar",
602
+ });
603
+
604
+ if (props) {
605
+ return {
606
+ ...props,
607
+ id: pathname,
608
+ pathname: pathname,
609
+ };
610
+ }
611
+
612
+ return null;
613
+ };
614
+
615
+ export const findMenuPlugin = (
616
+ navigations: ZappNavigation[],
617
+ plugins
618
+ ): QuickBrickPlugin => {
619
+ return resolveNavigationPlugin({
620
+ category: "menu",
621
+ navigations,
622
+ plugins,
623
+ }) as QuickBrickPlugin;
624
+ };
625
+
626
+ export const shouldNavBarDisplayMenu = (currentRiver: ZappRiver, plugins) =>
627
+ findMenuPlugin(currentRiver.navigations, plugins)?.identifier ===
628
+ "quick_brick_side_menu" ||
629
+ currentRiver?.navigations.findIndex(
630
+ (nav) => nav.category === "nav_bar" && nav.general?.override_menu_target
631
+ ) > -1;
632
+
633
+ export const getScreenId = (
634
+ screenData: LegacyNavigationScreenData,
635
+ fallbackRiver: ZappRiver
636
+ ) => {
637
+ return screenData?.targetScreen
638
+ ? screenData?.targetScreen?.id ?? fallbackRiver.id
639
+ : "screen_id" in screenData
640
+ ? screenData.screen_id
641
+ : fallbackRiver.id;
642
+ };
@@ -7,12 +7,24 @@ describe("isLikeNumber", () => {
7
7
  expect(isLikeNumber(value)).toBe(true);
8
8
  });
9
9
 
10
+ it("value is a number", () => {
11
+ const value = 123.45;
12
+
13
+ expect(isLikeNumber(value)).toBe(true);
14
+ });
15
+
10
16
  it("value is a string as number", () => {
11
17
  const value = "123";
12
18
 
13
19
  expect(isLikeNumber(value)).toBe(true);
14
20
  });
15
21
 
22
+ it("value is a string as number", () => {
23
+ const value = "123.45";
24
+
25
+ expect(isLikeNumber(value)).toBe(true);
26
+ });
27
+
16
28
  it("value is empty string", () => {
17
29
  const value = "";
18
30
 
@@ -54,4 +66,10 @@ describe("isLikeNumber", () => {
54
66
 
55
67
  expect(isLikeNumber(value)).toBe(false);
56
68
  });
69
+
70
+ it("NaN is not a number", () => {
71
+ const value = NaN;
72
+
73
+ expect(isLikeNumber(value)).toBe(false);
74
+ });
57
75
  });
@@ -2,7 +2,7 @@ import { toNumber } from "..";
2
2
 
3
3
  describe("toNumber", () => {
4
4
  it("return number if input is number", () => {
5
- const inputs = [-1, 0, 1, 100];
5
+ const inputs = [-1, 0, 1, 100, 0.2];
6
6
  expect.assertions(inputs.length);
7
7
 
8
8
  inputs.forEach((input) => {
@@ -12,7 +12,7 @@ describe("toNumber", () => {
12
12
  });
13
13
 
14
14
  it("return number if input is string as number", () => {
15
- const inputs = ["-1", "0", "1", "100"];
15
+ const inputs = ["-1", "0", "1", "100", "0.2"];
16
16
  expect.assertions(inputs.length);
17
17
 
18
18
  inputs.forEach((input) => {
@@ -50,27 +50,14 @@ export const toFiniteNumberWithDefault = (
50
50
  return possibleNumber;
51
51
  };
52
52
 
53
- export const isLikeNumber = (value: any): boolean => {
54
- if (R.isEmpty(value)) {
55
- return false;
56
- }
57
-
58
- if (R.is(Number, value)) {
59
- return true;
60
- }
61
-
62
- if (R.is(String, value)) {
63
- const onlyDigit = value
64
- .split("")
65
- .filter((char) =>
66
- ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"].includes(char)
67
- )
68
- .join("");
53
+ export const isLikeNumber = (value: unknown): boolean => {
54
+ const possibleNumber = toNumber(value);
69
55
 
70
- return value === onlyDigit;
56
+ if (R.isNil(possibleNumber)) {
57
+ return false;
71
58
  }
72
59
 
73
- return false;
60
+ return true;
74
61
  };
75
62
 
76
63
  export const isZero = (value: unknown): boolean =>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applicaster/zapp-react-native-utils",
3
- "version": "12.0.0-alpha.5895113034",
3
+ "version": "12.0.0-alpha.5923342081",
4
4
  "description": "Applicaster Zapp React Native utilities package",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "homepage": "https://github.com/applicaster/quickbrick#readme",
30
30
  "dependencies": {
31
- "@applicaster/applicaster-types": "12.0.0-alpha.5895113034",
31
+ "@applicaster/applicaster-types": "12.0.0-alpha.5923342081",
32
32
  "buffer": "^5.2.1",
33
33
  "camelize": "^1.0.0",
34
34
  "create-react-context": "^0.2.3",
@@ -1798,6 +1798,30 @@ function getPlayerConfiguration({ platform }) {
1798
1798
  key: "menu_header_samsung_letter_spacing",
1799
1799
  initial_value: 0,
1800
1800
  },
1801
+ {
1802
+ type: "vizio_font_selector",
1803
+ label: "Vizio Font Family",
1804
+ key: "menu_header_vizio_font_family",
1805
+ initial_value: "Ubuntu-Bold",
1806
+ },
1807
+ {
1808
+ type: "number_input",
1809
+ label: "Vizio Font Size",
1810
+ key: "menu_header_vizio_font_size",
1811
+ initial_value: 30,
1812
+ },
1813
+ {
1814
+ type: "number_input",
1815
+ label: "Vizio Line Height",
1816
+ key: "menu_header_vizio_line_height",
1817
+ initial_value: 60,
1818
+ },
1819
+ {
1820
+ type: "number_input",
1821
+ label: "Vizio Letter Spacing",
1822
+ key: "menu_header_vizio_letter_spacing",
1823
+ initial_value: 0,
1824
+ },
1801
1825
  ]
1802
1826
  ),
1803
1827
  // Captions Menu - Item Text Label
@@ -1877,6 +1901,30 @@ function getPlayerConfiguration({ platform }) {
1877
1901
  key: "menu_item_samsung_letter_spacing",
1878
1902
  initial_value: 0,
1879
1903
  },
1904
+ {
1905
+ type: "vizio_font_selector",
1906
+ label: "Vizio Font Family",
1907
+ key: "menu_item_vizio_font_family",
1908
+ initial_value: "Ubuntu-Medium",
1909
+ },
1910
+ {
1911
+ type: "number_input",
1912
+ label: "Vizio Font Size",
1913
+ key: "menu_item_vizio_font_size",
1914
+ initial_value: 25,
1915
+ },
1916
+ {
1917
+ type: "number_input",
1918
+ label: "Vizio Line Height",
1919
+ key: "menu_item_vizio_line_height",
1920
+ initial_value: 40,
1921
+ },
1922
+ {
1923
+ type: "number_input",
1924
+ label: "Vizio Letter Spacing",
1925
+ key: "menu_item_vizio_letter_spacing",
1926
+ initial_value: 0,
1927
+ },
1880
1928
  ]
1881
1929
  ),
1882
1930
  // Captions Menu - Item Border
@@ -2020,6 +2068,18 @@ function getPlayerConfiguration({ platform }) {
2020
2068
  key: "samsung_tv_video_player_title_font_size",
2021
2069
  initial_value: 58,
2022
2070
  },
2071
+ {
2072
+ type: "vizio_font_selector",
2073
+ label: "Vizio Font Family",
2074
+ key: "vizio_video_player_title_font_family",
2075
+ initial_value: "Ubuntu-Bold",
2076
+ },
2077
+ {
2078
+ type: "number_input",
2079
+ label: "Vizio Font Size",
2080
+ key: "vizio_video_player_title_font_size",
2081
+ initial_value: 58,
2082
+ },
2023
2083
  {
2024
2084
  type: "tvos_font_selector",
2025
2085
  label: "tvOS Font Family",
@@ -2093,6 +2153,18 @@ function getPlayerConfiguration({ platform }) {
2093
2153
  key: "samsung_tv_video_player_summary_font_size",
2094
2154
  initial_value: 30,
2095
2155
  },
2156
+ {
2157
+ type: "vizio_font_selector",
2158
+ label: "Vizio Font Family",
2159
+ key: "vizio_video_player_summary_font_family",
2160
+ initial_value: "Ubuntu-Medium",
2161
+ },
2162
+ {
2163
+ type: "number_input",
2164
+ label: "Vizio Font Size",
2165
+ key: "vizio_video_player_summary_font_size",
2166
+ initial_value: 30,
2167
+ },
2096
2168
  {
2097
2169
  type: "tvos_font_selector",
2098
2170
  label: "tvOS Font Family",
@@ -2160,6 +2232,18 @@ function getPlayerConfiguration({ platform }) {
2160
2232
  key: "samsung_tv_audio_player_title_font_size",
2161
2233
  initial_value: 40,
2162
2234
  },
2235
+ {
2236
+ type: "vizio_font_selector",
2237
+ label: "Vizio Font Family",
2238
+ key: "vizio_audio_player_title_font_family",
2239
+ initial_value: "Ubuntu-Bold",
2240
+ },
2241
+ {
2242
+ type: "number_input",
2243
+ label: "Vizio Font Size",
2244
+ key: "vizio_audio_player_title_font_size",
2245
+ initial_value: 40,
2246
+ },
2163
2247
  {
2164
2248
  type: "tvos_font_selector",
2165
2249
  label: "tvOS Font Family",
@@ -2215,6 +2299,18 @@ function getPlayerConfiguration({ platform }) {
2215
2299
  key: "samsung_tv_audio_player_summary_font_size",
2216
2300
  initial_value: 22,
2217
2301
  },
2302
+ {
2303
+ type: "vizio_font_selector",
2304
+ label: "Vizio Font Family",
2305
+ key: "vizio_audio_player_summary_font_family",
2306
+ initial_value: "Ubuntu-Medium",
2307
+ },
2308
+ {
2309
+ type: "number_input",
2310
+ label: "Vizio Font Size",
2311
+ key: "vizio_audio_player_summary_font_size",
2312
+ initial_value: 22,
2313
+ },
2218
2314
  {
2219
2315
  type: "tvos_font_selector",
2220
2316
  label: "tvOS Font Family",
@@ -2270,6 +2366,18 @@ function getPlayerConfiguration({ platform }) {
2270
2366
  key: "samsung_tv_player_time_font_size",
2271
2367
  initial_value: 20,
2272
2368
  },
2369
+ {
2370
+ type: "vizio_font_selector",
2371
+ label: "Vizio Font Family",
2372
+ key: "vizio_player_time_font_family",
2373
+ initial_value: "Ubuntu-Medium",
2374
+ },
2375
+ {
2376
+ type: "number_input",
2377
+ label: "Vizio Font Size",
2378
+ key: "vizio_player_time_font_size",
2379
+ initial_value: 20,
2380
+ },
2273
2381
  {
2274
2382
  type: "android_font_selector",
2275
2383
  label: "Android TV Font Family",
@@ -2325,6 +2433,18 @@ function getPlayerConfiguration({ platform }) {
2325
2433
  key: "samsung_tv_audio_player_run_time_font_size",
2326
2434
  initial_value: 20,
2327
2435
  },
2436
+ {
2437
+ type: "vizio_font_selector",
2438
+ label: "Vizio Font Family",
2439
+ key: "vizio_audio_player_run_time_font_family",
2440
+ initial_value: "Ubuntu-Medium",
2441
+ },
2442
+ {
2443
+ type: "number_input",
2444
+ label: "Vizio Font Size",
2445
+ key: "vizio_audio_player_run_time_font_size",
2446
+ initial_value: 20,
2447
+ },
2328
2448
  {
2329
2449
  type: "tvos_font_selector",
2330
2450
  label: "tvOS Font Family",