box-content-preview 3.64.0 → 3.66.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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  [![Mergify Status](https://img.shields.io/endpoint.svg?url=https://gh.mergify.io/badges/box/box-content-preview&style=flat)](https://mergify.io)
3
3
  [![Styled With Prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
4
4
  [![build status](https://img.shields.io/travis/box/box-content-preview/master.svg?style=flat-square)](https://travis-ci.org/box/box-content-preview)
5
- [![version](https://img.shields.io/badge/version-v3.64.0-blue.svg?style=flat-square)](https://github.com/box/box-content-preview)
5
+ [![version](https://img.shields.io/badge/version-v3.66.0-blue.svg?style=flat-square)](https://github.com/box/box-content-preview)
6
6
  [![npm version](https://img.shields.io/npm/v/box-ui-elements.svg?style=flat-square)](https://www.npmjs.com/package/box-ui-elements)
7
7
 
8
8
  # [Box Content Preview](https://developer.box.com/docs/box-content-preview)
@@ -22,11 +22,11 @@ We encourage all users to update their applications to utilize modern browsers f
22
22
 
23
23
  ## Current Version
24
24
 
25
- - Version: v3.64.0
25
+ - Version: v3.66.0
26
26
  - Locale: en-US
27
27
 
28
- https://cdn01.boxcdn.net/platform/preview/3.64.0/en-US/preview.js
29
- https://cdn01.boxcdn.net/platform/preview/3.64.0/en-US/preview.css
28
+ https://cdn01.boxcdn.net/platform/preview/3.66.0/en-US/preview.js
29
+ https://cdn01.boxcdn.net/platform/preview/3.66.0/en-US/preview.css
30
30
 
31
31
  ## Supported Locales
32
32
 
@@ -52,10 +52,10 @@ You can self-host the Box Content Preview library or reference the versions avai
52
52
  <title>Box Content Preview Demo</title>
53
53
 
54
54
  <!-- Latest version of Preview SDK for your locale -->
55
- <script src="https://cdn01.boxcdn.net/platform/preview/3.64.0/en-US/preview.js"></script>
55
+ <script src="https://cdn01.boxcdn.net/platform/preview/3.66.0/en-US/preview.js"></script>
56
56
  <link
57
57
  rel="stylesheet"
58
- href="https://cdn01.boxcdn.net/platform/preview/3.64.0/en-US/preview.css"
58
+ href="https://cdn01.boxcdn.net/platform/preview/3.66.0/en-US/preview.css"
59
59
  />
60
60
  </head>
61
61
  <body>
@@ -76,7 +76,7 @@ To self-host the Box Content Preview library, follow these steps:
76
76
 
77
77
  1. Either fork the repo and check out the version you want to host or download the specific version as a zip:
78
78
 
79
- - Check out a specific version with `git checkout v3.64.0`
79
+ - Check out a specific version with `git checkout v3.66.0`
80
80
  - Download a specific version as a zip from https://github.com/box/box-content-preview/releases
81
81
 
82
82
  2. Install dependencies and build the library with `yarn install && yarn build:i18n && yarn build:prod`
@@ -29,7 +29,7 @@
29
29
  .bp-ControlsBar{display:flex;align-items:center;height:48px;padding:0 2px;background:rgba(0,0,0,.8);border-radius:46px}.bp-ControlsBar:empty{display:none}.bp-ControlsBar+.bp-ControlsBar{position:absolute;left:100%;margin-left:6px}
30
30
  .bp-ControlsBarGroup{display:flex;gap:4px;align-items:center;margin-left:6px}.bp-ControlsBarGroup:empty{display:none}.bp-ControlsBarGroup:last-child{margin-right:6px}.bp-ControlsBarGroup--distinct{height:32px;background-color:rgba(78,78,78,.8);border-radius:54px}
31
31
  .bp-ColorPickerPalette{display:flex;align-items:center;justify-content:center;padding:0 8px;background:rgba(0,0,0,.8);border-radius:54px}.bp-ColorPickerPalette-button{width:20px;height:20px;margin:10px 2px;padding:0;border:none;border-radius:54px;cursor:pointer}.bp-ColorPickerPalette-button:focus,.bp-ColorPickerPalette-button:hover{outline:0;box-shadow:0 0 0 2px #fff}
32
- .bp-ColorPickerControl{position:relative;display:flex;align-items:center;justify-content:center;padding:0 6px}.bp-ColorPickerControl-toggle{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;padding:4px 0 4px 5px}.bp-ColorPickerControl-toggle:focus:not(:disabled),.bp-ColorPickerControl-toggle:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-ColorPickerControl-toggle:focus:not(:disabled) svg,.bp-ColorPickerControl-toggle:hover:not(:disabled) svg,.bp-ColorPickerControl-toggle.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-ColorPickerControl-toggle.bp-is-active,.bp-ColorPickerControl-toggle:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-ColorPickerControl-toggle.bp-is-active:focus:not(:disabled),.bp-ColorPickerControl-toggle.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-ColorPickerControl-toggle:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-ColorPickerControl-toggle:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-ColorPickerControl-toggle:focus:not(:focus-visible){box-shadow:none}.bp-ColorPickerControl-toggle:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-ColorPickerControl-toggle svg{width:32px;height:32px;padding:5px}.bp-ColorPickerControl-toggle svg{width:24px;height:24px}.bp-ColorPickerControl-toggle.bp-is-active .bp-ColorPickerControl-toggle,.bp-ColorPickerControl-toggle:focus .bp-ColorPickerControl-toggle,.bp-ColorPickerControl-toggle:hover .bp-ColorPickerControl-toggle{padding:8px;background-color:#444;border-radius:54px}.bp-ColorPickerControl-palette{position:absolute;top:-12px;left:50%;z-index:1;display:none;padding-bottom:10px;transform:translate(-50%, -100%)}.bp-ColorPickerControl-palette::after{position:absolute;left:50%;display:block;border-top:12px solid rgba(0,0,0,.8);border-right:12px solid transparent;border-left:12px solid transparent;transform:translateX(-50%);content:""}.bp-ColorPickerControl-palette.bp-is-open{display:block}.bp-ColorPickerControl-toggle-swatch{width:18px;height:18px;border:2px solid #fff;border-radius:25px}
32
+ .bp-ColorPickerControl{position:relative;display:flex;align-items:center;justify-content:center;padding:0 6px}.bp-ColorPickerControl-toggle{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;padding:4px 0 4px 5px}.bp-ColorPickerControl-toggle:focus:not(:disabled),.bp-ColorPickerControl-toggle:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-ColorPickerControl-toggle:focus:not(:disabled) svg,.bp-ColorPickerControl-toggle:hover:not(:disabled) svg,.bp-ColorPickerControl-toggle.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-ColorPickerControl-toggle.bp-is-active,.bp-ColorPickerControl-toggle:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-ColorPickerControl-toggle.bp-is-active:focus:not(:disabled),.bp-ColorPickerControl-toggle.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-ColorPickerControl-toggle:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-ColorPickerControl-toggle:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-ColorPickerControl-toggle:focus:not(:focus-visible){box-shadow:none}.bp-ColorPickerControl-toggle:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-ColorPickerControl-toggle svg{width:32px;height:32px;padding:5px}.bp-ColorPickerControl-toggle svg{width:24px;height:24px}.bp-ColorPickerControl-toggle.bp-is-active .bp-ColorPickerControl-toggle,.bp-ColorPickerControl-toggle:focus .bp-ColorPickerControl-toggle,.bp-ColorPickerControl-toggle:hover .bp-ColorPickerControl-toggle{padding:8px;background-color:#444;border-radius:54px}.bp-ColorPickerControl-palette{position:absolute;top:-12px;left:50%;z-index:1;padding-bottom:10px;transform:translate(-50%, -100%) scale(0.95);transform-origin:bottom center;visibility:hidden;opacity:0;transition:opacity 160ms cubic-bezier(0.23, 1, 0.32, 1),transform 160ms cubic-bezier(0.23, 1, 0.32, 1),visibility 0s linear 160ms}.bp-ColorPickerControl-palette::after{position:absolute;left:50%;display:block;border-top:12px solid rgba(0,0,0,.8);border-right:12px solid transparent;border-left:12px solid transparent;transform:translateX(-50%);content:""}.bp-ColorPickerControl-palette.bp-is-open{transform:translate(-50%, -100%) scale(1);visibility:visible;opacity:1;transition:opacity 160ms cubic-bezier(0.23, 1, 0.32, 1),transform 160ms cubic-bezier(0.23, 1, 0.32, 1),visibility 0s linear 0s}@media(prefers-reduced-motion: reduce){.bp-ColorPickerControl-palette{transform:translate(-50%, -100%);transition:opacity 160ms linear,visibility 0s linear 160ms}.bp-ColorPickerControl-palette.bp-is-open{transform:translate(-50%, -100%);transition:opacity 160ms linear,visibility 0s linear 0s}}.bp-ColorPickerControl-toggle-swatch{width:18px;height:18px;border:2px solid #fff;border-radius:25px}
33
33
  .bp-FullscreenToggle{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1}.bp-FullscreenToggle:focus:not(:disabled),.bp-FullscreenToggle:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-FullscreenToggle:focus:not(:disabled) svg,.bp-FullscreenToggle:hover:not(:disabled) svg,.bp-FullscreenToggle.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-FullscreenToggle.bp-is-active,.bp-FullscreenToggle:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-FullscreenToggle.bp-is-active:focus:not(:disabled),.bp-FullscreenToggle.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-FullscreenToggle:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-FullscreenToggle:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-FullscreenToggle:focus:not(:focus-visible){box-shadow:none}.bp-FullscreenToggle:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-FullscreenToggle svg{width:32px;height:32px;padding:5px}
34
34
  .bp-RotateControl{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1}.bp-RotateControl:focus:not(:disabled),.bp-RotateControl:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-RotateControl:focus:not(:disabled) svg,.bp-RotateControl:hover:not(:disabled) svg,.bp-RotateControl.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-RotateControl.bp-is-active,.bp-RotateControl:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-RotateControl.bp-is-active:focus:not(:disabled),.bp-RotateControl.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-RotateControl:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-RotateControl:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-RotateControl:focus:not(:focus-visible){box-shadow:none}.bp-RotateControl:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-RotateControl svg{width:32px;height:32px;padding:5px}
35
35
  .bp-ZoomControls{display:flex;align-items:center;padding:0 6px;border-radius:46px}.bp-ZoomControls-button{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1;margin-top:-6px;margin-bottom:-6px}.bp-ZoomControls-button:focus:not(:disabled),.bp-ZoomControls-button:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-ZoomControls-button:focus:not(:disabled) svg,.bp-ZoomControls-button:hover:not(:disabled) svg,.bp-ZoomControls-button.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-ZoomControls-button.bp-is-active,.bp-ZoomControls-button:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-ZoomControls-button.bp-is-active:focus:not(:disabled),.bp-ZoomControls-button.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-ZoomControls-button:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-ZoomControls-button:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-ZoomControls-button:focus:not(:focus-visible){box-shadow:none}.bp-ZoomControls-button:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-ZoomControls-button svg{width:32px;height:32px;padding:5px}.bp-ZoomControls-button svg{width:24px;height:24px}.bp-ZoomControls-current{display:flex;align-items:center;justify-content:center;min-width:44px;padding-right:3px;padding-left:3px;color:#fff;font-size:13px;line-height:1;white-space:nowrap;opacity:.9;-webkit-user-select:none;user-select:none}
@@ -81,7 +81,7 @@
81
81
  .bp-FindBarToggle{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1}.bp-FindBarToggle:focus:not(:disabled),.bp-FindBarToggle:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-FindBarToggle:focus:not(:disabled) svg,.bp-FindBarToggle:hover:not(:disabled) svg,.bp-FindBarToggle.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-FindBarToggle.bp-is-active,.bp-FindBarToggle:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-FindBarToggle.bp-is-active:focus:not(:disabled),.bp-FindBarToggle.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-FindBarToggle:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-FindBarToggle:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-FindBarToggle:focus:not(:focus-visible){box-shadow:none}.bp-FindBarToggle:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-FindBarToggle svg{width:32px;height:32px;padding:5px}
82
82
  .bp-GalleryToggle{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1}.bp-GalleryToggle:focus:not(:disabled),.bp-GalleryToggle:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-GalleryToggle:focus:not(:disabled) svg,.bp-GalleryToggle:hover:not(:disabled) svg,.bp-GalleryToggle.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-GalleryToggle.bp-is-active,.bp-GalleryToggle:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-GalleryToggle.bp-is-active:focus:not(:disabled),.bp-GalleryToggle.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-GalleryToggle:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-GalleryToggle:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-GalleryToggle:focus:not(:focus-visible){box-shadow:none}.bp-GalleryToggle:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-GalleryToggle svg{width:32px;height:32px;padding:5px}
83
83
  .bp-ThumbnailsToggle{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1}.bp-ThumbnailsToggle:focus:not(:disabled),.bp-ThumbnailsToggle:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-ThumbnailsToggle:focus:not(:disabled) svg,.bp-ThumbnailsToggle:hover:not(:disabled) svg,.bp-ThumbnailsToggle.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-ThumbnailsToggle.bp-is-active,.bp-ThumbnailsToggle:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-ThumbnailsToggle.bp-is-active:focus:not(:disabled),.bp-ThumbnailsToggle.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-ThumbnailsToggle:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-ThumbnailsToggle:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-ThumbnailsToggle:focus:not(:focus-visible){box-shadow:none}.bp-ThumbnailsToggle:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-ThumbnailsToggle svg{width:32px;height:32px;padding:5px}
84
- .bp-gallery-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:16px;align-items:start;padding:40px;padding-bottom:100px;overflow-y:auto;overscroll-behavior:none;background-color:#fff}.bp-gallery-tile{position:relative;padding:0;background:#f5f5f5;border:none;border-radius:12px;box-shadow:0 0 0 1px #eaeaea;cursor:pointer;transition:box-shadow .2s ease-in-out}.bp-gallery-tile:hover{box-shadow:0 0 0 3px #767676,0 4px 5px 0 rgba(0,0,0,.15)}.bp-gallery-tile:hover .bp-gallery-tile-badge{opacity:1}.bp-gallery-tile:focus{outline:none}.bp-gallery-tile img{display:block;width:100%;height:auto;border-radius:12px}.bp-gallery-tile--selected{box-shadow:0 0 0 3px #0061d5,0 4px 5px 0 rgba(0,0,0,.08)}.bp-gallery-tile--selected:hover,.bp-gallery-tile--selected:focus{box-shadow:0 0 0 3px #0061d5,0 4px 5px 0 rgba(0,0,0,.08)}.bp-gallery-tile--selected .bp-gallery-tile-badge{background:#0061d5;opacity:1}.bp-gallery-tile-badge{position:absolute;top:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 4px;color:#fff;font-size:13px;line-height:1;background:#767676;border-radius:12px 0 12px 0;opacity:0;transition:opacity .15s}.bp-gallery-tile-placeholder{display:block;width:100%;padding-top:129%}.bp-container:has(.bp-gallery-grid) .ba-PopupPortal{display:none}.bcpr-container:has(.bp-is-gallery-open) .bcpr-navigate-left,.bcpr-container:has(.bp-is-gallery-open) .bcpr-navigate-right{display:none}.bp .bp-is-gallery-open .bp-doc.bp-doc-document,.bp .bp-is-gallery-open .bp-doc.bp-is-scrollable{overflow-x:hidden;overflow-y:hidden}
84
+ .bp-gallery-grid{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:grid;grid-auto-rows:min-content;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:16px;align-items:start;padding:40px;padding-bottom:100px;overflow-y:auto;overscroll-behavior:none;background-color:#fff}.bp-gallery-tile{position:relative;padding:0;background:#f5f5f5;border:none;border-radius:12px;box-shadow:0 0 0 1px #eaeaea;cursor:pointer;transition:box-shadow .2s ease-in-out,transform .2s ease-in-out}.bp-gallery-tile:hover{box-shadow:0 0 0 3px #767676,0 4px 5px 0 rgba(0,0,0,.15);transform:translateY(-1px) scale(1.02)}.bp-gallery-tile:hover .bp-gallery-tile-badge{opacity:1}.bp-gallery-tile:focus{outline:none}.bp-gallery-tile img{display:block;width:100%;height:auto;border-radius:12px}.bp-gallery-tile--selected{box-shadow:0 0 0 3px #0061d5,0 4px 5px 0 rgba(0,0,0,.08)}.bp-gallery-tile--selected:hover,.bp-gallery-tile--selected:focus{box-shadow:0 0 0 3px #0061d5,0 4px 5px 0 rgba(0,0,0,.08)}.bp-gallery-tile--selected .bp-gallery-tile-badge{background:#0061d5;opacity:1}.bp-gallery-tile-badge{position:absolute;top:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 4px;color:#fff;font-size:13px;line-height:1;background:#767676;border-radius:12px 0 12px 0;opacity:0;transition:opacity .15s}.bp-gallery-tile-placeholder{display:block;width:100%;padding-top:129%}.bp-container:has(.bp-gallery-grid) .ba-PopupPortal{display:none}.bcpr-container:has(.bp-is-gallery-open) .bcpr-navigate-left,.bcpr-container:has(.bp-is-gallery-open) .bcpr-navigate-right{display:none}.bp .bp-is-gallery-open .bp-doc.bp-doc-document,.bp .bp-is-gallery-open .bp-doc.bp-is-scrollable{overflow-x:hidden;overflow-y:hidden}
85
85
  .custom-theme .bp .bp-thumbnail.bp-thumbnail-is-selected .bp-thumbnail-nav{box-shadow:0 0 0 3px #222,0 4px 5px 0 rgba(0,0,0,.08)}.custom-theme .bp .bp-thumbnail.bp-thumbnail-is-selected .bp-thumbnail-page-number{background:#222}.custom-theme .bp .bp-thumbnail.bp-thumbnail-is-selected.bp-thumbnail-image-loaded .bp-thumbnail-nav{background-color:#222}.bp .bp-ThumbnailsToggle{display:none}.bp .bp-thumbnails-container{position:absolute;top:0;bottom:0;left:0;display:none;flex:0 0 auto;width:191px}.bp .bp-thumbnails-container:focus{outline:none}.bp .bp-thumbnail{position:relative;display:flex;margin-right:20px;margin-left:20px;cursor:pointer;transition:transform .2s ease-in-out}.bp .bp-thumbnail:focus,.bp .bp-thumbnail:hover{transform:translateY(-1px) scale(1.02)}.bp .bp-thumbnail:focus .bp-thumbnail-page-number,.bp .bp-thumbnail:hover .bp-thumbnail-page-number{background:#767676;opacity:1}.bp .bp-thumbnail:focus .bp-thumbnail-nav,.bp .bp-thumbnail:hover .bp-thumbnail-nav{box-shadow:0 0 0 1px #767676,0 4px 5px 0 rgba(0,0,0,.15)}.bp .bp-thumbnail:focus.bp-thumbnail-image-loaded .bp-thumbnail-nav,.bp .bp-thumbnail:hover.bp-thumbnail-image-loaded .bp-thumbnail-nav{background-color:#767676}.bp .bp-thumbnail.bp-thumbnail-is-selected .bp-thumbnail-page-number{background:#0061d5;opacity:1}.bp .bp-thumbnail.bp-thumbnail-is-selected .bp-thumbnail-nav{box-shadow:0 0 0 3px #0061d5,0 4px 5px 0 rgba(0,0,0,.08)}.bp .bp-thumbnail.bp-thumbnail-is-selected.bp-thumbnail-image-loaded .bp-thumbnail-nav{background-color:#0061d5}.bp .bp-thumbnail:not(.bp-thumbnail-image-loaded) .bp-thumbnail-nav{background:#e8e8e8 url(assets/loading_ghost.gif) repeat-y;background-size:100% 100%}.bp .bp-thumbnail-nav{flex:0 0 150px;overflow:hidden;background-color:#d8d8d8;border-radius:6px;box-shadow:0 0 0 1px #e8e8e8,0 1px 4px 0 rgba(0,0,0,.08);transition:box-shadow .2s ease-in-out}.bp .bp-thumbnail-page-number{position:absolute;display:flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding-right:3px;padding-left:3px;color:#fff;font-size:13px;border-radius:3px 0 6px 0;box-shadow:1px 1px 2px 0 rgba(0,0,0,.2);opacity:0}.bp .bp-thumbnail-image{background-repeat:no-repeat;background-position:center;background-size:contain;pointer-events:none}.bp .bp-thumbnails-container--dark{background-color:#444;border-right-color:#000}.bp .bp-thumbnails-container--dark .bp-thumbnail-page-number{background-color:#444}.bp .bp-thumbnails-container--dark .bp-thumbnail-nav{border-color:#444}@keyframes bp-thumbnails-open{0%{display:none;transform:translateX(-191px)}1%{display:flex;transform:translateX(-191px)}100%{transform:translateX(0)}}@media(min-width: 768px){.bp.bp-loaded.bp-thumbnails-open-active .bp-content,.bp.bp-loaded.bp-thumbnails-close-active .bp-content{transition:left 300ms cubic-bezier(0.4, 0, 0.2, 1)}.bp .bp-thumbnails-container{display:none;transition:transform 300ms cubic-bezier(0.4, 0, 0.2, 1)}.bp .bp-thumbnails-container,.bp.bp-thumbnails-close .bp-thumbnails-container,.bp.bp-thumbnails-close-active .bp-thumbnails-container{transform:translateX(-191px)}.bp.bp-thumbnails-close .bp-thumbnails-container{display:none}.bp.bp-thumbnails-close-active .bp-thumbnails-container{display:flex}.bp.bp-thumbnails-open .bp-content{left:191px}.bp.bp-thumbnails-open .bp-content.bp-is-fullscreen{left:0}.bp.bp-thumbnails-open .bp-thumbnails-container{display:flex;transform:translateX(0)}.bp.bp-thumbnails-open-active .bp-thumbnails-container{animation:bp-thumbnails-open 300ms cubic-bezier(0.4, 0, 0.2, 1)}.bp .bp-ThumbnailsToggle{display:flex}}@media(max-width: 767px){.bp-is-mobile .bp-ZoomControls{display:none}}.bp-theme-dark .bp .bp-thumbnails-container{border-right-color:#222}.bp-doc{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;overflow:hidden;letter-spacing:normal;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.bp-doc [hidden]{display:none !important}.bp-doc.bp-is-scrollable{overflow:auto}.bp-doc .pdfViewer.pinching{visibility:hidden}.bp-doc .pdfViewer .page{position:relative;display:block;box-sizing:content-box !important;margin:0 auto;padding:15px 0;overflow:visible;border:0;border-image:none}.bp-doc .pdfViewer .page:not(.bp-is-invisible)::before{box-shadow:0 4px 12px 0 rgba(0,0,0,.1);position:absolute;top:15px;right:0;bottom:15px;left:0;display:block;content:""}.bp-doc .pdfViewer .page:not(.bp-is-invisible) .loadingIcon:first-child{background:#e8e8e8 url(assets/loading_ghost.gif) repeat-y;background-size:100% 100%}.bp-doc .pdfViewer .page .loadingIcon{top:15px;bottom:15px;background:none}.bp-doc .pdfViewer .page.loadingIcon::after{top:15px;bottom:15px;background:none}.bp-doc .pdfViewer .page .textAnnotation>img{opacity:0}.bp-doc .pdfViewer .page.pinch-page{padding:0;visibility:visible}.bp-doc .pdfViewer .page.pinch-page .textLayer{display:none}.bp-doc .pdfViewer.pdfViewer--viewOnly .textLayer span{cursor:unset;-webkit-user-select:none;user-select:none}.bp-doc .pdfViewer .page .textLayer{top:15px;bottom:auto;z-index:1;opacity:1;caret-color:#000}.bp-doc .pdfViewer .page .textLayer>div{-webkit-user-select:text;user-select:text}.bp-doc .pdfViewer .page .textLayer .highlight{display:inline-block;background-color:rgba(180,0,170,.2)}.bp-doc .pdfViewer .page .textLayer .highlight.selected{background-color:rgba(0,100,0,.2)}.bp-doc .pdfViewer .page .textLayer .rangy-highlight{opacity:.2}.bp-doc .pdfViewer .page .textLayer ::selection{background-color:rgba(0,97,213,.1)}.bp-doc input,.bp-doc p,.bp-doc span{-webkit-user-select:text;user-select:text}.bp-doc .annotationLayer h1,.bp-doc .annotationLayer h2,.bp-doc .annotationLayer h3,.bp-doc .annotationLayer h4,.bp-doc .annotationLayer h5,.bp-doc .annotationLayer h6,.bp-doc .annotationLayer p{margin:0}.bp-doc .annotationLayer h1{font-size:1em}.bp-doc .annotationLayer section{margin-top:15px}.bp-doc .annotationLayer .popup{font-size:inherit}.bp-doc .annotationLayer .popup .header{height:unset;padding:unset !important;background-color:unset}.bp-print-notification{display:none;font-size:24px}@media print{.bp-doc{display:none}.bp-print-notification{display:block}}.bp-content.bp-annotations-discoverable .ba-PopupCursor{display:none}.bp-content.bp-annotations-discoverable .textLayer{pointer-events:none}.bp-content.bp-annotations-discoverable .textLayer span{pointer-events:auto}@media(max-width: 767px){.bp-content.bp-annotations-only-controls.bp-annotations-create--drawing .bp-AnnotationsControls-exitBtn,.bp-content.bp-annotations-only-controls.bp-annotations-create--highlight .bp-AnnotationsControls-exitBtn,.bp-content.bp-annotations-only-controls.bp-annotations-create--region .bp-AnnotationsControls-exitBtn{display:block}.bp-content.bp-annotations-only-controls.bp-annotations-create--drawing .bp-ControlsBarGroup:not(:last-child),.bp-content.bp-annotations-only-controls.bp-annotations-create--drawing .bp-ControlsBarGroup>*:not(.bp-AnnotationsControls),.bp-content.bp-annotations-only-controls.bp-annotations-create--highlight .bp-ControlsBarGroup:not(:last-child),.bp-content.bp-annotations-only-controls.bp-annotations-create--highlight .bp-ControlsBarGroup>*:not(.bp-AnnotationsControls),.bp-content.bp-annotations-only-controls.bp-annotations-create--region .bp-ControlsBarGroup:not(:last-child),.bp-content.bp-annotations-only-controls.bp-annotations-create--region .bp-ControlsBarGroup>*:not(.bp-AnnotationsControls){display:none}}.bp-content.bp-annotations-create--highlight .ba-PopupCursor,.bp-content.bp-annotations-create--region .ba-PopupCursor{display:block}.bp-content.bp-annotations-create--highlight .annotationLayer,.bp-content.bp-annotations-create--region .annotationLayer{pointer-events:none}.bp-content.bp-annotations-create--highlight .ba-DrawingAnnotations-list.is-listening .ba-DrawingTarget,.bp-content.bp-annotations-create--region .ba-DrawingAnnotations-list.is-listening .ba-DrawingTarget{pointer-events:none}.bp-content.bp-annotations-create--highlight .ba-HighlightList .ba-HighlightSvg.is-listening .ba-HighlightTarget-rect,.bp-content.bp-annotations-create--region .ba-HighlightList .ba-HighlightSvg.is-listening .ba-HighlightTarget-rect{pointer-events:none}.bp-content.bp-annotations-create--highlight .ba-RegionAnnotations-list.is-listening .ba-RegionAnnotation,.bp-content.bp-annotations-create--region .ba-RegionAnnotations-list.is-listening .ba-RegionAnnotation{pointer-events:none}.bp-content.bp-annotations-create--region.bp-annotations-ftux-document-cursor-seen .ba-PopupCursor{display:none}.bp-content.bp-annotations-create--region .textLayer,.bp-content.bp-annotations-create--region .textLayer span{pointer-events:none}.bp-content.bp-is-fullscreen .bp-ThumbnailsToggle{display:none}.bp-find-bar{position:absolute;top:0;right:17px;z-index:3;display:flex;align-items:center;padding:6px;font-size:12px;font-family:Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;background:#fff;border:1px solid #e8e8e8}.bp-find-bar ::-ms-clear{display:none}.bp-find-bar .bp-doc-find-field{width:200px;height:34px;padding:6px 6px 6px 25px;color:#494949;line-height:20px;border:1px solid #e8e8e8;border-radius:2px 0 0 2px;outline-style:none;transition-timing-function:ease;transition-duration:150ms;transition-property:border-color}.bp-find-bar .bp-doc-find-field:focus,.bp-find-bar .bp-doc-find-field:hover{border-color:#0061d5}.bp-find-bar .bp-doc-find-results-count{position:absolute;top:37%;right:120px;margin:0;padding:0;color:rgba(73,73,73,.25);line-height:1;text-align:right;cursor:default;-webkit-user-select:none;user-select:none}.bp-find-bar .bp-doc-find-search,.bp-find-bar .bp-doc-find-prev,.bp-find-bar .bp-doc-find-next,.bp-find-bar .bp-doc-find-close{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;line-height:1;vertical-align:middle;background:none;border:1px solid #e8e8e8;border-left:0;cursor:pointer}.bp-find-bar .bp-doc-find-search svg,.bp-find-bar .bp-doc-find-prev svg,.bp-find-bar .bp-doc-find-next svg,.bp-find-bar .bp-doc-find-close svg{width:17px}.bp-find-bar .bp-doc-find-search .icon,.bp-find-bar .bp-doc-find-prev .icon,.bp-find-bar .bp-doc-find-next .icon,.bp-find-bar .bp-doc-find-close .icon{fill:rgba(73,73,73,.75)}.bp-find-bar .bp-doc-find-prev:hover .icon,.bp-find-bar .bp-doc-find-next:hover .icon,.bp-find-bar .bp-doc-find-close:hover .icon{fill:#494949}.bp-find-bar .bp-doc-find-search{position:absolute;top:15%;left:5px;margin:0;line-height:1;text-align:left;border:0;pointer-events:none}.bp-find-bar .bp-doc-find-search svg{width:12px;height:12px}.bp-find-bar .bp-doc-find-close{border:0}.bp-find-bar .bp-doc-find-close svg{width:22px}.bp-find-bar .bp-find-match-not-found,.bp-find-bar .bp-find-match-not-found:hover,.bp-find-bar .bp-find-match-not-found:focus{border-color:rgba(239,72,54,.5)}.bp-find-bar .bp-doc-find-controls{display:flex}.bp .bp-doc.bp-doc-document{overflow-y:scroll}.bp-document-preload-wrapper{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;margin:0;overflow-y:scroll;scrollbar-gutter:stable;background-color:#f5f5f5;opacity:1;transition:opacity .5s}.bp-document-preload-wrapper.bp-is-invisible{visibility:hidden}.bp-document-preload-wrapper.bp-is-transparent{opacity:0}.bp-theme-dark .bp-document-preload-wrapper{background-color:#464a4f}.bp-document-preload-wrapper .bp-preload-content,.bp-document-preload-wrapper .bp-preload-overlay,.bp-document-preload-wrapper .bp-preload-placeholder::before{position:absolute;top:0;right:0;bottom:0;left:0}.bp-document-preload-wrapper .bp-preload-content{width:100%}.bp-document-preload-wrapper .bp-preload-overlay{background-color:rgba(255,255,255,.4)}.bp-document-preload-wrapper .bp-preload-placeholder{background:#e8e8e8 url(assets/loading_ghost.gif) repeat-y;background-size:100% 100%;box-shadow:0 4px 12px 0 rgba(0,0,0,.1);position:relative;margin:15px auto 30px}.bp-document-preload-wrapper .bp-preload-placeholder img.doc-first-image{width:100%;height:100%}.bp-document-preload-wrapper .bp-preload-placeholder img.loaded{visibility:visible}
86
86
  .custom-theme .bp .bp-thumbnail.bp-thumbnail-is-selected .bp-thumbnail-nav{box-shadow:0 0 0 3px #222,0 4px 5px 0 rgba(0,0,0,.08)}.custom-theme .bp .bp-thumbnail.bp-thumbnail-is-selected .bp-thumbnail-page-number{background:#222}.custom-theme .bp .bp-thumbnail.bp-thumbnail-is-selected.bp-thumbnail-image-loaded .bp-thumbnail-nav{background-color:#222}.bp .bp-ThumbnailsToggle{display:none}.bp .bp-thumbnails-container{position:absolute;top:0;bottom:0;left:0;display:none;flex:0 0 auto;width:191px}.bp .bp-thumbnails-container:focus{outline:none}.bp .bp-thumbnail{position:relative;display:flex;margin-right:20px;margin-left:20px;cursor:pointer;transition:transform .2s ease-in-out}.bp .bp-thumbnail:focus,.bp .bp-thumbnail:hover{transform:translateY(-1px) scale(1.02)}.bp .bp-thumbnail:focus .bp-thumbnail-page-number,.bp .bp-thumbnail:hover .bp-thumbnail-page-number{background:#767676;opacity:1}.bp .bp-thumbnail:focus .bp-thumbnail-nav,.bp .bp-thumbnail:hover .bp-thumbnail-nav{box-shadow:0 0 0 1px #767676,0 4px 5px 0 rgba(0,0,0,.15)}.bp .bp-thumbnail:focus.bp-thumbnail-image-loaded .bp-thumbnail-nav,.bp .bp-thumbnail:hover.bp-thumbnail-image-loaded .bp-thumbnail-nav{background-color:#767676}.bp .bp-thumbnail.bp-thumbnail-is-selected .bp-thumbnail-page-number{background:#0061d5;opacity:1}.bp .bp-thumbnail.bp-thumbnail-is-selected .bp-thumbnail-nav{box-shadow:0 0 0 3px #0061d5,0 4px 5px 0 rgba(0,0,0,.08)}.bp .bp-thumbnail.bp-thumbnail-is-selected.bp-thumbnail-image-loaded .bp-thumbnail-nav{background-color:#0061d5}.bp .bp-thumbnail:not(.bp-thumbnail-image-loaded) .bp-thumbnail-nav{background:#e8e8e8 url(assets/loading_ghost.gif) repeat-y;background-size:100% 100%}.bp .bp-thumbnail-nav{flex:0 0 150px;overflow:hidden;background-color:#d8d8d8;border-radius:6px;box-shadow:0 0 0 1px #e8e8e8,0 1px 4px 0 rgba(0,0,0,.08);transition:box-shadow .2s ease-in-out}.bp .bp-thumbnail-page-number{position:absolute;display:flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding-right:3px;padding-left:3px;color:#fff;font-size:13px;border-radius:3px 0 6px 0;box-shadow:1px 1px 2px 0 rgba(0,0,0,.2);opacity:0}.bp .bp-thumbnail-image{background-repeat:no-repeat;background-position:center;background-size:contain;pointer-events:none}.bp .bp-thumbnails-container--dark{background-color:#444;border-right-color:#000}.bp .bp-thumbnails-container--dark .bp-thumbnail-page-number{background-color:#444}.bp .bp-thumbnails-container--dark .bp-thumbnail-nav{border-color:#444}@keyframes bp-thumbnails-open{0%{display:none;transform:translateX(-191px)}1%{display:flex;transform:translateX(-191px)}100%{transform:translateX(0)}}@media(min-width: 768px){.bp.bp-loaded.bp-thumbnails-open-active .bp-content,.bp.bp-loaded.bp-thumbnails-close-active .bp-content{transition:left 300ms cubic-bezier(0.4, 0, 0.2, 1)}.bp .bp-thumbnails-container{display:none;transition:transform 300ms cubic-bezier(0.4, 0, 0.2, 1)}.bp .bp-thumbnails-container,.bp.bp-thumbnails-close .bp-thumbnails-container,.bp.bp-thumbnails-close-active .bp-thumbnails-container{transform:translateX(-191px)}.bp.bp-thumbnails-close .bp-thumbnails-container{display:none}.bp.bp-thumbnails-close-active .bp-thumbnails-container{display:flex}.bp.bp-thumbnails-open .bp-content{left:191px}.bp.bp-thumbnails-open .bp-content.bp-is-fullscreen{left:0}.bp.bp-thumbnails-open .bp-thumbnails-container{display:flex;transform:translateX(0)}.bp.bp-thumbnails-open-active .bp-thumbnails-container{animation:bp-thumbnails-open 300ms cubic-bezier(0.4, 0, 0.2, 1)}.bp .bp-ThumbnailsToggle{display:flex}}@media(max-width: 767px){.bp-is-mobile .bp-ZoomControls{display:none}}.bp-theme-dark .bp .bp-thumbnails-container{border-right-color:#222}.bp-doc{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;overflow:hidden;letter-spacing:normal;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.bp-doc [hidden]{display:none !important}.bp-doc.bp-is-scrollable{overflow:auto}.bp-doc .pdfViewer.pinching{visibility:hidden}.bp-doc .pdfViewer .page{position:relative;display:block;box-sizing:content-box !important;margin:0 auto;padding:15px 0;overflow:visible;border:0;border-image:none}.bp-doc .pdfViewer .page:not(.bp-is-invisible)::before{box-shadow:0 4px 12px 0 rgba(0,0,0,.1);position:absolute;top:15px;right:0;bottom:15px;left:0;display:block;content:""}.bp-doc .pdfViewer .page:not(.bp-is-invisible) .loadingIcon:first-child{background:#e8e8e8 url(assets/loading_ghost.gif) repeat-y;background-size:100% 100%}.bp-doc .pdfViewer .page .loadingIcon{top:15px;bottom:15px;background:none}.bp-doc .pdfViewer .page.loadingIcon::after{top:15px;bottom:15px;background:none}.bp-doc .pdfViewer .page .textAnnotation>img{opacity:0}.bp-doc .pdfViewer .page.pinch-page{padding:0;visibility:visible}.bp-doc .pdfViewer .page.pinch-page .textLayer{display:none}.bp-doc .pdfViewer.pdfViewer--viewOnly .textLayer span{cursor:unset;-webkit-user-select:none;user-select:none}.bp-doc .pdfViewer .page .textLayer{top:15px;bottom:auto;z-index:1;opacity:1;caret-color:#000}.bp-doc .pdfViewer .page .textLayer>div{-webkit-user-select:text;user-select:text}.bp-doc .pdfViewer .page .textLayer .highlight{display:inline-block;background-color:rgba(180,0,170,.2)}.bp-doc .pdfViewer .page .textLayer .highlight.selected{background-color:rgba(0,100,0,.2)}.bp-doc .pdfViewer .page .textLayer .rangy-highlight{opacity:.2}.bp-doc .pdfViewer .page .textLayer ::selection{background-color:rgba(0,97,213,.1)}.bp-doc input,.bp-doc p,.bp-doc span{-webkit-user-select:text;user-select:text}.bp-doc .annotationLayer h1,.bp-doc .annotationLayer h2,.bp-doc .annotationLayer h3,.bp-doc .annotationLayer h4,.bp-doc .annotationLayer h5,.bp-doc .annotationLayer h6,.bp-doc .annotationLayer p{margin:0}.bp-doc .annotationLayer h1{font-size:1em}.bp-doc .annotationLayer section{margin-top:15px}.bp-doc .annotationLayer .popup{font-size:inherit}.bp-doc .annotationLayer .popup .header{height:unset;padding:unset !important;background-color:unset}.bp-print-notification{display:none;font-size:24px}@media print{.bp-doc{display:none}.bp-print-notification{display:block}}.bp-content.bp-annotations-discoverable .ba-PopupCursor{display:none}.bp-content.bp-annotations-discoverable .textLayer{pointer-events:none}.bp-content.bp-annotations-discoverable .textLayer span{pointer-events:auto}@media(max-width: 767px){.bp-content.bp-annotations-only-controls.bp-annotations-create--drawing .bp-AnnotationsControls-exitBtn,.bp-content.bp-annotations-only-controls.bp-annotations-create--highlight .bp-AnnotationsControls-exitBtn,.bp-content.bp-annotations-only-controls.bp-annotations-create--region .bp-AnnotationsControls-exitBtn{display:block}.bp-content.bp-annotations-only-controls.bp-annotations-create--drawing .bp-ControlsBarGroup:not(:last-child),.bp-content.bp-annotations-only-controls.bp-annotations-create--drawing .bp-ControlsBarGroup>*:not(.bp-AnnotationsControls),.bp-content.bp-annotations-only-controls.bp-annotations-create--highlight .bp-ControlsBarGroup:not(:last-child),.bp-content.bp-annotations-only-controls.bp-annotations-create--highlight .bp-ControlsBarGroup>*:not(.bp-AnnotationsControls),.bp-content.bp-annotations-only-controls.bp-annotations-create--region .bp-ControlsBarGroup:not(:last-child),.bp-content.bp-annotations-only-controls.bp-annotations-create--region .bp-ControlsBarGroup>*:not(.bp-AnnotationsControls){display:none}}.bp-content.bp-annotations-create--highlight .ba-PopupCursor,.bp-content.bp-annotations-create--region .ba-PopupCursor{display:block}.bp-content.bp-annotations-create--highlight .annotationLayer,.bp-content.bp-annotations-create--region .annotationLayer{pointer-events:none}.bp-content.bp-annotations-create--highlight .ba-DrawingAnnotations-list.is-listening .ba-DrawingTarget,.bp-content.bp-annotations-create--region .ba-DrawingAnnotations-list.is-listening .ba-DrawingTarget{pointer-events:none}.bp-content.bp-annotations-create--highlight .ba-HighlightList .ba-HighlightSvg.is-listening .ba-HighlightTarget-rect,.bp-content.bp-annotations-create--region .ba-HighlightList .ba-HighlightSvg.is-listening .ba-HighlightTarget-rect{pointer-events:none}.bp-content.bp-annotations-create--highlight .ba-RegionAnnotations-list.is-listening .ba-RegionAnnotation,.bp-content.bp-annotations-create--region .ba-RegionAnnotations-list.is-listening .ba-RegionAnnotation{pointer-events:none}.bp-content.bp-annotations-create--region.bp-annotations-ftux-document-cursor-seen .ba-PopupCursor{display:none}.bp-content.bp-annotations-create--region .textLayer,.bp-content.bp-annotations-create--region .textLayer span{pointer-events:none}.bp-content.bp-is-fullscreen .bp-ThumbnailsToggle{display:none}.bp-find-bar{position:absolute;top:0;right:17px;z-index:3;display:flex;align-items:center;padding:6px;font-size:12px;font-family:Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;background:#fff;border:1px solid #e8e8e8}.bp-find-bar ::-ms-clear{display:none}.bp-find-bar .bp-doc-find-field{width:200px;height:34px;padding:6px 6px 6px 25px;color:#494949;line-height:20px;border:1px solid #e8e8e8;border-radius:2px 0 0 2px;outline-style:none;transition-timing-function:ease;transition-duration:150ms;transition-property:border-color}.bp-find-bar .bp-doc-find-field:focus,.bp-find-bar .bp-doc-find-field:hover{border-color:#0061d5}.bp-find-bar .bp-doc-find-results-count{position:absolute;top:37%;right:120px;margin:0;padding:0;color:rgba(73,73,73,.25);line-height:1;text-align:right;cursor:default;-webkit-user-select:none;user-select:none}.bp-find-bar .bp-doc-find-search,.bp-find-bar .bp-doc-find-prev,.bp-find-bar .bp-doc-find-next,.bp-find-bar .bp-doc-find-close{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;line-height:1;vertical-align:middle;background:none;border:1px solid #e8e8e8;border-left:0;cursor:pointer}.bp-find-bar .bp-doc-find-search svg,.bp-find-bar .bp-doc-find-prev svg,.bp-find-bar .bp-doc-find-next svg,.bp-find-bar .bp-doc-find-close svg{width:17px}.bp-find-bar .bp-doc-find-search .icon,.bp-find-bar .bp-doc-find-prev .icon,.bp-find-bar .bp-doc-find-next .icon,.bp-find-bar .bp-doc-find-close .icon{fill:rgba(73,73,73,.75)}.bp-find-bar .bp-doc-find-prev:hover .icon,.bp-find-bar .bp-doc-find-next:hover .icon,.bp-find-bar .bp-doc-find-close:hover .icon{fill:#494949}.bp-find-bar .bp-doc-find-search{position:absolute;top:15%;left:5px;margin:0;line-height:1;text-align:left;border:0;pointer-events:none}.bp-find-bar .bp-doc-find-search svg{width:12px;height:12px}.bp-find-bar .bp-doc-find-close{border:0}.bp-find-bar .bp-doc-find-close svg{width:22px}.bp-find-bar .bp-find-match-not-found,.bp-find-bar .bp-find-match-not-found:hover,.bp-find-bar .bp-find-match-not-found:focus{border-color:rgba(239,72,54,.5)}.bp-find-bar .bp-doc-find-controls{display:flex}.bp-doc.bp-doc-presentation{overflow:hidden}.bp-doc.bp-doc-presentation .pdfViewer .page{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.bp-doc.bp-doc-presentation .pdfViewer .page.bp-is-invisible{opacity:0}.bp-doc.bp-doc-presentation.overflow-x{overflow-x:scroll}.bp-doc.bp-doc-presentation.overflow-y{overflow-y:scroll}.bp-doc.bp-doc-presentation.overflow-y .pdfViewer .page{margin-top:5px}.bp-presentation-preload-wrapper{position:absolute;top:0;right:0;bottom:0;left:0;align-content:center;margin:0;background-color:#f5f5f5;transition:opacity .5s}.bp-presentation-preload-wrapper.bp-is-invisible{visibility:hidden}.bp-presentation-preload-wrapper.bp-is-transparent{opacity:0}.bp-theme-dark .bp-presentation-preload-wrapper{background-color:#464a4f}.bp-presentation-preload-wrapper .bp-preload-content,.bp-presentation-preload-wrapper .bp-preload-overlay,.bp-presentation-preload-wrapper .bp-preload-placeholder::before{position:absolute;top:0;right:0;bottom:0;left:0}.bp-presentation-preload-wrapper .bp-preload-content{width:100%}.bp-presentation-preload-wrapper .bp-preload-overlay{background-color:rgba(255,255,255,.4)}.bp-presentation-preload-wrapper .bp-preload-placeholder{background:#e8e8e8 url(assets/loading_ghost.gif) repeat-y;background-size:100% 100%;box-shadow:0 4px 12px 0 rgba(0,0,0,.1);position:relative;margin:auto;padding-top:5px}.bp-presentation-preload-wrapper .bp-preload-placeholder img.doc-first-image{width:100%;height:100%}.bp-presentation-preload-wrapper .bp-preload-placeholder img.loaded{visibility:visible}
87
87
  .bp-AnimationClipsToggle{opacity:.9;transition:opacity 150ms,background-color 150ms;will-change:opacity;outline:0;display:flex;align-items:center;justify-content:center;margin:0;padding:0;color:#fff;background:transparent;border:0;border-radius:25px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;zoom:1}.bp-AnimationClipsToggle:focus:not(:disabled),.bp-AnimationClipsToggle:hover:not(:disabled){background-color:rgba(255,255,255,.08);opacity:1}.bp-AnimationClipsToggle:focus:not(:disabled) svg,.bp-AnimationClipsToggle:hover:not(:disabled) svg,.bp-AnimationClipsToggle.bp-is-active svg{transform:scale(1.09);transition:transform 150ms}.bp-AnimationClipsToggle.bp-is-active,.bp-AnimationClipsToggle:active:not(:disabled){background-color:rgba(255,255,255,.16)}.bp-AnimationClipsToggle.bp-is-active:focus:not(:disabled),.bp-AnimationClipsToggle.bp-is-active:hover:not(:disabled){background-color:rgba(255,255,255,.2)}.bp-AnimationClipsToggle:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-AnimationClipsToggle:focus-visible:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-AnimationClipsToggle:focus:not(:focus-visible){box-shadow:none}.bp-AnimationClipsToggle:disabled{cursor:default;opacity:.2;pointer-events:none}.bp-AnimationClipsToggle svg{width:32px;height:32px;padding:5px}
package/dist/lib/index.js CHANGED
@@ -17416,7 +17416,7 @@ function util_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var
17416
17416
  const CLIENT_NAME = "box-content-preview"; // eslint-disable-line no-undef
17417
17417
  const CLIENT_NAME_KEY = 'box_client_name';
17418
17418
  const CLIENT_VERSION_KEY = 'box_client_version';
17419
- const CLIENT_VERSION = "3.64.0"; // eslint-disable-line no-undef
17419
+ const CLIENT_VERSION = "3.66.0"; // eslint-disable-line no-undef
17420
17420
  const HEADER_CLIENT_NAME = 'X-Box-Client-Name';
17421
17421
  const HEADER_CLIENT_VERSION = 'X-Box-Client-Version';
17422
17422
  const PROMISE_MAP = {};
@@ -19141,7 +19141,7 @@ class Browser {
19141
19141
  ;// ./src/lib/Logger.js
19142
19142
  /* eslint-disable no-undef */
19143
19143
  const Logger_CLIENT_NAME = "box-content-preview";
19144
- const Logger_CLIENT_VERSION = "3.64.0";
19144
+ const Logger_CLIENT_VERSION = "3.66.0";
19145
19145
  /* eslint-enable no-undef */
19146
19146
 
19147
19147
  class Logger {
@@ -21811,13 +21811,20 @@ function ControlsLayer(_ref) {
21811
21811
 
21812
21812
  // Destroy timeouts on unmount
21813
21813
  __WEBPACK_EXTERNAL_MODULE_react_default__.useEffect(() => helpersRef.current.clean, []);
21814
+
21815
+ // Keep a stable identity so consumers can safely depend on it (e.g. ColorPickerControl pins the layer
21816
+ // from an effect keyed on this function). An inline value here handed down a fresh function every render,
21817
+ // which retriggered that effect's cleanup and instantly un-pinned the layer — the palette faded out the
21818
+ // moment the cursor left it.
21819
+ const setIsForcedWithReset = __WEBPACK_EXTERNAL_MODULE_react_default__.useCallback(value => {
21820
+ helpersRef.current.reset();
21821
+ setIsForced(value);
21822
+ }, []);
21823
+ const contextValue = __WEBPACK_EXTERNAL_MODULE_react_default__.useMemo(() => ({
21824
+ setIsForced: setIsForcedWithReset
21825
+ }), [setIsForcedWithReset]);
21814
21826
  return /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(ControlsLayerContext.Provider, {
21815
- value: {
21816
- setIsForced: value => {
21817
- helpersRef.current.reset();
21818
- setIsForced(value);
21819
- }
21820
- }
21827
+ value: contextValue
21821
21828
  }, /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement("div", {
21822
21829
  className: `bp-ControlsLayer ${isShown || isForced ? SHOW_CLASSNAME : ''}`,
21823
21830
  "data-testid": "bp-ControlsLayer",
@@ -22676,8 +22683,11 @@ function IconPencilScribbleMedium24(_ref) {
22676
22683
  viewBox: "0 0 24 24",
22677
22684
  width: "1em"
22678
22685
  }, rest), /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_createElement__("path", {
22679
- d: "M20.175 13.013c.301-.069.713-.118 1.114.026.25.09.44.255.566.444l.05.082.09.195c.178.459.124.927.037 1.277-.105.416-.302.842-.518 1.236-.434.79-1.066 1.663-1.61 2.42-.308.427-.581.808-.801 1.137a4.124 4.124 0 0 0 1.69-1.037 1 1 0 0 1 1.414 1.413C21.025 21.39 19.514 22 18 22c-.219 0-.517-.034-.8-.205a1.254 1.254 0 0 1-.583-.829 1.606 1.606 0 0 1 .034-.73c.05-.19.127-.375.208-.54.304-.627.89-1.434 1.421-2.172.564-.782 1.111-1.546 1.474-2.204-.5.262-1.111.652-1.794 1.163-1.6 1.197-3.503 2.987-5.17 5.13a1 1 0 1 1-1.579-1.227c1.78-2.287 3.81-4.203 5.551-5.505.868-.649 1.69-1.164 2.39-1.496a5.103 5.103 0 0 1 1.023-.372Zm-3.75-10.306a3.001 3.001 0 0 1 4.242 0l.626.626a3 3 0 0 1 0 4.243l-2.04 2.04-9.249 9.248a4.004 4.004 0 0 1-1.305.87L4.49 21.467c-1.232.508-2.465-.725-1.958-1.958L4.265 15.3c.201-.488.498-.932.871-1.305l9.248-9.247 2.04-2.041ZM6.55 15.41a2.002 2.002 0 0 0-.436.652l-1.276 3.099 3.1-1.276c.244-.1.465-.249.652-.435l8.541-8.541-2.04-2.04-8.541 8.54ZM19.252 4.12a1 1 0 0 0-1.414 0l-1.334 1.334 2.041 2.04 1.334-1.332a1 1 0 0 0 0-1.414l-.627-.627Z",
22686
+ d: "M16.425 2.707a3.001 3.001 0 0 1 4.242 0l.626.626a3 3 0 0 1 0 4.243l-2.04 2.04-9.249 9.248a4.004 4.004 0 0 1-1.305.87L4.49 21.467c-1.232.508-2.465-.725-1.958-1.958L4.265 15.3c.201-.488.498-.932.871-1.305l9.248-9.247 2.04-2.041ZM6.55 15.41a2.002 2.002 0 0 0-.436.652l-1.276 3.099 3.1-1.276c.244-.1.465-.249.652-.435l8.541-8.541-2.04-2.04-8.541 8.54ZM19.252 4.12a1 1 0 0 0-1.414 0l-1.334 1.334 2.041 2.04 1.334-1.332a1 1 0 0 0 0-1.414l-.627-.627Z",
22680
22687
  fill: "#fff"
22688
+ }), /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_createElement__("path", {
22689
+ d: "M20.175 13.013c.301-.069.713-.118 1.114.026.25.09.44.255.566.444l.05.082.09.195c.178.459.124.927.037 1.277-.105.416-.302.842-.518 1.236-.434.79-1.066 1.663-1.61 2.42-.308.427-.581.808-.801 1.137a4.124 4.124 0 0 0 1.69-1.037 1 1 0 0 1 1.414 1.413C21.025 21.39 19.514 22 18 22c-.219 0-.517-.034-.8-.205a1.254 1.254 0 0 1-.583-.829 1.606 1.606 0 0 1 .034-.73c.05-.19.127-.375.208-.54.304-.627.89-1.434 1.421-2.172.564-.782 1.111-1.546 1.474-2.204-.5.262-1.111.652-1.794 1.163-1.6 1.197-3.503 2.987-5.17 5.13a1 1 0 1 1-1.579-1.227c1.78-2.287 3.81-4.203 5.551-5.505.868-.649 1.69-1.164 2.39-1.496a5.103 5.103 0 0 1 1.023-.372Z",
22690
+ fill: "currentColor"
22681
22691
  }));
22682
22692
  }
22683
22693
  /* harmony default export */ const icons_IconPencilScribbleMedium24 = (IconPencilScribbleMedium24);
@@ -22849,7 +22859,11 @@ function AnnotationsControls(_ref) {
22849
22859
  mode: AnnotationMode.DRAWING,
22850
22860
  onClick: handleModeClick,
22851
22861
  title: "Markup"
22852
- }, /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(icons_IconPencilScribbleMedium24, null)), /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(annotations_AnnotationsTargetedTooltip, {
22862
+ }, /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(icons_IconPencilScribbleMedium24, {
22863
+ style: {
22864
+ color: annotationColor
22865
+ }
22866
+ })), /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(annotations_AnnotationsTargetedTooltip, {
22853
22867
  isEnabled: showRegion
22854
22868
  }, /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(annotations_AnnotationsButton, {
22855
22869
  ref: annotationBtnRefs[AnnotationMode.REGION],
@@ -22922,7 +22936,6 @@ function ControlsBarGroup(_ref) {
22922
22936
  function ColorPickerPalette(_ref) {
22923
22937
  let {
22924
22938
  colors,
22925
- onBlur,
22926
22939
  onSelect
22927
22940
  } = _ref;
22928
22941
  return /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement("div", {
@@ -22932,7 +22945,6 @@ function ColorPickerPalette(_ref) {
22932
22945
  key: color,
22933
22946
  className: "bp-ColorPickerPalette-button",
22934
22947
  "data-resin-target": "colorSelect",
22935
- onBlur: onBlur,
22936
22948
  onClick: () => onSelect(color),
22937
22949
  style: {
22938
22950
  backgroundColor: color
@@ -22975,6 +22987,25 @@ function IconChevronUpMedium24(props) {
22975
22987
  }));
22976
22988
  }
22977
22989
  /* harmony default export */ const icons_IconChevronUpMedium24 = (IconChevronUpMedium24);
22990
+ ;// ./src/lib/viewers/controls/hooks/useClickOutside.ts
22991
+
22992
+ function useClickOutside(element, callback) {
22993
+ __WEBPACK_EXTERNAL_MODULE_react_useEffect__(() => {
22994
+ const handleDocumentClick = _ref => {
22995
+ let {
22996
+ target
22997
+ } = _ref;
22998
+ if (element && element.current && element.current.contains(target)) {
22999
+ return;
23000
+ }
23001
+ callback();
23002
+ };
23003
+ document.addEventListener('click', handleDocumentClick);
23004
+ return () => {
23005
+ document.removeEventListener('click', handleDocumentClick);
23006
+ };
23007
+ }, [callback, element]);
23008
+ }
22978
23009
  ;// ./src/lib/viewers/controls/color-picker/ColorPickerControl.scss
22979
23010
  // extracted by mini-css-extract-plugin
22980
23011
 
@@ -22990,6 +23021,8 @@ function ColorPickerControl_objectWithoutPropertiesLoose(r, e) { if (null == r)
22990
23021
 
22991
23022
 
22992
23023
 
23024
+
23025
+
22993
23026
  function ColorPickerControl(_ref) {
22994
23027
  let {
22995
23028
  activeColor = __WEBPACK_EXTERNAL_MODULE_box_ui_elements_es_styles_variables_c815ce80_bdlBoxBlue__,
@@ -22997,56 +23030,47 @@ function ColorPickerControl(_ref) {
22997
23030
  onColorSelect
22998
23031
  } = _ref,
22999
23032
  rest = ColorPickerControl_objectWithoutProperties(_ref, ColorPickerControl_excluded);
23000
- const paletteRef = __WEBPACK_EXTERNAL_MODULE_react_default__.useRef(null);
23001
- const toggleRef = __WEBPACK_EXTERNAL_MODULE_react_default__.useRef(null);
23033
+ const controlRef = __WEBPACK_EXTERNAL_MODULE_react_default__.useRef(null);
23034
+ const {
23035
+ setIsForced
23036
+ } = __WEBPACK_EXTERNAL_MODULE_react_default__.useContext(ControlsLayerContext);
23002
23037
  const [isColorPickerToggled, setIsColorPickerToggled] = __WEBPACK_EXTERNAL_MODULE_react_default__.useState(false);
23003
23038
  const handleSelect = color => {
23004
23039
  setIsColorPickerToggled(false);
23005
23040
  onColorSelect(color);
23006
23041
  };
23007
- const handleBlur = _ref2 => {
23008
- let {
23009
- relatedTarget
23010
- } = _ref2;
23011
- const {
23012
- current: paletteEl
23013
- } = paletteRef;
23014
- const {
23015
- current: toggleEl
23016
- } = toggleRef;
23017
- // IE11 does not have relatedTarget but update activeElement before blur
23018
- const nextTarget = relatedTarget || document.activeElement;
23019
- const nextEl = nextTarget ? nextTarget : null;
23020
- const isNextInPalette = paletteEl && paletteEl.contains(nextEl);
23021
- const isNextToggle = toggleEl && toggleEl === nextEl;
23022
- if (isNextInPalette || isNextToggle) {
23023
- return;
23024
- }
23025
- setIsColorPickerToggled(false);
23026
- };
23027
23042
  const handleClick = () => setIsColorPickerToggled(!isColorPickerToggled);
23028
- const handleMouseDown = event => {
23029
- if (event.currentTarget.focus) {
23030
- // Buttons do not receive focus in Firefox and Safari on MacOS
23031
- event.currentTarget.focus();
23032
- // When focus is called within a mousedown handler,
23033
- // preventDefault must be called to keep the focus from leaving the target
23034
- event.preventDefault();
23043
+ useClickOutside(controlRef, () => setIsColorPickerToggled(false));
23044
+ __WEBPACK_EXTERNAL_MODULE_react_default__.useEffect(() => {
23045
+ if (!isColorPickerToggled) {
23046
+ return undefined;
23035
23047
  }
23036
- };
23048
+ const handleKeyDown = event => {
23049
+ if (event.key === 'Escape') {
23050
+ setIsColorPickerToggled(false);
23051
+ }
23052
+ };
23053
+ document.addEventListener('keydown', handleKeyDown);
23054
+ return () => document.removeEventListener('keydown', handleKeyDown);
23055
+ }, [isColorPickerToggled]);
23056
+
23057
+ // Pin the auto-hiding ControlsLayer open while the palette is up so its ~2s hide timer can't tear the
23058
+ // palette down when the cursor merely drifts off the swatches; release the pin on close or unmount.
23059
+ __WEBPACK_EXTERNAL_MODULE_react_default__.useEffect(() => {
23060
+ setIsForced(isColorPickerToggled);
23061
+ return () => setIsForced(false);
23062
+ }, [isColorPickerToggled, setIsForced]);
23037
23063
  return /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement("div", {
23064
+ ref: controlRef,
23038
23065
  className: "bp-ColorPickerControl",
23039
23066
  "data-testid": "bp-color-picker-control"
23040
23067
  }, /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement("button", ColorPickerControl_extends({
23041
- ref: toggleRef,
23042
23068
  className: classnames_default()('bp-ColorPickerControl-toggle', {
23043
23069
  'bp-is-active': isColorPickerToggled
23044
23070
  }),
23045
23071
  "data-resin-target": "colorPickerOpen",
23046
23072
  "data-testid": "bp-ColorPickerControl-toggle",
23047
- onBlur: handleBlur,
23048
23073
  onClick: handleClick,
23049
- onMouseDown: handleMouseDown,
23050
23074
  type: "button"
23051
23075
  }, rest), /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement("div", {
23052
23076
  className: "bp-ColorPickerControl-toggle-background"
@@ -23056,7 +23080,6 @@ function ColorPickerControl(_ref) {
23056
23080
  backgroundColor: activeColor
23057
23081
  }
23058
23082
  })), isColorPickerToggled ? /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(icons_IconChevronUpMedium24, null) : /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(icons_IconChevronDownMedium24, null)), /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement("div", {
23059
- ref: paletteRef,
23060
23083
  className: classnames_default()('bp-ColorPickerControl-palette', {
23061
23084
  'bp-is-open': isColorPickerToggled
23062
23085
  }),
@@ -23064,7 +23087,6 @@ function ColorPickerControl(_ref) {
23064
23087
  }, /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(ColorPickerPalette, {
23065
23088
  colors: colors,
23066
23089
  "data-testid": "bp-ColorPickerPalette",
23067
- onBlur: handleBlur,
23068
23090
  onSelect: handleSelect
23069
23091
  })));
23070
23092
  }
@@ -32056,25 +32078,6 @@ function SettingsList(props, ref) {
32056
32078
  }));
32057
32079
  }
32058
32080
  /* harmony default export */ const settings_SettingsList = (/*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.forwardRef(SettingsList));
32059
- ;// ./src/lib/viewers/controls/hooks/useClickOutside.ts
32060
-
32061
- function useClickOutside(element, callback) {
32062
- __WEBPACK_EXTERNAL_MODULE_react_useEffect__(() => {
32063
- const handleDocumentClick = _ref => {
32064
- let {
32065
- target
32066
- } = _ref;
32067
- if (element && element.current && element.current.contains(target)) {
32068
- return;
32069
- }
32070
- callback();
32071
- };
32072
- document.addEventListener('click', handleDocumentClick);
32073
- return () => {
32074
- document.removeEventListener('click', handleDocumentClick);
32075
- };
32076
- }, [callback, element]);
32077
- }
32078
32081
  ;// ./src/lib/viewers/controls/settings/SettingsDropdown.scss
32079
32082
  // extracted by mini-css-extract-plugin
32080
32083
 
@@ -39702,7 +39705,6 @@ function GalleryGrid_toPrimitive(t, r) { if ("object" != typeof t || !t) return
39702
39705
 
39703
39706
 
39704
39707
  const GALLERY_THUMB_MAX_WIDTH = 440;
39705
- const INITIAL_LOAD_BUFFER = 40;
39706
39708
  const CONCURRENT_LOADS = 4;
39707
39709
  const SCROLL_THROTTLE_MS = 200;
39708
39710
  const GalleryTile = /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.memo(function GalleryTile(_ref) {
@@ -39711,8 +39713,13 @@ const GalleryTile = /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.memo(
39711
39713
  isFocused,
39712
39714
  imageSrc,
39713
39715
  onClick,
39714
- onFocus
39716
+ onFocus,
39717
+ pageRatio
39715
39718
  } = _ref;
39719
+ // Match the placeholder to the real page shape so tiles don't resize (reflow/jitter) as images arrive
39720
+ const placeholderStyle = pageRatio ? {
39721
+ paddingTop: `${100 / pageRatio}%`
39722
+ } : undefined;
39716
39723
  return (
39717
39724
  /*#__PURE__*/
39718
39725
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events
@@ -39731,7 +39738,8 @@ const GalleryTile = /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.memo(
39731
39738
  alt: "",
39732
39739
  src: imageSrc
39733
39740
  }) : /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement("span", {
39734
- className: "bp-gallery-tile-placeholder"
39741
+ className: "bp-gallery-tile-placeholder",
39742
+ style: placeholderStyle
39735
39743
  }))
39736
39744
  );
39737
39745
  });
@@ -39739,6 +39747,7 @@ function GalleryGrid(_ref2) {
39739
39747
  let {
39740
39748
  pageCount,
39741
39749
  currentPage,
39750
+ getPageRatio,
39742
39751
  onClose,
39743
39752
  onFocusChange,
39744
39753
  onPageNavigate,
@@ -39746,20 +39755,53 @@ function GalleryGrid(_ref2) {
39746
39755
  } = _ref2;
39747
39756
  const [loadedImages, setLoadedImages] = __WEBPACK_EXTERNAL_MODULE_react_useState__({});
39748
39757
  const [focusedPage, setFocusedPage] = __WEBPACK_EXTERNAL_MODULE_react_useState__(currentPage);
39758
+ const [pageRatio, setPageRatio] = __WEBPACK_EXTERNAL_MODULE_react_useState__(null);
39759
+ // Topmost visible page — the scroll anchor used to restore the viewed area after a reflow.
39760
+ const anchorPageRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__(currentPage);
39749
39761
  const gridRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__(null);
39750
39762
  const queueRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__([]);
39751
39763
  const isProcessingRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__(false);
39752
39764
  const isMountedRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__(true);
39753
- const initialLoadDoneRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__(false);
39754
- const initialLoadCountRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__(0);
39765
+ const inFlightRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__(new Set());
39766
+ const byDistanceFromAnchor = (a, b) => Math.abs(a - anchorPageRef.current) - Math.abs(b - anchorPageRef.current);
39767
+
39768
+ // Unloaded tiles within viewport + buffer, on-screen tiles first so the user never
39769
+ // watches a visible hole while off-screen pages load. Pages already being rendered
39770
+ // (in flight) are excluded so re-derives can't waste loader slots on them.
39771
+ function getUnloadedNearViewport() {
39772
+ const grid = gridRef.current;
39773
+ if (!grid) return [];
39774
+ const {
39775
+ scrollTop,
39776
+ clientHeight
39777
+ } = grid;
39778
+ const bufferZone = clientHeight * 3;
39779
+ const viewportBottom = scrollTop + clientHeight;
39780
+ const visibleUnloaded = [];
39781
+ const bufferedUnloaded = [];
39782
+ const tiles = grid.querySelectorAll('[data-page]');
39783
+ tiles.forEach(tile => {
39784
+ const el = tile;
39785
+ if (!el.dataset.page) return;
39786
+ const pageNum = parseInt(el.dataset.page, 10);
39787
+ if (inFlightRef.current.has(pageNum) || el.querySelector('img')) return;
39788
+ const tileTop = el.offsetTop;
39789
+ const tileBottom = tileTop + el.offsetHeight;
39790
+ if (tileBottom > scrollTop && tileTop < viewportBottom) {
39791
+ visibleUnloaded.push(pageNum);
39792
+ } else if (tileBottom > scrollTop - bufferZone && tileTop < viewportBottom + bufferZone) {
39793
+ bufferedUnloaded.push(pageNum);
39794
+ }
39795
+ });
39796
+ return [...visibleUnloaded.sort(byDistanceFromAnchor), ...bufferedUnloaded.sort(byDistanceFromAnchor)];
39797
+ }
39755
39798
  function processQueue() {
39756
39799
  if (!isMountedRef.current || !thumbnail || queueRef.current.length === 0) {
39757
39800
  isProcessingRef.current = false;
39758
39801
  return;
39759
39802
  }
39760
- const batchSize = initialLoadDoneRef.current ? CONCURRENT_LOADS : 1;
39761
- const batch = queueRef.current.slice(0, batchSize);
39762
- queueRef.current = queueRef.current.slice(batchSize);
39803
+ const batch = queueRef.current.slice(0, CONCURRENT_LOADS);
39804
+ queueRef.current = queueRef.current.slice(CONCURRENT_LOADS);
39763
39805
  requestAnimationFrame(() => {
39764
39806
  if (!isMountedRef.current || !thumbnail) {
39765
39807
  isProcessingRef.current = false;
@@ -39773,21 +39815,25 @@ function GalleryGrid(_ref2) {
39773
39815
  isProcessingRef.current = false;
39774
39816
  return;
39775
39817
  }
39776
- if (!initialLoadDoneRef.current) {
39777
- initialLoadCountRef.current += batch.length;
39778
- if (initialLoadCountRef.current >= INITIAL_LOAD_BUFFER) {
39779
- initialLoadDoneRef.current = true;
39780
- isProcessingRef.current = false;
39781
- return;
39782
- }
39818
+
39819
+ // Keep only what the viewport + buffer still needs, then go idle. This prune is
39820
+ // what makes loading lazy (the mount queue starts as the whole document); the
39821
+ // scroll/resize handlers re-derive what to load on demand after that.
39822
+ const remaining = new Set(queueRef.current);
39823
+ queueRef.current = getUnloadedNearViewport().filter(p => remaining.has(p));
39824
+ if (queueRef.current.length === 0) {
39825
+ isProcessingRef.current = false;
39826
+ return;
39783
39827
  }
39784
39828
  processQueue();
39785
39829
  };
39786
39830
  batch.forEach(pageNum => {
39831
+ inFlightRef.current.add(pageNum);
39787
39832
  thumbnail.createThumbnailImage(pageNum - 1, {
39788
39833
  createImgTag: true,
39789
39834
  thumbMaxWidth: GALLERY_THUMB_MAX_WIDTH
39790
39835
  }).then(imageEl => {
39836
+ inFlightRef.current.delete(pageNum);
39791
39837
  if (isMountedRef.current && imageEl && imageEl.src) {
39792
39838
  setLoadedImages(prev => GalleryGrid_objectSpread(GalleryGrid_objectSpread({}, prev), {}, {
39793
39839
  [pageNum]: imageEl.src
@@ -39795,6 +39841,7 @@ function GalleryGrid(_ref2) {
39795
39841
  }
39796
39842
  onComplete();
39797
39843
  }).catch(() => {
39844
+ inFlightRef.current.delete(pageNum);
39798
39845
  onComplete();
39799
39846
  });
39800
39847
  });
@@ -39806,39 +39853,35 @@ function GalleryGrid(_ref2) {
39806
39853
  processQueue();
39807
39854
  }
39808
39855
  }
39809
- function getUnloadedNearViewport() {
39810
- const grid = gridRef.current;
39811
- if (!grid) return [];
39812
- const {
39813
- scrollTop,
39814
- clientHeight
39815
- } = grid;
39816
- const bufferZone = clientHeight * 3;
39817
- const viewportTop = scrollTop - bufferZone;
39818
- const viewportBottom = scrollTop + clientHeight + bufferZone;
39819
- const nearbyUnloaded = [];
39820
- const tiles = grid.querySelectorAll('[data-page]');
39821
- tiles.forEach(tile => {
39822
- const el = tile;
39823
- if (!el.dataset.page) return;
39824
- const pageNum = parseInt(el.dataset.page, 10);
39825
- const tileTop = el.offsetTop;
39826
- const tileBottom = tileTop + el.offsetHeight;
39827
- if (tileBottom > viewportTop && tileTop < viewportBottom && !el.querySelector('img')) {
39828
- nearbyUnloaded.push(pageNum);
39829
- }
39830
- });
39831
- return nearbyUnloaded;
39832
- }
39833
39856
  const handleScrollRef = __WEBPACK_EXTERNAL_MODULE_react_useRef__(throttle_default()(() => {
39834
39857
  const nearbyUnloaded = getUnloadedNearViewport();
39835
39858
  if (nearbyUnloaded.length > 0) {
39836
- const currentQueue = queueRef.current;
39837
- const toAdd = nearbyUnloaded.filter(p => !currentQueue.includes(p));
39838
- queueRef.current = [...toAdd, ...currentQueue];
39859
+ const currentQueue = new Set(queueRef.current);
39860
+ const toAdd = nearbyUnloaded.filter(p => !currentQueue.has(p));
39861
+ queueRef.current = [...toAdd, ...queueRef.current];
39839
39862
  startProcessing();
39840
39863
  }
39841
39864
  }, SCROLL_THROTTLE_MS));
39865
+
39866
+ // Unthrottled so the anchor is accurate the instant a reflow (e.g. fullscreen) happens.
39867
+ const handleScroll = __WEBPACK_EXTERNAL_MODULE_react_useCallback__(() => {
39868
+ const grid = gridRef.current;
39869
+ if (grid) {
39870
+ const tiles = grid.querySelectorAll('[data-page]');
39871
+ for (let i = 0; i < tiles.length; i += 1) {
39872
+ if (tiles[i].offsetTop + tiles[i].offsetHeight > grid.scrollTop) {
39873
+ const {
39874
+ page
39875
+ } = tiles[i].dataset;
39876
+ if (page) {
39877
+ anchorPageRef.current = parseInt(page, 10);
39878
+ }
39879
+ break;
39880
+ }
39881
+ }
39882
+ }
39883
+ handleScrollRef.current();
39884
+ }, []);
39842
39885
  __WEBPACK_EXTERNAL_MODULE_react_useEffect__(() => {
39843
39886
  const throttledScroll = handleScrollRef.current;
39844
39887
  if (gridRef.current) {
@@ -39856,7 +39899,6 @@ function GalleryGrid(_ref2) {
39856
39899
  const cached = thumbnail.getImageFromCache(i - 1);
39857
39900
  if (cached && cached.image && cached.image.src) {
39858
39901
  initialImages[i] = cached.image.src;
39859
- initialLoadCountRef.current += 1;
39860
39902
  } else {
39861
39903
  uncachedPages.push(i);
39862
39904
  }
@@ -39868,8 +39910,12 @@ function GalleryGrid(_ref2) {
39868
39910
  queueRef.current = uncachedPages;
39869
39911
  thumbnail.init().then(() => {
39870
39912
  if (!isMountedRef.current) return;
39871
- isProcessingRef.current = true;
39872
- processQueue();
39913
+ if (typeof thumbnail.pageRatio === 'number' && thumbnail.pageRatio > 0) {
39914
+ setPageRatio(thumbnail.pageRatio);
39915
+ }
39916
+ // Guarded start: the mount scrollIntoView can fire the scroll handler first, and a
39917
+ // second unguarded pump would double the concurrent thumbnail renders.
39918
+ startProcessing();
39873
39919
  });
39874
39920
  return () => {
39875
39921
  isMountedRef.current = false;
@@ -39879,6 +39925,31 @@ function GalleryGrid(_ref2) {
39879
39925
  };
39880
39926
  // eslint-disable-next-line react-hooks/exhaustive-deps
39881
39927
  }, []);
39928
+
39929
+ // Keep the viewed area in place when the grid reflows (fullscreen enter/exit, window resize):
39930
+ // the scroll offset is preserved while tile positions shift, drifting the view otherwise.
39931
+ __WEBPACK_EXTERNAL_MODULE_react_useEffect__(() => {
39932
+ const grid = gridRef.current;
39933
+ if (!grid) return undefined;
39934
+ let isFirstObservation = true;
39935
+ const observer = new ResizeObserver(() => {
39936
+ if (isFirstObservation) {
39937
+ isFirstObservation = false; // ResizeObserver always fires once on observe()
39938
+ return;
39939
+ }
39940
+ const tile = grid.querySelector(`[data-page="${anchorPageRef.current}"]`);
39941
+ if (tile) {
39942
+ tile.scrollIntoView({
39943
+ block: 'start'
39944
+ });
39945
+ }
39946
+ // A larger viewport (fullscreen enter, window resize) can reveal unloaded tiles
39947
+ // without any scroll event, so run the same catch-up the scroll handler does.
39948
+ handleScrollRef.current();
39949
+ });
39950
+ observer.observe(grid);
39951
+ return () => observer.disconnect();
39952
+ }, []);
39882
39953
  const focusTile = __WEBPACK_EXTERNAL_MODULE_react_useCallback__(pageNum => {
39883
39954
  const grid = gridRef.current;
39884
39955
  if (!grid) return;
@@ -39953,7 +40024,8 @@ function GalleryGrid(_ref2) {
39953
40024
  isFocused: i === focusedPage,
39954
40025
  onClick: handleTileClick,
39955
40026
  onFocus: handleTileFocus,
39956
- pageNum: i
40027
+ pageNum: i,
40028
+ pageRatio: getPageRatio && getPageRatio(i) || pageRatio
39957
40029
  }));
39958
40030
  }
39959
40031
  return /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement("div", {
@@ -39962,7 +40034,7 @@ function GalleryGrid(_ref2) {
39962
40034
  className: "bp-gallery-grid",
39963
40035
  onFocus: handleGridFocus,
39964
40036
  onKeyDown: handleGridKeyDown,
39965
- onScroll: handleScrollRef.current,
40037
+ onScroll: handleScroll,
39966
40038
  role: "listbox",
39967
40039
  tabIndex: -1
39968
40040
  }, tiles);
@@ -40078,6 +40150,20 @@ class GalleryController {
40078
40150
  GalleryController_defineProperty(this, "handleFocusChange", pageNum => {
40079
40151
  this.galleryFocusedPage = pageNum;
40080
40152
  });
40153
+ // Per-page width:height ratio from PDF.js page metadata; null until the page's metadata
40154
+ // is fetched (see PdfViewerLike.getPageView), which matters for mixed-size docs.
40155
+ GalleryController_defineProperty(this, "getPageRatio", pageNum => {
40156
+ const pdfViewer = this.getPdfViewer();
40157
+ const pageView = pdfViewer.getPageView && pdfViewer.getPageView(pageNum - 1);
40158
+ if (!pageView || !pageView.pdfPage || !pageView.viewport) {
40159
+ return null;
40160
+ }
40161
+ const {
40162
+ width,
40163
+ height
40164
+ } = pageView.viewport;
40165
+ return width > 0 && height > 0 ? width / height : null;
40166
+ });
40081
40167
  this.containerEl = opts.containerEl;
40082
40168
  this.features = opts.features;
40083
40169
  this.getPdfViewer = opts.getPdfViewer;
@@ -40101,6 +40187,27 @@ class GalleryController {
40101
40187
  this.toggle();
40102
40188
  return true;
40103
40189
  }
40190
+
40191
+ /**
40192
+ * Redirects an arrow key pressed outside the grid (e.g. focus parked on a toggle after
40193
+ * toggling fullscreen) back into it: refocuses the selected tile and replays the key so
40194
+ * the first press navigates, like the thumbnail sidebar. Keys pressed inside the grid
40195
+ * never arrive here — GalleryGrid stops propagation on every arrow it handles.
40196
+ */
40197
+ handleArrowKey(key) {
40198
+ if (!this.isGalleryOpen || !key.startsWith('Arrow')) return;
40199
+ const grid = this.galleryEl;
40200
+ if (!grid) return;
40201
+ const tile = grid.querySelector('[role="option"][tabindex="0"]');
40202
+ if (tile) {
40203
+ tile.focus();
40204
+ tile.dispatchEvent(new KeyboardEvent('keydown', {
40205
+ key,
40206
+ bubbles: true,
40207
+ cancelable: true
40208
+ }));
40209
+ }
40210
+ }
40104
40211
  handleRotate() {
40105
40212
  if (this.galleryThumbnail) {
40106
40213
  this.galleryThumbnail.destroy();
@@ -40159,6 +40266,7 @@ class GalleryController {
40159
40266
  this.galleryFocusedPage = pdfViewer.currentPageNumber;
40160
40267
  this.galleryRoot.render( /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(GalleryGrid, {
40161
40268
  currentPage: pdfViewer.currentPageNumber,
40269
+ getPageRatio: this.getPageRatio,
40162
40270
  onClose: this.toggle,
40163
40271
  onFocusChange: this.handleFocusChange,
40164
40272
  onPageNavigate: this.handleGalleryNavigate,
@@ -42375,8 +42483,10 @@ class DocBaseViewer extends viewers_BaseViewer {
42375
42483
  }
42376
42484
 
42377
42485
  // Swallow page-nav keys so they can't flip the doc page underneath the gallery
42378
- // or trigger the host's collection navigation.
42486
+ // or trigger the host's collection navigation. Arrows pressed outside the grid
42487
+ // are redirected into it so the first press navigates the tiles.
42379
42488
  if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', '[', ']'].includes(key)) {
42489
+ this.galleryController.handleArrowKey(key);
42380
42490
  return true;
42381
42491
  }
42382
42492
  }
@@ -42930,7 +43040,7 @@ class DocBaseViewer extends viewers_BaseViewer {
42930
43040
  const canDownload = checkPermission(this.options.file, PERMISSION_DOWNLOAD);
42931
43041
  const isAnnotationsMode = this.currentAnnotatorViewMode === ANNOTATOR_VIEW_MODES.ANNOTATIONS;
42932
43042
  const canRotate = this.featureEnabled('rotate.enabled');
42933
- const canGallery = this.galleryController.canRender(this.pdfViewer.pagesCount);
43043
+ const canGallery = !this.isMobile && this.galleryController.canRender(this.pdfViewer.pagesCount);
42934
43044
  this.controls.render( /*#__PURE__*/__WEBPACK_EXTERNAL_MODULE_react_default__.createElement(DocControls, {
42935
43045
  annotationColor: this.annotationModule.getColor(),
42936
43046
  annotationMode: this.annotationControlsFSM.getMode(),
@@ -42978,7 +43088,8 @@ class DocBaseViewer extends viewers_BaseViewer {
42978
43088
  this.docEl.addEventListener('touchmove', this.pinchToZoomChangeHandler);
42979
43089
  this.docEl.addEventListener('touchend', this.pinchToZoomEndHandler);
42980
43090
  }
42981
- if (this.featureEnabled('pinchToZoom.enabled')) {
43091
+ const disableMobileWheelZoom = new URLSearchParams(window.location.search).has('disableMobileWheelZoom');
43092
+ if (this.featureEnabled('pinchToZoom.enabled') && !(this.isMobile && disableMobileWheelZoom)) {
42982
43093
  this.docEl.addEventListener('wheel', this.trackpadPinchToZoomHandler, {
42983
43094
  passive: false
42984
43095
  });
@@ -43000,7 +43111,8 @@ class DocBaseViewer extends viewers_BaseViewer {
43000
43111
  this.docEl.removeEventListener('touchmove', this.pinchToZoomChangeHandler);
43001
43112
  this.docEl.removeEventListener('touchend', this.pinchToZoomEndHandler);
43002
43113
  }
43003
- if (this.featureEnabled('pinchToZoom.enabled')) {
43114
+ const disableMobileWheelZoom = new URLSearchParams(window.location.search).has('disableMobileWheelZoom');
43115
+ if (this.featureEnabled('pinchToZoom.enabled') && !(this.isMobile && disableMobileWheelZoom)) {
43004
43116
  this.docEl.removeEventListener('wheel', this.trackpadPinchToZoomHandler);
43005
43117
  }
43006
43118
  }
@@ -43199,6 +43311,10 @@ class DocBaseViewer extends viewers_BaseViewer {
43199
43311
  if (this.annotator && this.areNewAnnotationsEnabled() && this.options.enableAnnotationsDiscoverability) {
43200
43312
  this.annotator.toggleAnnotationMode(AnnotationMode.REGION);
43201
43313
  }
43314
+
43315
+ // Restore focus to the toggle, the browser otherwise drops focus to the body on exit,
43316
+ // and keyboard input (e.g. gallery arrow keys) no longer reach the viewer
43317
+ this.fullscreenToggleEl?.focus?.();
43202
43318
  }
43203
43319
 
43204
43320
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "box-content-preview",
3
- "version": "3.64.0",
3
+ "version": "3.66.0",
4
4
  "description": "Box Content Preview UI Element",
5
5
  "author": "Box (https://www.box.com/)",
6
6
  "license": "SEE LICENSE IN LICENSE",