box-content-preview 3.109.0 → 3.113.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/dist/lib/index.js CHANGED
@@ -21,7 +21,10 @@
21
21
  * and limitations under the license.
22
22
  */
23
23
  import { decode as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_utils_keys_d752524f_decode__ } from "box-ui-elements/es/utils/keys";
24
+ import { Pause as __WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_MediumFilled_1ed4080c_Pause__, Play as __WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_MediumFilled_1ed4080c_Play__ } from "@box/blueprint-web-assets/icons/MediumFilled";
24
25
  import { createPortal as __WEBPACK_EXTERNAL_MODULE_react_dom_7dac9eee_createPortal__ } from "react-dom";
26
+ import * as __WEBPACK_EXTERNAL_MODULE__box_blueprint_web_e1e285a9__ from "@box/blueprint-web";
27
+ import * as __WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__ from "@box/blueprint-web-assets/icons/Medium";
25
28
  import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
26
29
  import { default as __WEBPACK_EXTERNAL_MODULE_axios_default__ } from "axios";
27
30
  import { bdlBoxBlue as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_bdlBoxBlue__, bdlGray65 as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_bdlGray65__, bdlGreenLight as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_bdlGreenLight__, bdlGrimace as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_bdlGrimace__, bdlWatermelonRed as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_bdlWatermelonRed__, bdlYellorange as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_bdlYellorange__, bdlYellow as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_bdlYellow__, white as __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_white__ } from "box-ui-elements/es/styles/variables";
@@ -355,6 +358,7 @@ class PreviewError extends Error {
355
358
  /* harmony export */ T2: () => (/* binding */ CLASS_BOX_PREVIEW_BUTTON),
356
359
  /* harmony export */ Td: () => (/* binding */ MIN_VIDEO_WIDTH_PX),
357
360
  /* harmony export */ U3: () => (/* binding */ CLASS_BOX_PREVIEW_TOGGLE_OVERLAY),
361
+ /* harmony export */ Uj: () => (/* binding */ CLASS_BOX_PREVIEW_VERSION_BANNER_COMPARED),
358
362
  /* harmony export */ VC: () => (/* binding */ CLASS_IS_SELECTABLE),
359
363
  /* harmony export */ VF: () => (/* binding */ SELECTOR_BOX_PREVIEW_ICON),
360
364
  /* harmony export */ VL: () => (/* binding */ CLASS_MULTI_IMAGE_PAGE),
@@ -395,6 +399,7 @@ class PreviewError extends Error {
395
399
  /* harmony export */ nC: () => (/* binding */ X_REP_HINT_DOC_THUMBNAIL),
396
400
  /* harmony export */ oK: () => (/* binding */ CLASS_BOX_PREVIEW_PRELOAD_PLACEHOLDER),
397
401
  /* harmony export */ oS: () => (/* binding */ CLASS_BOX_PREVIEW_BASE_HEADER),
402
+ /* harmony export */ on: () => (/* binding */ CLASS_BOX_PREVIEW_VERSION_BANNER),
398
403
  /* harmony export */ pM: () => (/* binding */ VIDEO_FTUX_CURSOR_SEEN_KEY),
399
404
  /* harmony export */ pl: () => (/* binding */ X_REP_HINT_BASE),
400
405
  /* harmony export */ qL: () => (/* binding */ VIDEO_PLAYER_CONTROL_BAR_HEIGHT),
@@ -425,7 +430,7 @@ class PreviewError extends Error {
425
430
  /* harmony export */ zb: () => (/* binding */ CLASS_DOC_FIRST_IMAGE),
426
431
  /* harmony export */ ze: () => (/* binding */ STATUS_PENDING)
427
432
  /* harmony export */ });
428
- /* unused harmony exports CLASS_ACTIVE, CLASS_BOX_PREVIEW, CLASS_BOX_PREVIEW_CONTAINER, CLASS_BOX_PREVIEW_HEADER_CONTAINER, CLASS_BOX_PREVIEW_ICON, CLASS_BOX_PREVIEW_LOGO_CUSTOM, CLASS_BOX_PREVIEW_LOGO_DEFAULT, CLASS_BOX_PREVIEW_VERSION_BANNER, CLASS_BOX_PREVIEW_VERSION_BANNER_COMPARED, CLASS_PREFETCHED_IMAGE, SELECTOR_BOX_PREVIEW_VERSION_BANNER, SELECTOR_BOX_PREVIEW_HEADER, SELECTOR_BOX_PREVIEW_NOTIFICATION */
433
+ /* unused harmony exports CLASS_ACTIVE, CLASS_BOX_PREVIEW, CLASS_BOX_PREVIEW_CONTAINER, CLASS_BOX_PREVIEW_HEADER_CONTAINER, CLASS_BOX_PREVIEW_ICON, CLASS_BOX_PREVIEW_LOGO_CUSTOM, CLASS_BOX_PREVIEW_LOGO_DEFAULT, CLASS_PREFETCHED_IMAGE, SELECTOR_BOX_PREVIEW_VERSION_BANNER, SELECTOR_BOX_PREVIEW_HEADER, SELECTOR_BOX_PREVIEW_NOTIFICATION */
429
434
  const CLASS_ACTIVE = 'bp-is-active';
430
435
  const CLASS_ANNOTATIONS_CREATE_DRAWING = 'bp-annotations-create--drawing';
431
436
  const CLASS_ANNOTATIONS_CREATE_HIGHLIGHT = 'bp-annotations-create--highlight';
@@ -1034,7 +1039,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
1034
1039
  const CLIENT_NAME = "box-content-preview"; // eslint-disable-line no-undef
1035
1040
  const CLIENT_NAME_KEY = 'box_client_name';
1036
1041
  const CLIENT_VERSION_KEY = 'box_client_version';
1037
- const CLIENT_VERSION = "3.109.0"; // eslint-disable-line no-undef
1042
+ const CLIENT_VERSION = "3.113.0"; // eslint-disable-line no-undef
1038
1043
  const HEADER_CLIENT_NAME = 'X-Box-Client-Name';
1039
1044
  const HEADER_CLIENT_VERSION = 'X-Box-Client-Version';
1040
1045
  const PROMISE_MAP = {};
@@ -1900,58 +1905,6 @@ function useClickOutside(element, callback) {
1900
1905
 
1901
1906
  /***/ },
1902
1907
 
1903
- /***/ 5827
1904
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1905
-
1906
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1907
- /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
1908
- /* harmony export */ });
1909
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1649);
1910
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
1911
-
1912
- function IconArrowCurveBack24(props) {
1913
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({
1914
- "data-testid": "IconArrowCurveBack24",
1915
- fill: "none",
1916
- focusable: "false",
1917
- height: 24,
1918
- viewBox: "0 0 24 24",
1919
- width: 24
1920
- }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
1921
- d: "M12.707 2.29346C12.3165 1.90293 11.6835 1.90293 11.293 2.29346L8.64648 4.93994C8.06097 5.52574 8.06083 6.47534 8.64648 7.06104L11.293 9.70752C11.6834 10.0976 12.3166 10.0976 12.707 9.70752C13.0974 9.3171 13.0972 8.68399 12.707 8.29346L11.4131 6.99951H12C15.3136 6.99951 17.9998 9.68597 18 12.9995C18 16.3132 15.3137 18.9995 12 18.9995C10.7239 18.9995 9.54372 18.6019 8.57227 17.9243C8.11945 17.6086 7.49569 17.7198 7.17969 18.1724C6.8638 18.6252 6.97502 19.2489 7.42773 19.5649C8.72394 20.4691 10.3016 20.9995 12 20.9995C16.4183 20.9995 20 17.4178 20 12.9995C19.9998 8.5814 16.4182 4.99951 12 4.99951H11.415L12.707 3.70752C13.0975 3.31707 13.0973 2.684 12.707 2.29346ZM3.2793 8.99951C2.67882 8.99951 2.32725 9.26833 2.27832 9.9126L2.09277 12.3882V12.4126C2.06348 12.8862 2.33203 13.2964 2.92285 13.2964C3.31348 13.2964 3.49414 13.2085 3.76758 12.9692C3.99217 12.7691 4.29991 12.5933 4.68555 12.5933C5.35925 12.5933 5.83283 13.0476 5.83301 13.6919C5.83301 14.3511 5.33984 14.8394 4.6709 14.8394C4.10449 14.8394 3.7627 14.5708 3.48926 14.1606C3.27447 13.8923 3.05948 13.7798 2.72266 13.7798C2.26868 13.7798 2.00015 14.0437 2 14.4829C2 14.6537 2.04404 14.8199 2.12207 14.9761C2.4834 15.6938 3.51855 16.2212 4.68555 16.2212C6.36035 16.2212 7.52246 15.2007 7.52246 13.6528C7.52229 12.3151 6.56531 11.3774 5.23242 11.3774C4.49526 11.3774 3.92389 11.6852 3.65039 12.1489H3.61621L3.75293 10.3765H6.44824C6.87793 10.3765 7.15137 10.1079 7.15137 9.68799C7.15121 9.26828 6.87292 8.99951 6.44824 8.99951H3.2793Z",
1922
- fill: "#fff"
1923
- }));
1924
- }
1925
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IconArrowCurveBack24);
1926
-
1927
- /***/ },
1928
-
1929
- /***/ 4419
1930
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1931
-
1932
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1933
- /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
1934
- /* harmony export */ });
1935
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1649);
1936
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
1937
-
1938
- function IconArrowCurveForward24(props) {
1939
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({
1940
- "data-testid": "IconArrowCurveForward24",
1941
- fill: "none",
1942
- focusable: "false",
1943
- height: 24,
1944
- viewBox: "0 0 24 24",
1945
- width: 24
1946
- }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
1947
- d: "M11.293 2.29346C11.6835 1.90293 12.3165 1.90293 12.707 2.29346L15.3535 4.93994C15.939 5.52574 15.9392 6.47535 15.3535 7.06104L12.707 9.70752C12.3166 10.0976 11.6834 10.0976 11.293 9.70752C10.9026 9.31711 10.9028 8.684 11.293 8.29346L12.5869 6.99951H12C8.68642 6.99951 6.00021 9.68598 6 12.9995C6 16.3132 8.68629 18.9995 12 18.9995C13.2761 18.9995 14.4563 18.6019 15.4277 17.9243C15.8805 17.6086 16.5043 17.7198 16.8203 18.1724C17.1362 18.6252 17.025 19.2489 16.5723 19.5649C15.2761 20.4691 13.6984 20.9995 12 20.9995C7.58172 20.9995 4 17.4178 4 12.9995C4.00021 8.58141 7.58185 4.99951 12 4.99951H12.585L11.293 3.70752C10.9025 3.31708 10.9027 2.684 11.293 2.29346ZM20.9258 8.99951C21.3505 8.99951 21.6287 9.26828 21.6289 9.68799C21.6289 10.1079 21.3555 10.3765 20.9258 10.3765H18.2305L18.0938 12.1489H18.1279C18.4014 11.6852 18.9728 11.3774 19.71 11.3774C21.0428 11.3774 21.9998 12.3151 22 13.6528C22 15.2007 20.8379 16.2212 19.1631 16.2212C17.9961 16.2212 16.9609 15.6938 16.5996 14.9761C16.5216 14.8199 16.4775 14.6537 16.4775 14.4829C16.4777 14.0437 16.7462 13.7798 17.2002 13.7798C17.537 13.7798 17.752 13.8923 17.9668 14.1606C18.2402 14.5708 18.582 14.8394 19.1484 14.8394C19.8174 14.8394 20.3105 14.3511 20.3105 13.6919C20.3104 13.0476 19.8368 12.5933 19.1631 12.5933C18.7774 12.5933 18.4697 12.7691 18.2451 12.9692C17.9717 13.2085 17.791 13.2964 17.4004 13.2964C16.8096 13.2964 16.541 12.8862 16.5703 12.4126V12.3882L16.7559 9.9126C16.8048 9.26833 17.1564 8.99951 17.7568 8.99951H20.9258Z",
1948
- fill: "white"
1949
- }));
1950
- }
1951
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IconArrowCurveForward24);
1952
-
1953
- /***/ },
1954
-
1955
1908
  /***/ 6815
1956
1909
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1957
1910
 
@@ -2055,56 +2008,6 @@ function IconExit24(props) {
2055
2008
 
2056
2009
  /***/ },
2057
2010
 
2058
- /***/ 7502
2059
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2060
-
2061
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2062
- /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
2063
- /* harmony export */ });
2064
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1649);
2065
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2066
-
2067
- function IconPause24(props) {
2068
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({
2069
- "data-testid": "IconPause24",
2070
- focusable: false,
2071
- height: 24,
2072
- viewBox: "0 0 24 24",
2073
- width: 24
2074
- }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
2075
- d: "M7 2C8.10457 2 9 2.89543 9 4V20C9 21.1046 8.10457 22 7 22C5.89543 22 5 21.1046 5 20V4C5 2.89543 5.89543 2 7 2ZM17 2C18.1046 2 19 2.89543 19 4V20C19 21.1046 18.1046 22 17 22C15.8954 22 15 21.1046 15 20V4C15 2.89543 15.8954 2 17 2Z",
2076
- fill: "#fff"
2077
- }));
2078
- }
2079
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IconPause24);
2080
-
2081
- /***/ },
2082
-
2083
- /***/ 4684
2084
- (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2085
-
2086
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2087
- /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
2088
- /* harmony export */ });
2089
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1649);
2090
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2091
-
2092
- function IconPlay24(props) {
2093
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({
2094
- "data-testid": "IconPlay24",
2095
- focusable: false,
2096
- height: 24,
2097
- viewBox: "0 0 24 24",
2098
- width: 24
2099
- }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
2100
- d: "M6 19.619V4.38098C6 3.16745 7.36603 2.45622 8.3602 3.15214L19.2445 10.7712C20.0976 11.3683 20.0976 12.6317 19.2445 13.2288L8.36019 20.8479C7.36603 21.5438 6 20.8326 6 19.619Z",
2101
- fill: "#fff"
2102
- }));
2103
- }
2104
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IconPlay24);
2105
-
2106
- /***/ },
2107
-
2108
2011
  /***/ 820
2109
2012
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2110
2013
 
@@ -2671,25 +2574,111 @@ function MediaSettingsMenuGuides({
2671
2574
  /* harmony export */ A: () => (/* binding */ MediaToggle)
2672
2575
  /* harmony export */ });
2673
2576
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1649);
2674
- /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4410);
2577
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5346);
2675
2578
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2676
2579
 
2677
2580
 
2678
2581
  function MediaToggle(props) {
2679
- const handleKeydown = event => {
2680
- const key = (0,_util__WEBPACK_IMPORTED_MODULE_1__/* .decodeKeydown */ .wU)(event);
2681
- if (key === 'Enter' || key === 'Space') {
2682
- event.stopPropagation();
2683
- }
2684
- };
2685
2582
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["default"].createElement("button", _extends({
2686
- onKeyDown: handleKeydown,
2583
+ onKeyDown: _utils__WEBPACK_IMPORTED_MODULE_1__/* .stopActivationKeyPropagation */ .My,
2687
2584
  type: "button"
2688
2585
  }, props));
2689
2586
  }
2690
2587
 
2691
2588
  /***/ },
2692
2589
 
2590
+ /***/ 2677
2591
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2592
+
2593
+
2594
+ // EXPORTS
2595
+ __webpack_require__.d(__webpack_exports__, {
2596
+ A: () => (/* binding */ PlayPauseButton)
2597
+ });
2598
+
2599
+ // EXTERNAL MODULE: external "react"
2600
+ var external_react_ = __webpack_require__(1649);
2601
+ // EXTERNAL MODULE: external "@box/blueprint-web"
2602
+ var blueprint_web_ = __webpack_require__(8912);
2603
+ ;// external "@box/blueprint-web-assets/icons/MediumFilled"
2604
+
2605
+ ;// ./src/lib/viewers/controls/icons/IconPause24.tsx
2606
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2607
+
2608
+ function IconPause24(props) {
2609
+ return /*#__PURE__*/external_react_.createElement("svg", _extends({
2610
+ "data-testid": "IconPause24",
2611
+ focusable: false,
2612
+ height: 24,
2613
+ viewBox: "0 0 24 24",
2614
+ width: 24
2615
+ }, props), /*#__PURE__*/external_react_.createElement("path", {
2616
+ d: "M7 2C8.10457 2 9 2.89543 9 4V20C9 21.1046 8.10457 22 7 22C5.89543 22 5 21.1046 5 20V4C5 2.89543 5.89543 2 7 2ZM17 2C18.1046 2 19 2.89543 19 4V20C19 21.1046 18.1046 22 17 22C15.8954 22 15 21.1046 15 20V4C15 2.89543 15.8954 2 17 2Z",
2617
+ fill: "#fff"
2618
+ }));
2619
+ }
2620
+ /* harmony default export */ const icons_IconPause24 = (IconPause24);
2621
+ ;// ./src/lib/viewers/controls/icons/IconPlay24.tsx
2622
+ function IconPlay24_extends() { return IconPlay24_extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, IconPlay24_extends.apply(null, arguments); }
2623
+
2624
+ function IconPlay24(props) {
2625
+ return /*#__PURE__*/external_react_.createElement("svg", IconPlay24_extends({
2626
+ "data-testid": "IconPlay24",
2627
+ focusable: false,
2628
+ height: 24,
2629
+ viewBox: "0 0 24 24",
2630
+ width: 24
2631
+ }, props), /*#__PURE__*/external_react_.createElement("path", {
2632
+ d: "M6 19.619V4.38098C6 3.16745 7.36603 2.45622 8.3602 3.15214L19.2445 10.7712C20.0976 11.3683 20.0976 12.6317 19.2445 13.2288L8.36019 20.8479C7.36603 21.5438 6 20.8326 6 19.619Z",
2633
+ fill: "#fff"
2634
+ }));
2635
+ }
2636
+ /* harmony default export */ const icons_IconPlay24 = (IconPlay24);
2637
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/MediaToggle.tsx
2638
+ var MediaToggle = __webpack_require__(8997);
2639
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/utils.ts
2640
+ var utils = __webpack_require__(5346);
2641
+ ;// ./src/lib/viewers/controls/media/PlayPauseButton.tsx
2642
+
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+
2649
+ function PlayPauseButton({
2650
+ className,
2651
+ isPlaying,
2652
+ onPlayPause,
2653
+ isBlueprintEnabled = false
2654
+ }) {
2655
+ const title = isPlaying ? "Pause" : "Play";
2656
+ const handleClick = () => onPlayPause(!isPlaying);
2657
+ if (isBlueprintEnabled) {
2658
+ return /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.Tooltip, {
2659
+ content: title
2660
+ }, /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.IconButton, {
2661
+ "aria-label": title,
2662
+ "data-resin-target": "playPause",
2663
+ "data-target-id": "PlayPauseButton-playPause",
2664
+ icon: isPlaying ? __WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_MediumFilled_1ed4080c_Pause__ : __WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_MediumFilled_1ed4080c_Play__,
2665
+ onClick: handleClick,
2666
+ onKeyDown: utils/* stopActivationKeyPropagation */.My,
2667
+ size: "large",
2668
+ variant: "on-dark"
2669
+ }));
2670
+ }
2671
+ const Icon = isPlaying ? icons_IconPause24 : icons_IconPlay24;
2672
+ return /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
2673
+ className: className,
2674
+ "data-resin-target": "playPause",
2675
+ onClick: handleClick,
2676
+ title: title
2677
+ }, /*#__PURE__*/external_react_["default"].createElement(Icon, null));
2678
+ }
2679
+
2680
+ /***/ },
2681
+
2693
2682
  /***/ 6321
2694
2683
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2695
2684
 
@@ -2704,18 +2693,10 @@ var external_react_ = __webpack_require__(1649);
2704
2693
  // EXTERNAL MODULE: ./node_modules/lodash/noop.js
2705
2694
  var noop = __webpack_require__(3950);
2706
2695
  var noop_default = /*#__PURE__*/__webpack_require__.n(noop);
2707
- // EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconPlay24.tsx
2708
- var IconPlay24 = __webpack_require__(4684);
2709
- // EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconPause24.tsx
2710
- var IconPause24 = __webpack_require__(7502);
2711
- // EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconArrowCurveForward24.tsx
2712
- var IconArrowCurveForward24 = __webpack_require__(4419);
2713
- // EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconArrowCurveBack24.tsx
2714
- var IconArrowCurveBack24 = __webpack_require__(5827);
2715
- // EXTERNAL MODULE: ./src/lib/viewers/controls/media/MediaToggle.tsx
2716
- var MediaToggle = __webpack_require__(8997);
2717
- // EXTERNAL MODULE: ./src/lib/constants.js
2718
- var constants = __webpack_require__(9130);
2696
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/PlayPauseButton.tsx + 3 modules
2697
+ var PlayPauseButton = __webpack_require__(2677);
2698
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/SkipButton.tsx + 2 modules
2699
+ var SkipButton = __webpack_require__(2659);
2719
2700
  ;// ./src/lib/viewers/controls/media/PlayPauseToggle.scss
2720
2701
  // extracted by mini-css-extract-plugin
2721
2702
 
@@ -2725,42 +2706,128 @@ var constants = __webpack_require__(9130);
2725
2706
 
2726
2707
 
2727
2708
 
2728
-
2729
-
2730
-
2731
-
2732
2709
  function PlayPauseToggle({
2733
2710
  isPlaying,
2734
2711
  onPlayPause = (noop_default()),
2735
2712
  movePlayback = (noop_default()),
2736
- hasSkipButtons = true
2713
+ hasSkipButtons = true,
2714
+ isBlueprintEnabled = false
2737
2715
  }) {
2738
- const PlayPauseIcon = isPlaying ? IconPause24/* default */.A : IconPlay24/* default */.A;
2739
- const title = isPlaying ? "Pause" : "Play";
2740
- const skipForwardTitle = "Skip forward";
2741
- const skipBackwardTitle = "Skip backward";
2742
- const moveForward = () => {
2743
- movePlayback(true, constants/* MEDIA_PLAYBACK_SKIP_DURATION */.uN);
2744
- };
2745
- const moveBackward = () => {
2746
- movePlayback(false, constants/* MEDIA_PLAYBACK_SKIP_DURATION */.uN);
2747
- };
2748
- return /*#__PURE__*/external_react_["default"].createElement(external_react_["default"].Fragment, null, hasSkipButtons && /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
2716
+ return /*#__PURE__*/external_react_["default"].createElement(external_react_["default"].Fragment, null, hasSkipButtons && /*#__PURE__*/external_react_["default"].createElement(SkipButton/* default */.A, {
2749
2717
  className: "bp-PlayPauseToggle",
2750
- "data-resin-target": "skipBackward",
2751
- onClick: moveBackward,
2752
- title: skipBackwardTitle
2753
- }, /*#__PURE__*/external_react_["default"].createElement(IconArrowCurveBack24/* default */.A, null)), /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
2718
+ direction: "backward",
2719
+ movePlayback: movePlayback,
2720
+ isBlueprintEnabled: isBlueprintEnabled
2721
+ }), /*#__PURE__*/external_react_["default"].createElement(PlayPauseButton/* default */.A, {
2754
2722
  className: "bp-PlayPauseToggle",
2755
- "data-resin-target": "playPause",
2756
- onClick: () => onPlayPause(!isPlaying),
2757
- title: title
2758
- }, /*#__PURE__*/external_react_["default"].createElement(PlayPauseIcon, null)), hasSkipButtons && /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
2723
+ isPlaying: isPlaying,
2724
+ onPlayPause: onPlayPause,
2725
+ isBlueprintEnabled: isBlueprintEnabled
2726
+ }), hasSkipButtons && /*#__PURE__*/external_react_["default"].createElement(SkipButton/* default */.A, {
2759
2727
  className: "bp-PlayPauseToggle",
2760
- "data-resin-target": "skipForward",
2761
- onClick: moveForward,
2762
- title: skipForwardTitle
2763
- }, /*#__PURE__*/external_react_["default"].createElement(IconArrowCurveForward24/* default */.A, null)));
2728
+ direction: "forward",
2729
+ movePlayback: movePlayback,
2730
+ isBlueprintEnabled: isBlueprintEnabled
2731
+ }));
2732
+ }
2733
+
2734
+ /***/ },
2735
+
2736
+ /***/ 2659
2737
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2738
+
2739
+
2740
+ // EXPORTS
2741
+ __webpack_require__.d(__webpack_exports__, {
2742
+ A: () => (/* binding */ SkipButton)
2743
+ });
2744
+
2745
+ // EXTERNAL MODULE: external "react"
2746
+ var external_react_ = __webpack_require__(1649);
2747
+ // EXTERNAL MODULE: external "@box/blueprint-web"
2748
+ var blueprint_web_ = __webpack_require__(8912);
2749
+ // EXTERNAL MODULE: external "@box/blueprint-web-assets/icons/Medium"
2750
+ var Medium_ = __webpack_require__(9747);
2751
+ ;// ./src/lib/viewers/controls/icons/IconArrowCurveBack24.tsx
2752
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2753
+
2754
+ function IconArrowCurveBack24(props) {
2755
+ return /*#__PURE__*/external_react_.createElement("svg", _extends({
2756
+ "data-testid": "IconArrowCurveBack24",
2757
+ fill: "none",
2758
+ focusable: "false",
2759
+ height: 24,
2760
+ viewBox: "0 0 24 24",
2761
+ width: 24
2762
+ }, props), /*#__PURE__*/external_react_.createElement("path", {
2763
+ d: "M12.707 2.29346C12.3165 1.90293 11.6835 1.90293 11.293 2.29346L8.64648 4.93994C8.06097 5.52574 8.06083 6.47534 8.64648 7.06104L11.293 9.70752C11.6834 10.0976 12.3166 10.0976 12.707 9.70752C13.0974 9.3171 13.0972 8.68399 12.707 8.29346L11.4131 6.99951H12C15.3136 6.99951 17.9998 9.68597 18 12.9995C18 16.3132 15.3137 18.9995 12 18.9995C10.7239 18.9995 9.54372 18.6019 8.57227 17.9243C8.11945 17.6086 7.49569 17.7198 7.17969 18.1724C6.8638 18.6252 6.97502 19.2489 7.42773 19.5649C8.72394 20.4691 10.3016 20.9995 12 20.9995C16.4183 20.9995 20 17.4178 20 12.9995C19.9998 8.5814 16.4182 4.99951 12 4.99951H11.415L12.707 3.70752C13.0975 3.31707 13.0973 2.684 12.707 2.29346ZM3.2793 8.99951C2.67882 8.99951 2.32725 9.26833 2.27832 9.9126L2.09277 12.3882V12.4126C2.06348 12.8862 2.33203 13.2964 2.92285 13.2964C3.31348 13.2964 3.49414 13.2085 3.76758 12.9692C3.99217 12.7691 4.29991 12.5933 4.68555 12.5933C5.35925 12.5933 5.83283 13.0476 5.83301 13.6919C5.83301 14.3511 5.33984 14.8394 4.6709 14.8394C4.10449 14.8394 3.7627 14.5708 3.48926 14.1606C3.27447 13.8923 3.05948 13.7798 2.72266 13.7798C2.26868 13.7798 2.00015 14.0437 2 14.4829C2 14.6537 2.04404 14.8199 2.12207 14.9761C2.4834 15.6938 3.51855 16.2212 4.68555 16.2212C6.36035 16.2212 7.52246 15.2007 7.52246 13.6528C7.52229 12.3151 6.56531 11.3774 5.23242 11.3774C4.49526 11.3774 3.92389 11.6852 3.65039 12.1489H3.61621L3.75293 10.3765H6.44824C6.87793 10.3765 7.15137 10.1079 7.15137 9.68799C7.15121 9.26828 6.87292 8.99951 6.44824 8.99951H3.2793Z",
2764
+ fill: "#fff"
2765
+ }));
2766
+ }
2767
+ /* harmony default export */ const icons_IconArrowCurveBack24 = (IconArrowCurveBack24);
2768
+ ;// ./src/lib/viewers/controls/icons/IconArrowCurveForward24.tsx
2769
+ function IconArrowCurveForward24_extends() { return IconArrowCurveForward24_extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, IconArrowCurveForward24_extends.apply(null, arguments); }
2770
+
2771
+ function IconArrowCurveForward24(props) {
2772
+ return /*#__PURE__*/external_react_.createElement("svg", IconArrowCurveForward24_extends({
2773
+ "data-testid": "IconArrowCurveForward24",
2774
+ fill: "none",
2775
+ focusable: "false",
2776
+ height: 24,
2777
+ viewBox: "0 0 24 24",
2778
+ width: 24
2779
+ }, props), /*#__PURE__*/external_react_.createElement("path", {
2780
+ d: "M11.293 2.29346C11.6835 1.90293 12.3165 1.90293 12.707 2.29346L15.3535 4.93994C15.939 5.52574 15.9392 6.47535 15.3535 7.06104L12.707 9.70752C12.3166 10.0976 11.6834 10.0976 11.293 9.70752C10.9026 9.31711 10.9028 8.684 11.293 8.29346L12.5869 6.99951H12C8.68642 6.99951 6.00021 9.68598 6 12.9995C6 16.3132 8.68629 18.9995 12 18.9995C13.2761 18.9995 14.4563 18.6019 15.4277 17.9243C15.8805 17.6086 16.5043 17.7198 16.8203 18.1724C17.1362 18.6252 17.025 19.2489 16.5723 19.5649C15.2761 20.4691 13.6984 20.9995 12 20.9995C7.58172 20.9995 4 17.4178 4 12.9995C4.00021 8.58141 7.58185 4.99951 12 4.99951H12.585L11.293 3.70752C10.9025 3.31708 10.9027 2.684 11.293 2.29346ZM20.9258 8.99951C21.3505 8.99951 21.6287 9.26828 21.6289 9.68799C21.6289 10.1079 21.3555 10.3765 20.9258 10.3765H18.2305L18.0938 12.1489H18.1279C18.4014 11.6852 18.9728 11.3774 19.71 11.3774C21.0428 11.3774 21.9998 12.3151 22 13.6528C22 15.2007 20.8379 16.2212 19.1631 16.2212C17.9961 16.2212 16.9609 15.6938 16.5996 14.9761C16.5216 14.8199 16.4775 14.6537 16.4775 14.4829C16.4777 14.0437 16.7462 13.7798 17.2002 13.7798C17.537 13.7798 17.752 13.8923 17.9668 14.1606C18.2402 14.5708 18.582 14.8394 19.1484 14.8394C19.8174 14.8394 20.3105 14.3511 20.3105 13.6919C20.3104 13.0476 19.8368 12.5933 19.1631 12.5933C18.7774 12.5933 18.4697 12.7691 18.2451 12.9692C17.9717 13.2085 17.791 13.2964 17.4004 13.2964C16.8096 13.2964 16.541 12.8862 16.5703 12.4126V12.3882L16.7559 9.9126C16.8048 9.26833 17.1564 8.99951 17.7568 8.99951H20.9258Z",
2781
+ fill: "white"
2782
+ }));
2783
+ }
2784
+ /* harmony default export */ const icons_IconArrowCurveForward24 = (IconArrowCurveForward24);
2785
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/MediaToggle.tsx
2786
+ var MediaToggle = __webpack_require__(8997);
2787
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/utils.ts
2788
+ var utils = __webpack_require__(5346);
2789
+ // EXTERNAL MODULE: ./src/lib/constants.js
2790
+ var constants = __webpack_require__(9130);
2791
+ ;// ./src/lib/viewers/controls/media/SkipButton.tsx
2792
+
2793
+
2794
+
2795
+
2796
+
2797
+
2798
+
2799
+
2800
+ function SkipButton({
2801
+ className,
2802
+ direction,
2803
+ movePlayback,
2804
+ isBlueprintEnabled = false
2805
+ }) {
2806
+ const isForward = direction === 'forward';
2807
+ const resinTarget = isForward ? 'skipForward' : 'skipBackward';
2808
+ const title = isForward ? "Skip forward" : "Skip backward";
2809
+ const handleClick = () => movePlayback(isForward, constants/* MEDIA_PLAYBACK_SKIP_DURATION */.uN);
2810
+ if (isBlueprintEnabled) {
2811
+ return /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.Tooltip, {
2812
+ content: title
2813
+ }, /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.IconButton, {
2814
+ "aria-label": title,
2815
+ "data-resin-target": resinTarget,
2816
+ "data-target-id": `SkipButton-${resinTarget}`,
2817
+ icon: isForward ? Medium_.ArrowCurveForward5 : Medium_.ArrowCurveBack5,
2818
+ onClick: handleClick,
2819
+ onKeyDown: utils/* stopActivationKeyPropagation */.My,
2820
+ size: "large",
2821
+ variant: "on-dark"
2822
+ }));
2823
+ }
2824
+ const Icon = isForward ? icons_IconArrowCurveForward24 : icons_IconArrowCurveBack24;
2825
+ return /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
2826
+ className: className,
2827
+ "data-resin-target": resinTarget,
2828
+ onClick: handleClick,
2829
+ title: title
2830
+ }, /*#__PURE__*/external_react_["default"].createElement(Icon, null));
2764
2831
  }
2765
2832
 
2766
2833
  /***/ },
@@ -3005,9 +3072,13 @@ __webpack_require__.d(__webpack_exports__, {
3005
3072
 
3006
3073
  // EXTERNAL MODULE: external "react"
3007
3074
  var external_react_ = __webpack_require__(1649);
3075
+ // EXTERNAL MODULE: external "@box/blueprint-web"
3076
+ var blueprint_web_ = __webpack_require__(8912);
3008
3077
  // EXTERNAL MODULE: ./node_modules/classnames/index.js
3009
3078
  var classnames = __webpack_require__(2485);
3010
3079
  var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
3080
+ // EXTERNAL MODULE: external "@box/blueprint-web-assets/icons/Medium"
3081
+ var Medium_ = __webpack_require__(9747);
3011
3082
  ;// ./src/lib/viewers/controls/icons/IconVolumeMed24.tsx
3012
3083
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3013
3084
 
@@ -3059,6 +3130,8 @@ function IconVolumeMuted24(props) {
3059
3130
  }));
3060
3131
  }
3061
3132
  /* harmony default export */ const icons_IconVolumeMuted24 = (IconVolumeMuted24);
3133
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/utils.ts
3134
+ var utils = __webpack_require__(5346);
3062
3135
  // EXTERNAL MODULE: ./src/lib/viewers/controls/media/MediaToggle.tsx
3063
3136
  var MediaToggle = __webpack_require__(8997);
3064
3137
  ;// ./src/lib/viewers/controls/hooks/useAttention.ts
@@ -3306,9 +3379,24 @@ function VolumeSliderControl(_ref) {
3306
3379
 
3307
3380
 
3308
3381
 
3382
+
3383
+
3384
+
3309
3385
  /** Keyboard volume keeps the flyout open longer than the 200ms max-width transition. */
3310
3386
  const VOLUME_FLYOUT_DISMISS_MS = 1000;
3311
- function getIcon(volume) {
3387
+ function getIcon(volume, isBlueprintEnabled = false) {
3388
+ if (isBlueprintEnabled) {
3389
+ if (volume >= 0.66) {
3390
+ return Medium_.Volume2;
3391
+ }
3392
+ if (volume >= 0.33) {
3393
+ return Medium_.Volume1;
3394
+ }
3395
+ if (volume >= 0.01) {
3396
+ return Medium_.Volume0;
3397
+ }
3398
+ return Medium_.VolumeX;
3399
+ }
3312
3400
  let Icon = icons_IconVolumeMuted24;
3313
3401
  if (volume >= 0.66) {
3314
3402
  Icon = icons_IconVolumeMax24;
@@ -3323,6 +3411,7 @@ function VolumeControls({
3323
3411
  keyboardVolumeStep = 0,
3324
3412
  onMuteChange,
3325
3413
  onVolumeChange,
3414
+ isBlueprintEnabled = false,
3326
3415
  volume = 1
3327
3416
  }) {
3328
3417
  const [isActive, handlers, resetAttention] = useAttention();
@@ -3332,7 +3421,7 @@ function VolumeControls({
3332
3421
  const volumeControlElRef = (0,external_react_.useRef)(null); // root; outside pointerdown unpins the flyout
3333
3422
  const revealTimerRef = (0,external_react_.useRef)(0);
3334
3423
  const isMuted = !volume;
3335
- const Icon = isMuted ? icons_IconVolumeMuted24 : getIcon(volume);
3424
+ const Icon = getIcon(volume, isBlueprintEnabled);
3336
3425
  const title = isMuted ? "Unmute" : "Mute";
3337
3426
  const value = Math.round(volume * 100);
3338
3427
  const isOpen = isActive || isRevealed || isPinned;
@@ -3385,7 +3474,9 @@ function VolumeControls({
3385
3474
  }, [isMuted, onMuteChange]);
3386
3475
  return /*#__PURE__*/external_react_["default"].createElement("div", {
3387
3476
  ref: volumeControlElRef,
3388
- className: "bp-VolumeControls",
3477
+ className: classnames_default()('bp-VolumeControls', {
3478
+ 'bp-VolumeControls--blueprint': isBlueprintEnabled
3479
+ }),
3389
3480
  "data-testid": "bp-volume-controls",
3390
3481
  onBlur: event => {
3391
3482
  handlers.onBlur(event);
@@ -3400,7 +3491,20 @@ function VolumeControls({
3400
3491
  onFocus: handlers.onFocus,
3401
3492
  onMouseOut: handlers.onMouseOut,
3402
3493
  onMouseOver: handlers.onMouseOver
3403
- }, /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
3494
+ }, isBlueprintEnabled ? /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.Tooltip, {
3495
+ content: title,
3496
+ side: "left"
3497
+ }, /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.IconButton, {
3498
+ "aria-label": title,
3499
+ "data-resin-target": "volumeToggle",
3500
+ "data-target-id": "VolumeControls-volumeToggle",
3501
+ icon: Icon,
3502
+ onClick: handleToggleClick,
3503
+ onKeyDown: utils/* stopActivationKeyPropagation */.My,
3504
+ onPointerDown: handleTogglePointerDown,
3505
+ size: "large",
3506
+ variant: "on-dark"
3507
+ })) : /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
3404
3508
  className: "bp-VolumeControls-toggle",
3405
3509
  "data-resin-target": "volumeToggle",
3406
3510
  onClick: handleToggleClick,
@@ -3642,8 +3746,8 @@ const CLUSTER_THRESHOLD_PX = 2;
3642
3746
 
3643
3747
  /** Converts a group of markers into a ClusterData object with computed positions and metadata. */
3644
3748
  function finalizeCluster(group, durationValue) {
3645
- const leftPercent = (0,_utils__WEBPACK_IMPORTED_MODULE_0__/* .percent */ .K)(group[0].time, durationValue);
3646
- const rightPercent = (0,_utils__WEBPACK_IMPORTED_MODULE_0__/* .percent */ .K)(group[group.length - 1].time, durationValue);
3749
+ const leftPercent = (0,_utils__WEBPACK_IMPORTED_MODULE_0__/* .percent */ .KN)(group[0].time, durationValue);
3750
+ const rightPercent = (0,_utils__WEBPACK_IMPORTED_MODULE_0__/* .percent */ .KN)(group[group.length - 1].time, durationValue);
3647
3751
  const isSinglePoint = leftPercent === rightPercent;
3648
3752
  return {
3649
3753
  id: group.map(m => m.id).join('|'),
@@ -3784,9 +3888,12 @@ function useDismissableMarkerSelection(hostSelectedId = null, selectionSeq = nul
3784
3888
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3785
3889
 
3786
3890
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3787
- /* harmony export */ K: () => (/* binding */ percent)
3891
+ /* harmony export */ KN: () => (/* binding */ percent),
3892
+ /* harmony export */ My: () => (/* binding */ stopActivationKeyPropagation)
3788
3893
  /* harmony export */ });
3789
3894
  /* unused harmony export round */
3895
+ /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4410);
3896
+
3790
3897
  const round = value => {
3791
3898
  return +value.toFixed(4);
3792
3899
  };
@@ -3794,6 +3901,14 @@ const percent = (value1, value2) => {
3794
3901
  return round(value1 / value2 * 100);
3795
3902
  };
3796
3903
 
3904
+ // Activation keys must not reach the viewer's keydown handler, which toggles playback on Space.
3905
+ const stopActivationKeyPropagation = event => {
3906
+ const key = (0,_util__WEBPACK_IMPORTED_MODULE_0__/* .decodeKeydown */ .wU)(event);
3907
+ if (key === 'Enter' || key === 'Space') {
3908
+ event.stopPropagation();
3909
+ }
3910
+ };
3911
+
3797
3912
  /***/ },
3798
3913
 
3799
3914
  /***/ 709
@@ -4855,7 +4970,7 @@ function markerLeftPercent(time, durationSec, viewport) {
4855
4970
  const mapped = hasMappedWindow(viewport);
4856
4971
  const origin = mapped ? viewport.startSec : 0;
4857
4972
  const span = mapped ? viewport.endSec - viewport.startSec : durationSec;
4858
- return (0,utils/* percent */.K)(time - origin, span);
4973
+ return (0,utils/* percent */.KN)(time - origin, span);
4859
4974
  }
4860
4975
 
4861
4976
  /** Width is unknown until layout. Still place badges, and stack exact same timestamps. */
@@ -4871,8 +4986,8 @@ function clustersByExactTime(markers, durationSec) {
4871
4986
  }
4872
4987
  });
4873
4988
  return groups.map(group => {
4874
- const leftPercent = (0,utils/* percent */.K)(group[0].time, durationSec);
4875
- const rightPercent = (0,utils/* percent */.K)(group[group.length - 1].time, durationSec);
4989
+ const leftPercent = (0,utils/* percent */.KN)(group[0].time, durationSec);
4990
+ const rightPercent = (0,utils/* percent */.KN)(group[group.length - 1].time, durationSec);
4876
4991
  return {
4877
4992
  id: group.map(m => m.id).join('|'),
4878
4993
  isSinglePoint: leftPercent === rightPercent,
@@ -7908,6 +8023,7 @@ function MP3ControlsV2({
7908
8023
  rate,
7909
8024
  shuttleDirection = null,
7910
8025
  shuttleRate = 0,
8026
+ isBlueprintEnabled = false,
7911
8027
  volume
7912
8028
  }) {
7913
8029
  const durationValue = typeof durationTime === 'number' && isFinite_default()(durationTime) ? durationTime : 0;
@@ -8110,7 +8226,8 @@ function MP3ControlsV2({
8110
8226
  }, /*#__PURE__*/external_react_["default"].createElement(PlayPauseToggle/* default */.A, {
8111
8227
  hasSkipButtons: false,
8112
8228
  isPlaying: isPlaying,
8113
- onPlayPause: onPlayPause
8229
+ onPlayPause: onPlayPause,
8230
+ isBlueprintEnabled: isBlueprintEnabled
8114
8231
  }), /*#__PURE__*/external_react_["default"].createElement("div", {
8115
8232
  className: "bp-MP3ControlsV2-divider"
8116
8233
  }), /*#__PURE__*/external_react_["default"].createElement(TimestampControl/* default */.Ay, {
@@ -8122,6 +8239,7 @@ function MP3ControlsV2({
8122
8239
  keyboardVolumeStep: keyboardVolumeStep,
8123
8240
  onMuteChange: onMuteChange,
8124
8241
  onVolumeChange: onVolumeChange,
8242
+ isBlueprintEnabled: isBlueprintEnabled,
8125
8243
  volume: volume
8126
8244
  }), /*#__PURE__*/external_react_["default"].createElement(MediaSettings/* default */.A, {
8127
8245
  autoplay: autoplay,
@@ -16508,6 +16626,28 @@ module.exports = "<svg fill=\"#fff\" height=\"48\" viewBox=\"0 0 24 24\" width=\
16508
16626
 
16509
16627
  /***/ },
16510
16628
 
16629
+ /***/ 8912
16630
+ (module, __unused_webpack_exports, __webpack_require__) {
16631
+
16632
+ var x = (y) => {
16633
+ var x = {}; __webpack_require__.d(x, y); return x
16634
+ }
16635
+ var y = (x) => (() => (x))
16636
+ module.exports = x({ ["BlueprintProvider"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_e1e285a9__.BlueprintProvider), ["IconButton"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_e1e285a9__.IconButton), ["Toolbar"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_e1e285a9__.Toolbar), ["Tooltip"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_e1e285a9__.Tooltip), ["TooltipProvider"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_e1e285a9__.TooltipProvider), ["useNoopTreatment"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_e1e285a9__.useNoopTreatment) });
16637
+
16638
+ /***/ },
16639
+
16640
+ /***/ 9747
16641
+ (module, __unused_webpack_exports, __webpack_require__) {
16642
+
16643
+ var x = (y) => {
16644
+ var x = {}; __webpack_require__.d(x, y); return x
16645
+ }
16646
+ var y = (x) => (() => (x))
16647
+ module.exports = x({ ["ArrowCurveBack5"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__.ArrowCurveBack5), ["ArrowCurveForward5"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__.ArrowCurveForward5), ["ArrowsMaximize"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__.ArrowsMaximize), ["ArrowsMinimize"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__.ArrowsMinimize), ["Volume0"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__.Volume0), ["Volume1"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__.Volume1), ["Volume2"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__.Volume2), ["VolumeX"]: () => (__WEBPACK_EXTERNAL_MODULE__box_blueprint_web_assets_icons_Medium_3b21b01f__.VolumeX) });
16648
+
16649
+ /***/ },
16650
+
16511
16651
  /***/ 1649
16512
16652
  (module, __unused_webpack_exports, __webpack_require__) {
16513
16653
 
@@ -25409,7 +25549,7 @@ class Browser {
25409
25549
  ;// ./src/lib/Logger.js
25410
25550
  /* eslint-disable no-undef */
25411
25551
  const CLIENT_NAME = "box-content-preview";
25412
- const CLIENT_VERSION = "3.109.0";
25552
+ const CLIENT_VERSION = "3.113.0";
25413
25553
  /* eslint-enable no-undef */
25414
25554
 
25415
25555
  class Logger {
@@ -26425,12 +26565,17 @@ class AnnotationModule {
26425
26565
  }
26426
26566
  ;// ./src/lib/featureChecking.ts
26427
26567
 
26568
+
26428
26569
  const isFeatureEnabled = (features, featureName) => {
26429
26570
  return !!get_default()(features, featureName, false);
26430
26571
  };
26431
26572
  const getFeatureConfig = (features, featureName) => {
26432
26573
  return get_default()(features, featureName, {});
26433
26574
  };
26575
+
26576
+ // Every React root gates Blueprint providers on this rather than on its own wave's flag, so a
26577
+ // Blueprint surface from any wave always has its providers, whichever root it renders in.
26578
+ const isBlueprintEnabled = features => [constants/* BLUEPRINT_MIGRATION_ARCHIVE */.cA, constants/* BLUEPRINT_MIGRATION_CONTROLS_BAR */.OQ, constants/* BLUEPRINT_MIGRATION_MEDIA_CONTROLS */.dR, constants/* BLUEPRINT_MIGRATION_SUPPORTING_UI */.Ed].some(feature => isFeatureEnabled(features, feature));
26434
26579
  ;// ./src/lib/viewers/BaseViewer.js
26435
26580
  function BaseViewer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26436
26581
  function BaseViewer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? BaseViewer_ownKeys(Object(t), !0).forEach(function (r) { BaseViewer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : BaseViewer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -27823,6 +27968,15 @@ class BaseViewer extends (events_default()) {
27823
27968
  return isFeatureEnabled(this.options.features, feature);
27824
27969
  }
27825
27970
 
27971
+ /**
27972
+ * Whether any Blueprint migration wave is on, which is when React roots mount Blueprint providers
27973
+ *
27974
+ * @return {boolean}
27975
+ */
27976
+ isBlueprintEnabled() {
27977
+ return isBlueprintEnabled(this.options.features);
27978
+ }
27979
+
27826
27980
  /**
27827
27981
  * Hides the preview mask element if it exists
27828
27982
  *
@@ -27861,6 +28015,7 @@ function ArchiveViewer_toPrimitive(t, r) { if ("object" != typeof t || !t) retur
27861
28015
 
27862
28016
 
27863
28017
 
28018
+
27864
28019
  const JS = ['archive.js'];
27865
28020
  const src_CSS = ['archive.css'];
27866
28021
  class ArchiveViewer extends viewers_BaseViewer {
@@ -27871,20 +28026,37 @@ class ArchiveViewer extends viewers_BaseViewer {
27871
28026
  *
27872
28027
  * @private
27873
28028
  * @param {Array<Object>} data - archive data collection
27874
- * @return {void}
28029
+ * @return {Promise<void>|undefined} pending only when the v2 chunk is loading
27875
28030
  */
27876
28031
  ArchiveViewer_defineProperty(this, "finishLoading", data => {
27877
28032
  if (this.isDestroyed()) {
27878
- return;
28033
+ return undefined;
27879
28034
  }
27880
28035
  try {
27881
28036
  /* global BoxArchive loaded from archive.js */
27882
- this.archiveComponent = new BoxArchive(this.archiveEl, this.options.file.name, data);
28037
+ this.archiveComponent = new BoxArchive(this.archiveEl, this.options.file.name, data, {
28038
+ isArchiveV2Enabled: this.isBlueprintEnabled() && this.featureEnabled(constants/* BLUEPRINT_MIGRATION_ARCHIVE */.cA),
28039
+ resin: this.options.resin
28040
+ });
27883
28041
  } catch (error) {
27884
28042
  throw new PreviewError/* default */.A(lib_events/* ERROR_CODE */.bo.LOAD_VIEWER, "This preview didn’t load. Please try to open or download the file to view.", error);
27885
28043
  }
27886
- this.loaded = true;
27887
- this.emit(lib_events/* VIEWER_EVENT */.Oi.load);
28044
+ const {
28045
+ ready
28046
+ } = this.archiveComponent;
28047
+ if (!ready) {
28048
+ this.finishRender();
28049
+ return undefined;
28050
+ }
28051
+
28052
+ // Flag on: hold `load` until the v2 chunk has loaded and rendered
28053
+ return ready.then(() => {
28054
+ if (!this.isDestroyed()) {
28055
+ this.finishRender();
28056
+ }
28057
+ }, error => {
28058
+ throw new PreviewError/* default */.A(lib_events/* ERROR_CODE */.bo.LOAD_VIEWER, "This preview didn’t load. Please try to open or download the file to view.", error);
28059
+ });
27888
28060
  });
27889
28061
  }
27890
28062
  /**
@@ -27932,6 +28104,16 @@ class ArchiveViewer extends viewers_BaseViewer {
27932
28104
  });
27933
28105
  }).then(this.finishLoading).catch(this.handleAssetError);
27934
28106
  }
28107
+ /**
28108
+ * Marks the viewer loaded once the archive has rendered
28109
+ *
28110
+ * @private
28111
+ * @return {void}
28112
+ */
28113
+ finishRender() {
28114
+ this.loaded = true;
28115
+ this.emit(lib_events/* VIEWER_EVENT */.Oi.load);
28116
+ }
27935
28117
  }
27936
28118
  /* harmony default export */ const archive_ArchiveViewer = (ArchiveViewer);
27937
28119
  ;// ./src/lib/viewers/archive/ArchiveLoader.js
@@ -27960,6 +28142,22 @@ var external_react_ = __webpack_require__(1649);
27960
28142
  // EXTERNAL MODULE: ./node_modules/lodash/noop.js
27961
28143
  var noop = __webpack_require__(3950);
27962
28144
  var noop_default = /*#__PURE__*/__webpack_require__.n(noop);
28145
+ // EXTERNAL MODULE: external "@box/blueprint-web"
28146
+ var blueprint_web_ = __webpack_require__(8912);
28147
+ ;// ./src/lib/BlueprintProviders.tsx
28148
+
28149
+
28150
+ // Preview has no Split client, so Blueprint's treatment-driven configuration resolves to its defaults.
28151
+ function BlueprintProviders({
28152
+ children,
28153
+ container
28154
+ }) {
28155
+ return /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.BlueprintProvider, {
28156
+ useTreatment: blueprint_web_.useNoopTreatment
28157
+ }, /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.TooltipProvider, {
28158
+ container: container
28159
+ }, children));
28160
+ }
27963
28161
  ;// ./src/lib/viewers/controls/controls-layer/ControlsLayerContext.ts
27964
28162
 
27965
28163
 
@@ -28079,12 +28277,14 @@ function ControlsRoot_toPrimitive(t, r) { if ("object" != typeof t || !t) return
28079
28277
 
28080
28278
 
28081
28279
 
28280
+
28082
28281
  class ControlsRoot {
28083
28282
  constructor({
28084
28283
  className = 'bp-ControlsRoot',
28085
28284
  containerEl,
28086
28285
  fileExtension,
28087
28286
  fileId,
28287
+ isBlueprintEnabled = false,
28088
28288
  onHide = (noop_default()),
28089
28289
  onShow = (noop_default())
28090
28290
  }) {
@@ -28097,6 +28297,7 @@ class ControlsRoot {
28097
28297
  });
28098
28298
  ControlsRoot_defineProperty(this, "handleHide", void 0);
28099
28299
  ControlsRoot_defineProperty(this, "handleShow", void 0);
28300
+ ControlsRoot_defineProperty(this, "isBlueprintEnabled", void 0);
28100
28301
  ControlsRoot_defineProperty(this, "root", void 0);
28101
28302
  ControlsRoot_defineProperty(this, "handleMount", helpers => {
28102
28303
  this.controlsLayer = helpers;
@@ -28123,6 +28324,7 @@ class ControlsRoot {
28123
28324
  this.root = __WEBPACK_EXTERNAL_MODULE_react_dom_client_4cb20cd7_createRoot__(this.controlsEl);
28124
28325
  this.handleHide = onHide;
28125
28326
  this.handleShow = onShow;
28327
+ this.isBlueprintEnabled = isBlueprintEnabled;
28126
28328
  }
28127
28329
  destroy() {
28128
28330
  this.root.unmount();
@@ -28139,11 +28341,14 @@ class ControlsRoot {
28139
28341
  this.controlsEl.classList.remove('bp-is-hidden');
28140
28342
  }
28141
28343
  render(controls) {
28142
- this.root.render(/*#__PURE__*/external_react_["default"].createElement(ControlsLayer, {
28344
+ const layer = /*#__PURE__*/external_react_["default"].createElement(ControlsLayer, {
28143
28345
  onHide: this.handleHide,
28144
28346
  onMount: this.handleMount,
28145
28347
  onShow: this.handleShow
28146
- }, controls));
28348
+ }, controls);
28349
+ this.root.render(this.isBlueprintEnabled ? /*#__PURE__*/external_react_["default"].createElement(BlueprintProviders, {
28350
+ container: this.containerEl
28351
+ }, layer) : layer);
28147
28352
  }
28148
28353
  }
28149
28354
  ;// ./src/lib/viewers/image/ImageBaseViewer.js
@@ -28362,7 +28567,8 @@ class ImageBaseViewer extends viewers_BaseViewer {
28362
28567
  this.controls = new ControlsRoot({
28363
28568
  containerEl: this.containerEl,
28364
28569
  fileExtension: this.options.file.extension,
28365
- fileId: this.options.file.id
28570
+ fileId: this.options.file.id,
28571
+ isBlueprintEnabled: this.isBlueprintEnabled()
28366
28572
  });
28367
28573
  }
28368
28574
 
@@ -32837,7 +33043,8 @@ class Image360Viewer extends box3d_Box3DViewer {
32837
33043
  createSubModules() {
32838
33044
  this.controls = this.getViewerOption('useReactControls') ? new ControlsRoot({
32839
33045
  containerEl: this.wrapperEl,
32840
- fileId: this.options.file.id
33046
+ fileId: this.options.file.id,
33047
+ isBlueprintEnabled: this.isBlueprintEnabled()
32841
33048
  }) : new box3d_Box3DControls(this.wrapperEl);
32842
33049
  this.renderer = new image360_Image360Renderer(this.wrapperEl, this.boxSdk, {
32843
33050
  api: this.api
@@ -33813,7 +34020,8 @@ class TextBaseViewer extends viewers_BaseViewer {
33813
34020
  this.controls = new ControlsRoot({
33814
34021
  containerEl: this.containerEl,
33815
34022
  fileExtension: this.options.file.extension,
33816
- fileId: this.options.file.id
34023
+ fileId: this.options.file.id,
34024
+ isBlueprintEnabled: this.isBlueprintEnabled()
33817
34025
  });
33818
34026
  this.bindDOMListeners();
33819
34027
  this.renderUI();
@@ -37135,6 +37343,16 @@ class MediaBaseViewer extends viewers_BaseViewer {
37135
37343
  isPlayNextEnabled() {
37136
37344
  return this.cache.get(MEDIA_PLAY_NEXT_CACHE_KEY) === 'Enabled';
37137
37345
  }
37346
+
37347
+ /**
37348
+ * Determines if the media controls render their Blueprint versions
37349
+ *
37350
+ * @protected
37351
+ * @return {boolean} Indicates if the Blueprint media controls flag is on
37352
+ */
37353
+ isBlueprintMediaControlsEnabled() {
37354
+ return this.featureEnabled(constants/* BLUEPRINT_MIGRATION_MEDIA_CONTROLS */.dR);
37355
+ }
37138
37356
  /**
37139
37357
  * Loads the controls
37140
37358
  *
@@ -38170,15 +38388,19 @@ function MP3ControlsRoot_toPropertyKey(t) { var i = MP3ControlsRoot_toPrimitive(
38170
38388
  function MP3ControlsRoot_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
38171
38389
 
38172
38390
 
38391
+
38392
+
38173
38393
  class MP3ControlsRoot {
38174
38394
  constructor({
38175
38395
  containerEl,
38176
38396
  fileExtension,
38177
38397
  fileId,
38398
+ isBlueprintEnabled = false,
38178
38399
  resinFeature
38179
38400
  }) {
38180
38401
  MP3ControlsRoot_defineProperty(this, "containerEl", void 0);
38181
38402
  MP3ControlsRoot_defineProperty(this, "controlsEl", void 0);
38403
+ MP3ControlsRoot_defineProperty(this, "isBlueprintEnabled", void 0);
38182
38404
  MP3ControlsRoot_defineProperty(this, "root", void 0);
38183
38405
  this.controlsEl = document.createElement('div');
38184
38406
  this.controlsEl.setAttribute('class', 'bp-MP3ControlsRoot');
@@ -38191,6 +38413,7 @@ class MP3ControlsRoot {
38191
38413
  this.controlsEl.setAttribute('data-resin-fileextension', fileExtension || '');
38192
38414
  this.containerEl = containerEl;
38193
38415
  this.containerEl.appendChild(this.controlsEl);
38416
+ this.isBlueprintEnabled = isBlueprintEnabled;
38194
38417
  this.root = __WEBPACK_EXTERNAL_MODULE_react_dom_client_4cb20cd7_createRoot__(this.controlsEl);
38195
38418
  }
38196
38419
  destroy() {
@@ -38200,7 +38423,9 @@ class MP3ControlsRoot {
38200
38423
  }
38201
38424
  }
38202
38425
  render(controls) {
38203
- this.root.render(controls);
38426
+ this.root.render(this.isBlueprintEnabled ? /*#__PURE__*/external_react_["default"].createElement(BlueprintProviders, {
38427
+ container: this.containerEl
38428
+ }, controls) : controls);
38204
38429
  }
38205
38430
  }
38206
38431
  // EXTERNAL MODULE: ./src/lib/viewers/media/waveform/constants.ts
@@ -38631,6 +38856,7 @@ class MP3Viewer extends media_MediaBaseViewer {
38631
38856
  containerEl: this.mediaContainerEl,
38632
38857
  fileExtension: file.extension || '',
38633
38858
  fileId: file.id,
38859
+ isBlueprintEnabled: this.isBlueprintEnabled(),
38634
38860
  resinFeature: this.isAudioPlayerV2 ? constants/* AUDIO_PLAYER_V2_RESIN_FEATURE */.dl : undefined
38635
38861
  });
38636
38862
  }
@@ -39610,7 +39836,8 @@ class MP3Viewer extends media_MediaBaseViewer {
39610
39836
  peaks: this.waveformPeaks,
39611
39837
  playNext: this.isPlayNextEnabled(),
39612
39838
  shuttleDirection: this.shuttleDirection,
39613
- shuttleRate: this.shuttleRate
39839
+ shuttleRate: this.shuttleRate,
39840
+ isBlueprintEnabled: this.isBlueprintMediaControlsEnabled()
39614
39841
  })));
39615
39842
  return;
39616
39843
  }
@@ -40602,6 +40829,7 @@ class VideoBaseViewer extends media_MediaBaseViewer {
40602
40829
  className: 'bp-VideoControlsRoot',
40603
40830
  containerEl: controlsContainerEl,
40604
40831
  fileId: this.options.file.id,
40832
+ isBlueprintEnabled: this.isBlueprintEnabled(),
40605
40833
  onHide: this.handleControlsHide,
40606
40834
  onShow: this.handleControlsShow
40607
40835
  });
@@ -41235,6 +41463,10 @@ function VideoControls({
41235
41463
  onFullscreenToggle: onFullscreenToggle
41236
41464
  })))));
41237
41465
  }
41466
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/PlayPauseButton.tsx + 3 modules
41467
+ var PlayPauseButton = __webpack_require__(2677);
41468
+ // EXTERNAL MODULE: ./src/lib/viewers/controls/media/SkipButton.tsx + 2 modules
41469
+ var SkipButton = __webpack_require__(2659);
41238
41470
  // EXTERNAL MODULE: ./src/lib/viewers/controls/media/TimestampControl.tsx + 1 modules
41239
41471
  var TimestampControl = __webpack_require__(3904);
41240
41472
  // EXTERNAL MODULE: ./src/lib/viewers/media/formatTimecode.ts
@@ -41471,9 +41703,9 @@ function TimeControlsV2({
41471
41703
  } = (0,useDismissableMarkerSelection/* default */.A)(hostSelectedId, selectedMarker?.selectionSeq ?? null);
41472
41704
  const currentValue = isFinite_default()(currentTime) ? currentTime : 0;
41473
41705
  const durationValue = isFinite_default()(durationTime) ? durationTime : 0;
41474
- const currentPercentage = (0,utils/* percent */.K)(currentValue, durationValue);
41706
+ const currentPercentage = (0,utils/* percent */.KN)(currentValue, durationValue);
41475
41707
  const bufferedAmount = bufferedRange && bufferedRange.length ? bufferedRange.end(bufferedRange.length - 1) : 0;
41476
- const bufferedPercentage = (0,utils/* percent */.K)(bufferedAmount, durationValue);
41708
+ const bufferedPercentage = (0,utils/* percent */.KN)(bufferedAmount, durationValue);
41477
41709
  external_react_["default"].useLayoutEffect(() => {
41478
41710
  const el = scrubberRef.current;
41479
41711
  if (!el) return undefined;
@@ -41563,6 +41795,8 @@ function TimeControlsV2({
41563
41795
  selectedId: selectedId
41564
41796
  }))));
41565
41797
  }
41798
+ // EXTERNAL MODULE: external "@box/blueprint-web-assets/icons/Medium"
41799
+ var Medium_ = __webpack_require__(9747);
41566
41800
  ;// ./src/lib/viewers/controls/media/VideoFullscreenButton.scss
41567
41801
  // extracted by mini-css-extract-plugin
41568
41802
 
@@ -41572,9 +41806,13 @@ function TimeControlsV2({
41572
41806
 
41573
41807
 
41574
41808
 
41809
+
41810
+
41811
+
41575
41812
  function VideoFullscreenButton({
41576
41813
  mediaEl,
41577
- onFullscreenToggle
41814
+ onFullscreenToggle,
41815
+ isBlueprintEnabled = false
41578
41816
  }) {
41579
41817
  const isFullscreen = useFullscreen();
41580
41818
  const title = isFullscreen ? "Exit fullscreen" : "Enter fullscreen";
@@ -41614,27 +41852,38 @@ function VideoFullscreenButton({
41614
41852
  }) => {
41615
41853
  onFullscreenToggle(!isFullscreen, target);
41616
41854
  };
41855
+ const positionStyle = position ? {
41856
+ top: position.top,
41857
+ right: position.right
41858
+ } : undefined;
41859
+ if (isBlueprintEnabled) {
41860
+ return /*#__PURE__*/external_react_["default"].createElement("div", {
41861
+ ref: ref,
41862
+ className: "bp-VideoFullscreenButton-position",
41863
+ style: positionStyle
41864
+ }, /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.Tooltip, {
41865
+ content: title
41866
+ }, /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.IconButton, {
41867
+ "aria-label": title,
41868
+ "data-resin-target": "videoFullscreen",
41869
+ "data-target-id": "VideoFullscreenButton-toggle",
41870
+ icon: isFullscreen ? Medium_.ArrowsMinimize : Medium_.ArrowsMaximize,
41871
+ onClick: handleClick,
41872
+ onKeyDown: utils/* stopActivationKeyPropagation */.My,
41873
+ size: "large",
41874
+ variant: "on-dark"
41875
+ })));
41876
+ }
41617
41877
  return /*#__PURE__*/external_react_["default"].createElement("button", {
41618
41878
  ref: ref,
41619
41879
  className: "bp-VideoFullscreenButton",
41620
41880
  "data-resin-target": "videoFullscreen",
41621
41881
  onClick: handleClick,
41622
- style: position ? {
41623
- top: position.top,
41624
- right: position.right
41625
- } : undefined,
41882
+ style: positionStyle,
41626
41883
  title: title,
41627
41884
  type: "button"
41628
41885
  }, isFullscreen ? /*#__PURE__*/external_react_["default"].createElement(icons_IconArrowsMinimizeMedium24, null) : /*#__PURE__*/external_react_["default"].createElement(icons_IconArrowsMaximizeMedium24, null));
41629
41886
  }
41630
- // EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconPlay24.tsx
41631
- var IconPlay24 = __webpack_require__(4684);
41632
- // EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconPause24.tsx
41633
- var IconPause24 = __webpack_require__(7502);
41634
- // EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconArrowCurveForward24.tsx
41635
- var IconArrowCurveForward24 = __webpack_require__(4419);
41636
- // EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconArrowCurveBack24.tsx
41637
- var IconArrowCurveBack24 = __webpack_require__(5827);
41638
41887
  ;// ./src/lib/viewers/media/VideoControlsV2.scss
41639
41888
  // extracted by mini-css-extract-plugin
41640
41889
 
@@ -41653,9 +41902,6 @@ var IconArrowCurveBack24 = __webpack_require__(5827);
41653
41902
 
41654
41903
 
41655
41904
 
41656
-
41657
-
41658
-
41659
41905
  function VideoControlsV2({
41660
41906
  annotationColor,
41661
41907
  annotationMode,
@@ -41704,19 +41950,10 @@ function VideoControlsV2({
41704
41950
  rate,
41705
41951
  subtitle,
41706
41952
  subtitles = [],
41953
+ isBlueprintEnabled = false,
41707
41954
  videoAnnotationsEnabled = false,
41708
41955
  volume
41709
41956
  }) {
41710
- const PlayPauseIcon = isPlaying ? IconPause24/* default */.A : IconPlay24/* default */.A;
41711
- const playPauseTitle = isPlaying ? "Pause" : "Play";
41712
- const skipForwardTitle = "Skip forward";
41713
- const skipBackwardTitle = "Skip backward";
41714
- const moveForward = () => {
41715
- movePlayback(true, constants/* MEDIA_PLAYBACK_SKIP_DURATION */.uN);
41716
- };
41717
- const moveBackward = () => {
41718
- movePlayback(false, constants/* MEDIA_PLAYBACK_SKIP_DURATION */.uN);
41719
- };
41720
41957
  return /*#__PURE__*/external_react_["default"].createElement(ExperiencesProvider, {
41721
41958
  experiences: experiences
41722
41959
  }, /*#__PURE__*/external_react_["default"].createElement("div", {
@@ -41724,7 +41961,8 @@ function VideoControlsV2({
41724
41961
  "data-testid": "media-controls-wrapper-v2"
41725
41962
  }, /*#__PURE__*/external_react_["default"].createElement(VideoFullscreenButton, {
41726
41963
  mediaEl: mediaEl,
41727
- onFullscreenToggle: onFullscreenToggle
41964
+ onFullscreenToggle: onFullscreenToggle,
41965
+ isBlueprintEnabled: isBlueprintEnabled
41728
41966
  }), /*#__PURE__*/external_react_["default"].createElement(TimeControlsV2, {
41729
41967
  aspectRatio: aspectRatio,
41730
41968
  bufferedRange: bufferedRange,
@@ -41740,24 +41978,24 @@ function VideoControlsV2({
41740
41978
  className: "bp-VideoControlsV2-bar"
41741
41979
  }, /*#__PURE__*/external_react_["default"].createElement("div", {
41742
41980
  className: "bp-VideoControlsV2-group bp-VideoControlsV2-group--left"
41743
- }, /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
41981
+ }, /*#__PURE__*/external_react_["default"].createElement(PlayPauseButton/* default */.A, {
41744
41982
  className: "bp-VideoControlsV2-playPause",
41745
- "data-resin-target": "playPause",
41746
- onClick: () => onPlayPause(!isPlaying),
41747
- title: playPauseTitle
41748
- }, /*#__PURE__*/external_react_["default"].createElement(PlayPauseIcon, null)), !isNarrowVideo && /*#__PURE__*/external_react_["default"].createElement(external_react_["default"].Fragment, null, /*#__PURE__*/external_react_["default"].createElement("div", {
41983
+ isPlaying: isPlaying,
41984
+ onPlayPause: onPlayPause,
41985
+ isBlueprintEnabled: isBlueprintEnabled
41986
+ }), !isNarrowVideo && /*#__PURE__*/external_react_["default"].createElement(external_react_["default"].Fragment, null, /*#__PURE__*/external_react_["default"].createElement("div", {
41749
41987
  className: "bp-VideoControlsV2-divider"
41750
- }), /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
41988
+ }), /*#__PURE__*/external_react_["default"].createElement(SkipButton/* default */.A, {
41751
41989
  className: "bp-VideoControlsV2-skipBtn",
41752
- "data-resin-target": "skipBackward",
41753
- onClick: moveBackward,
41754
- title: skipBackwardTitle
41755
- }, /*#__PURE__*/external_react_["default"].createElement(IconArrowCurveBack24/* default */.A, null)), /*#__PURE__*/external_react_["default"].createElement(MediaToggle/* default */.A, {
41990
+ direction: "backward",
41991
+ movePlayback: movePlayback,
41992
+ isBlueprintEnabled: isBlueprintEnabled
41993
+ }), /*#__PURE__*/external_react_["default"].createElement(SkipButton/* default */.A, {
41756
41994
  className: "bp-VideoControlsV2-skipBtn",
41757
- "data-resin-target": "skipForward",
41758
- onClick: moveForward,
41759
- title: skipForwardTitle
41760
- }, /*#__PURE__*/external_react_["default"].createElement(IconArrowCurveForward24/* default */.A, null)), /*#__PURE__*/external_react_["default"].createElement("div", {
41995
+ direction: "forward",
41996
+ movePlayback: movePlayback,
41997
+ isBlueprintEnabled: isBlueprintEnabled
41998
+ }), /*#__PURE__*/external_react_["default"].createElement("div", {
41761
41999
  className: "bp-VideoControlsV2-divider"
41762
42000
  })), /*#__PURE__*/external_react_["default"].createElement(TimestampControl/* default */.Ay, {
41763
42001
  canChangeTimeFormat: canChangeTimeFormat,
@@ -41771,6 +42009,7 @@ function VideoControlsV2({
41771
42009
  }, /*#__PURE__*/external_react_["default"].createElement(VolumeControls/* default */.Ay, {
41772
42010
  onMuteChange: onMuteChange,
41773
42011
  onVolumeChange: onVolumeChange,
42012
+ isBlueprintEnabled: isBlueprintEnabled,
41774
42013
  volume: volume
41775
42014
  }), /*#__PURE__*/external_react_["default"].createElement(SubtitlesToggle, {
41776
42015
  isAutoGeneratedSubtitles: isAutoGeneratedSubtitles,
@@ -41952,7 +42191,8 @@ class MP4Viewer extends media_VideoBaseViewer {
41952
42191
  if (this.isVideoPlayerV2) {
41953
42192
  this.controls.render(/*#__PURE__*/external_react_["default"].createElement(VideoControlsV2, MP4Viewer_extends({}, sharedProps, {
41954
42193
  onPlayNextChange: this.setPlayNext,
41955
- playNext: this.isPlayNextEnabled()
42194
+ playNext: this.isPlayNextEnabled(),
42195
+ isBlueprintEnabled: this.isBlueprintMediaControlsEnabled()
41956
42196
  })));
41957
42197
  return;
41958
42198
  }
@@ -43451,7 +43691,8 @@ class DashViewer extends media_VideoBaseViewer {
43451
43691
  onCommentMarkerClick: this.handleCommentMarkerClick
43452
43692
  }, sharedProps, {
43453
43693
  onPlayNextChange: this.setPlayNext,
43454
- playNext: this.isPlayNextEnabled()
43694
+ playNext: this.isPlayNextEnabled(),
43695
+ isBlueprintEnabled: this.isBlueprintMediaControlsEnabled()
43455
43696
  })));
43456
43697
  return;
43457
43698
  }
@@ -44375,6 +44616,107 @@ function DocControls({
44375
44616
  onAnnotationColorChange: onAnnotationColorChange
44376
44617
  })));
44377
44618
  }
44619
+ ;// ./src/lib/viewers/controls/controls-bar/ControlsBarV2.tsx
44620
+ const ControlsBarV2_excluded = ["children"];
44621
+ function ControlsBarV2_extends() { return ControlsBarV2_extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, ControlsBarV2_extends.apply(null, arguments); }
44622
+ function ControlsBarV2_objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = ControlsBarV2_objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
44623
+ function ControlsBarV2_objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
44624
+
44625
+
44626
+ function ControlsBarV2(_ref) {
44627
+ let {
44628
+ children
44629
+ } = _ref,
44630
+ rest = ControlsBarV2_objectWithoutProperties(_ref, ControlsBarV2_excluded);
44631
+ if (!children) {
44632
+ return null;
44633
+ }
44634
+ return /*#__PURE__*/external_react_["default"].createElement(blueprint_web_.Toolbar.Root, ControlsBarV2_extends({
44635
+ "data-testid": "bp-ControlsBar"
44636
+ }, rest), children);
44637
+ }
44638
+ ;// ./src/lib/viewers/doc/DocControlsV2.tsx
44639
+
44640
+
44641
+
44642
+
44643
+
44644
+
44645
+
44646
+
44647
+
44648
+
44649
+
44650
+
44651
+ function DocControlsV2({
44652
+ annotationColor,
44653
+ annotationMode,
44654
+ experiences,
44655
+ hasDrawing,
44656
+ hasGalleryZoom = false,
44657
+ hasHighlight,
44658
+ hasRegion,
44659
+ isGalleryOpen,
44660
+ isThumbnailsOpen,
44661
+ maxScale,
44662
+ minScale,
44663
+ onAnnotationColorChange,
44664
+ onAnnotationModeClick,
44665
+ onAnnotationModeEscape,
44666
+ onFindBarToggle,
44667
+ onFullscreenToggle,
44668
+ onGalleryToggle,
44669
+ onPageChange,
44670
+ onPageSubmit,
44671
+ onRotateLeft,
44672
+ onThumbnailsToggle,
44673
+ onZoomIn,
44674
+ onZoomOut,
44675
+ pageCount,
44676
+ pageNumber,
44677
+ scale
44678
+ }) {
44679
+ return /*#__PURE__*/external_react_["default"].createElement(ExperiencesProvider, {
44680
+ experiences: experiences
44681
+ }, /*#__PURE__*/external_react_["default"].createElement(ControlsBarV2, null, !isGalleryOpen && /*#__PURE__*/external_react_["default"].createElement(external_react_["default"].Fragment, null, /*#__PURE__*/external_react_["default"].createElement(ThumbnailsToggle, {
44682
+ isThumbnailsOpen: isThumbnailsOpen,
44683
+ onThumbnailsToggle: onThumbnailsToggle
44684
+ }), /*#__PURE__*/external_react_["default"].createElement(FindBarToggle, {
44685
+ onFindBarToggle: onFindBarToggle
44686
+ }), /*#__PURE__*/external_react_["default"].createElement(PageControls, {
44687
+ onPageChange: onPageChange,
44688
+ onPageSubmit: onPageSubmit,
44689
+ pageCount: pageCount,
44690
+ pageNumber: pageNumber
44691
+ })), (!isGalleryOpen || hasGalleryZoom) && /*#__PURE__*/external_react_["default"].createElement(ZoomControls, {
44692
+ maxScale: maxScale,
44693
+ minScale: minScale,
44694
+ onZoomIn: onZoomIn,
44695
+ onZoomOut: onZoomOut,
44696
+ resinTargetZoomIn: isGalleryOpen ? 'galleryZoomIn' : undefined,
44697
+ resinTargetZoomOut: isGalleryOpen ? 'galleryZoomOut' : undefined,
44698
+ scale: scale
44699
+ }), !isGalleryOpen && onRotateLeft && /*#__PURE__*/external_react_["default"].createElement(RotateControl, {
44700
+ onRotateLeft: onRotateLeft
44701
+ }), /*#__PURE__*/external_react_["default"].createElement(GalleryToggle, {
44702
+ isGalleryOpen: isGalleryOpen,
44703
+ onGalleryToggle: onGalleryToggle
44704
+ }), /*#__PURE__*/external_react_["default"].createElement(FullscreenToggle, {
44705
+ onFullscreenToggle: onFullscreenToggle
44706
+ }), !isGalleryOpen && /*#__PURE__*/external_react_["default"].createElement(AnnotationsControls, {
44707
+ annotationColor: annotationColor,
44708
+ annotationMode: annotationMode,
44709
+ hasDrawing: hasDrawing,
44710
+ hasHighlight: hasHighlight,
44711
+ hasRegion: hasRegion,
44712
+ onAnnotationModeClick: onAnnotationModeClick,
44713
+ onAnnotationModeEscape: onAnnotationModeEscape
44714
+ })), !isGalleryOpen && /*#__PURE__*/external_react_["default"].createElement(ControlsBar, null, /*#__PURE__*/external_react_["default"].createElement(DrawingControls, {
44715
+ annotationColor: annotationColor,
44716
+ annotationMode: annotationMode,
44717
+ onAnnotationColorChange: onAnnotationColorChange
44718
+ })));
44719
+ }
44378
44720
  ;// ./src/lib/icons/search.svg
44379
44721
  const search_namespaceObject = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 15 14\" focusable=\"false\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M-2-3h20v20H-2z\"/>\n <path class=\"icon\" fill=\"#FFF\" d=\"M6.931 0a5.994 5.994 0 0 1 4.907 9.438l2.806 2.807a1 1 0 0 1 0 1.415l-.047.047a1 1 0 0 1-1.414 0L10.375 10.9A5.994 5.994 0 1 1 6.931 0zm0 1.998a3.996 3.996 0 1 0 0 7.992 3.996 3.996 0 0 0 0-7.992z\"/>\n </g>\n</svg>\n";
44380
44722
  ;// ./src/lib/icons/arrow_drop_up.svg
@@ -47955,6 +48297,7 @@ function DocBaseViewer_toPrimitive(t, r) { if ("object" != typeof t || !t) retur
47955
48297
 
47956
48298
 
47957
48299
 
48300
+
47958
48301
 
47959
48302
 
47960
48303
  const DOC_FIRST_PAGES_ENABLED = 'docFirstPages.enabled';
@@ -49314,7 +49657,8 @@ class DocBaseViewer extends viewers_BaseViewer {
49314
49657
  this.controls = new ControlsRoot({
49315
49658
  containerEl: this.containerEl,
49316
49659
  fileExtension: this.options.file.extension,
49317
- fileId: this.options.file.id
49660
+ fileId: this.options.file.id,
49661
+ isBlueprintEnabled: this.isBlueprintEnabled()
49318
49662
  });
49319
49663
  this.annotationControlsFSM.subscribe(() => this.renderUI());
49320
49664
  this.renderUI();
@@ -49352,7 +49696,8 @@ class DocBaseViewer extends viewers_BaseViewer {
49352
49696
  const canRotate = this.featureEnabled('rotate.enabled');
49353
49697
  const canGallery = !this.isMobile && this.galleryController.canRender(this.pdfViewer.pagesCount);
49354
49698
  const isGalleryZoomActive = this.galleryController.isOpen && this.galleryController.isEnhancedGalleryEnabled;
49355
- this.controls.render(/*#__PURE__*/external_react_["default"].createElement(DocControls, {
49699
+ const Controls = this.featureEnabled(constants/* BLUEPRINT_MIGRATION_CONTROLS_BAR */.OQ) ? DocControlsV2 : DocControls;
49700
+ this.controls.render(/*#__PURE__*/external_react_["default"].createElement(Controls, {
49356
49701
  annotationColor: this.annotationModule.getColor(),
49357
49702
  annotationMode: this.annotationControlsFSM.getMode(),
49358
49703
  experiences: this.experiences,
@@ -54258,7 +54603,8 @@ class Model3DViewer extends box3d_Box3DViewer {
54258
54603
  createSubModules() {
54259
54604
  this.controls = this.getViewerOption('useReactControls') ? new ControlsRoot({
54260
54605
  containerEl: this.wrapperEl,
54261
- fileId: this.options.file.id
54606
+ fileId: this.options.file.id,
54607
+ isBlueprintEnabled: this.isBlueprintEnabled()
54262
54608
  }) : new model3d_Model3DControls(this.wrapperEl);
54263
54609
  this.renderer = new model3d_Model3DRenderer(this.wrapperEl, this.boxSdk, {
54264
54610
  api: this.api
@@ -55225,6 +55571,79 @@ office_OfficeLoader,
55225
55571
  doc_DocLoader,
55226
55572
  // should come after text
55227
55573
  swf_SWFLoader, video360_Video360Loader, media_MediaLoader, image360_Image360Loader, image_ImageLoader, model3d_Model3DLoader, iframe_IFrameLoader]);
55574
+ ;// ./src/lib/ComparisonBanner.tsx
55575
+ function ComparisonBanner_defineProperty(e, r, t) { return (r = ComparisonBanner_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
55576
+ function ComparisonBanner_toPropertyKey(t) { var i = ComparisonBanner_toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
55577
+ function ComparisonBanner_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
55578
+
55579
+
55580
+
55581
+ function formatComparisonTimestamp(iso, locale) {
55582
+ if (!iso) {
55583
+ return '';
55584
+ }
55585
+ const date = new Date(iso);
55586
+ if (Number.isNaN(date.getTime())) {
55587
+ return '';
55588
+ }
55589
+ return new Intl.DateTimeFormat(locale || 'en-US', {
55590
+ month: 'short',
55591
+ day: 'numeric',
55592
+ hour: 'numeric',
55593
+ minute: '2-digit'
55594
+ }).format(date);
55595
+ }
55596
+ function getComparisonBannerAuthor(file = {}) {
55597
+ return file.modified_by?.name || file.created_by?.name || '';
55598
+ }
55599
+ function ComparisonBanner({
55600
+ file = {},
55601
+ isComparedPreview = false,
55602
+ locale
55603
+ }) {
55604
+ const versionNumber = file.version_number != null && file.version_number !== '' ? String(file.version_number) : '';
55605
+ const timestamp = formatComparisonTimestamp(file.modified_at, locale);
55606
+ const author = getComparisonBannerAuthor(file);
55607
+ if (!versionNumber && !timestamp && !author) {
55608
+ return null;
55609
+ }
55610
+ return /*#__PURE__*/external_react_["default"].createElement("div", {
55611
+ "aria-label": isComparedPreview ? "Previous version" : "Current version",
55612
+ className: isComparedPreview ? `${constants/* CLASS_BOX_PREVIEW_VERSION_BANNER */.on} ${constants/* CLASS_BOX_PREVIEW_VERSION_BANNER_COMPARED */.Uj}` : constants/* CLASS_BOX_PREVIEW_VERSION_BANNER */.on,
55613
+ role: "status"
55614
+ }, versionNumber && /*#__PURE__*/external_react_["default"].createElement("span", {
55615
+ className: "bp-version-banner-badge"
55616
+ }, versionNumber), (timestamp || author) && /*#__PURE__*/external_react_["default"].createElement("div", {
55617
+ className: "bp-version-banner-info"
55618
+ }, timestamp && /*#__PURE__*/external_react_["default"].createElement("div", {
55619
+ className: "bp-version-banner-time"
55620
+ }, timestamp), author && /*#__PURE__*/external_react_["default"].createElement("div", {
55621
+ className: "bp-version-banner-author"
55622
+ }, author)));
55623
+ }
55624
+ class ComparisonBannerRoot {
55625
+ constructor(containerEl) {
55626
+ ComparisonBanner_defineProperty(this, "hostEl", void 0);
55627
+ ComparisonBanner_defineProperty(this, "root", void 0);
55628
+ this.hostEl = document.createElement('div');
55629
+ containerEl.insertBefore(this.hostEl, containerEl.firstChild);
55630
+ this.root = __WEBPACK_EXTERNAL_MODULE_react_dom_client_4cb20cd7_createRoot__(this.hostEl);
55631
+ }
55632
+ render(file = {}, {
55633
+ isComparedPreview = false,
55634
+ locale
55635
+ } = {}) {
55636
+ this.root.render(/*#__PURE__*/external_react_["default"].createElement(ComparisonBanner, {
55637
+ file: file,
55638
+ isComparedPreview: isComparedPreview,
55639
+ locale: locale
55640
+ }));
55641
+ }
55642
+ destroy() {
55643
+ this.root.unmount();
55644
+ this.hostEl.remove();
55645
+ }
55646
+ }
55228
55647
  ;// external "box-ui-elements/es/components/preview"
55229
55648
 
55230
55649
  ;// ./src/lib/viewers/error/ErrorIcon.tsx
@@ -55975,6 +56394,7 @@ function Preview_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; v
55975
56394
 
55976
56395
 
55977
56396
 
56397
+
55978
56398
  const DEFAULT_DISABLED_VIEWERS = ['Office']; // viewers disabled by default
55979
56399
  const PREFETCH_COUNT = 4; // number of files to prefetch
55980
56400
  const MOUSEMOVE_THROTTLE_MS = 1500; // for showing or hiding the navigation icons
@@ -56043,6 +56463,8 @@ class Preview extends (events_default()) {
56043
56463
  Preview_defineProperty(this, "retryTimeout", void 0);
56044
56464
  /** @property {HTMLElement} - Preview DOM container */
56045
56465
  Preview_defineProperty(this, "container", void 0);
56466
+ /** @property {ComparisonBannerRoot} - Version comparison banner */
56467
+ Preview_defineProperty(this, "comparisonBannerRoot", void 0);
56046
56468
  /** @property {Function} - Throttled mousemove handler */
56047
56469
  Preview_defineProperty(this, "throttledMousemoveHandler", void 0);
56048
56470
  /** @property {Cache} - Preview's cache instance */
@@ -56182,6 +56604,7 @@ class Preview extends (events_default()) {
56182
56604
  if (this.perf) {
56183
56605
  this.perf.destroy();
56184
56606
  }
56607
+ this.destroyComparisonBanner();
56185
56608
 
56186
56609
  // Clean the UI
56187
56610
  this.ui.cleanup();
@@ -56866,11 +57289,14 @@ class Preview extends (events_default()) {
56866
57289
  * @return {void}
56867
57290
  */
56868
57291
  setupUI() {
57292
+ this.destroyComparisonBanner();
57293
+
56869
57294
  // Setup the shell
56870
57295
  this.container = this.ui.setup(this.options, this.keydownHandler, this.navigateLeft, this.navigateRight, this.throttledMousemoveHandler);
56871
57296
 
56872
57297
  // Set up the notification
56873
57298
  this.ui.setupNotification();
57299
+ this.updateComparisonBanner();
56874
57300
 
56875
57301
  // Update navigation
56876
57302
  this.ui.showNavigation(this.file.id, this.collection);
@@ -56884,6 +57310,67 @@ class Preview extends (events_default()) {
56884
57310
  lib_Timer.start(previewDurationTag);
56885
57311
  }
56886
57312
 
57313
+ /**
57314
+ * @public
57315
+ * @param {Object} [mode]
57316
+ * @param {boolean} [mode.isComparing] - This Preview is in a comparison (not “current pane”)
57317
+ * @param {boolean} [mode.isComparedPreview] - Compared (previous version) pane; implies isComparing
57318
+ * @return {void}
57319
+ */
57320
+ setComparisonMode(mode = {}) {
57321
+ if ('isComparedPreview' in mode) {
57322
+ this.options.isComparedPreview = !!mode.isComparedPreview;
57323
+ }
57324
+ if ('isComparing' in mode) {
57325
+ this.options.isComparing = !!mode.isComparing;
57326
+ }
57327
+ if (this.options.isComparedPreview) {
57328
+ this.options.isComparing = true;
57329
+ }
57330
+ this.updateComparisonBanner();
57331
+ }
57332
+
57333
+ /**
57334
+ * @private
57335
+ * @return {void}
57336
+ */
57337
+ updateComparisonBanner() {
57338
+ const {
57339
+ comparisonBanner,
57340
+ isComparing
57341
+ } = this.options;
57342
+ const isComparedPreview = !!this.options.isComparedPreview;
57343
+ if (!isComparing && !isComparedPreview) {
57344
+ this.destroyComparisonBanner();
57345
+ return;
57346
+ }
57347
+ if (!this.container) {
57348
+ return;
57349
+ }
57350
+ if (!this.comparisonBannerRoot) {
57351
+ this.comparisonBannerRoot = new ComparisonBannerRoot(this.container);
57352
+ }
57353
+ const {
57354
+ currentFileVersion,
57355
+ previousFileVersion
57356
+ } = comparisonBanner || {};
57357
+ this.comparisonBannerRoot.render(isComparedPreview ? previousFileVersion : currentFileVersion, {
57358
+ isComparedPreview,
57359
+ locale: (0,util/* getProp */.GT)(this.location, 'locale')
57360
+ });
57361
+ }
57362
+
57363
+ /**
57364
+ * @private
57365
+ * @return {void}
57366
+ */
57367
+ destroyComparisonBanner() {
57368
+ if (this.comparisonBannerRoot) {
57369
+ this.comparisonBannerRoot.destroy();
57370
+ this.comparisonBannerRoot = undefined;
57371
+ }
57372
+ }
57373
+
56887
57374
  /**
56888
57375
  * Parses preview options.
56889
57376
  *
@@ -57011,6 +57498,11 @@ class Preview extends (events_default()) {
57011
57498
  // Options that are applicable to certain file ids
57012
57499
  this.options.fileOptions = options.fileOptions || {};
57013
57500
 
57501
+ // isComparing = in a comparison; isComparedPreview = compared pane (implies isComparing)
57502
+ this.options.comparisonBanner = options.comparisonBanner || {};
57503
+ this.options.isComparedPreview = !!options.isComparedPreview;
57504
+ this.options.isComparing = !!options.isComparing || this.options.isComparedPreview;
57505
+
57014
57506
  // Option to enable use of thumbnails sidebar for document types
57015
57507
  this.options.enableThumbnailsSidebar = !!options.enableThumbnailsSidebar;
57016
57508