box-content-preview 3.98.0 → 3.100.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 +7 -7
- package/dist/lib/index.css +2 -2
- package/dist/lib/index.js +270 -65
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
[](https://mergify.io)
|
|
3
3
|
[](https://github.com/prettier/prettier)
|
|
4
4
|
[](https://travis-ci.org/box/box-content-preview)
|
|
5
|
-
[](https://github.com/box/box-content-preview)
|
|
6
6
|
[](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.
|
|
25
|
+
- Version: v3.100.0
|
|
26
26
|
- Locale: en-US
|
|
27
27
|
|
|
28
|
-
https://cdn01.boxcdn.net/platform/preview/3.
|
|
29
|
-
https://cdn01.boxcdn.net/platform/preview/3.
|
|
28
|
+
https://cdn01.boxcdn.net/platform/preview/3.100.0/en-US/preview.js
|
|
29
|
+
https://cdn01.boxcdn.net/platform/preview/3.100.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.
|
|
55
|
+
<script src="https://cdn01.boxcdn.net/platform/preview/3.100.0/en-US/preview.js"></script>
|
|
56
56
|
<link
|
|
57
57
|
rel="stylesheet"
|
|
58
|
-
href="https://cdn01.boxcdn.net/platform/preview/3.
|
|
58
|
+
href="https://cdn01.boxcdn.net/platform/preview/3.100.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.
|
|
79
|
+
- Check out a specific version with `git checkout v3.100.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`
|
package/dist/lib/index.css
CHANGED
|
@@ -62,8 +62,8 @@
|
|
|
62
62
|
.bp-WaveformCommentMarkers{position:absolute;top:-2px;right:0;left:0;z-index:4;box-sizing:border-box;height:24px;padding:0 60px;overflow:visible;pointer-events:auto}.bp-WaveformCommentMarkers--zoomed,.bp-WaveformCommentMarkers--tape{padding:0;overflow:clip visible}.bp-WaveformCommentMarkers--tape{top:auto;bottom:100%;margin-bottom:12px}.bp-WaveformCommentMarkers-track{position:relative;width:100%;height:100%;overflow:visible}.bp-WaveformCommentMarkers--zoomed .bp-WaveformCommentMarkers-track,.bp-WaveformCommentMarkers--tape .bp-WaveformCommentMarkers-track{overflow:clip visible}.bp-WaveformCommentMarkers-marker{position:absolute;top:50%;z-index:1;display:flex;align-items:center;justify-content:center;width:auto;height:auto;padding:0;background:none;border:0;border-radius:50%;transform:translate(-50%, -50%);cursor:pointer;appearance:none;pointer-events:auto;overflow:visible;outline:none;transition:box-shadow 150ms}.bp-WaveformCommentMarkers-marker:focus,.bp-WaveformCommentMarkers-marker:focus-visible{outline:none}.bp-WaveformCommentMarkers-marker .bp-MarkerAvatar{overflow:visible;isolation:isolate;cursor:pointer}.bp-WaveformCommentMarkers-marker .bp-MarkerAvatar img{cursor:pointer}.bp-WaveformCommentMarkers-marker .bp-MarkerAvatar::after{position:absolute;z-index:1;inset:0;background:#000;border-radius:50%;opacity:.4;pointer-events:none;content:"";transition:opacity 150ms}.bp-WaveformCommentMarkers-marker>.bp-MarkerAvatar{position:relative;bottom:auto;left:auto;transform:none;transform-origin:center center}.bp-WaveformCommentMarkers-marker .bp-MarkerAvatar:not(.bp-MarkerAvatarStack-overflowBadge),.bp-WaveformCommentMarkers-marker .bp-MarkerAvatarStack .bp-MarkerAvatar:not(.bp-MarkerAvatarStack-overflowBadge){background-color:#000}.bp-WaveformCommentMarkers-marker .bp-MarkerAvatarStack{position:relative;bottom:auto;left:auto;transform:none}.bp-WaveformCommentMarkers-marker--group{width:auto}.bp-WaveformView:hover~.bp-WaveformCommentMarkers .bp-MarkerAvatar::after,.bp-WaveformCommentMarkers:hover .bp-MarkerAvatar::after,.bp-WaveformCommentMarkers:has(:focus-visible) .bp-MarkerAvatar::after,.bp-WaveformCommentMarkers-marker:not(.bp-WaveformCommentMarkers-marker--group).bp-WaveformCommentMarkers-marker--selected .bp-MarkerAvatar::after,.bp-WaveformCommentMarkers .bp-MarkerAvatarStack-item--selected .bp-MarkerAvatar::after{opacity:0}.bp-WaveformCommentMarkers-marker--selected{z-index:3}.bp-WaveformCommentMarkers-marker:hover,.bp-WaveformCommentMarkers-marker:focus-within{z-index:4}.bp-WaveformCommentMarkers .bp-MarkerAvatarStack-item{cursor:pointer;transition:margin 150ms}.bp-WaveformCommentMarkers .bp-MarkerAvatarStack-item:hover,.bp-WaveformCommentMarkers .bp-MarkerAvatarStack-item:focus-visible{z-index:3}@media(prefers-reduced-motion: reduce){.bp-WaveformCommentMarkers-marker,.bp-WaveformCommentMarkers .bp-MarkerAvatarStack-item,.bp-WaveformCommentMarkers-marker .bp-MarkerAvatar::after{transition:none}}
|
|
63
63
|
.bp-WaveformGeneratingIndicator{display:flex;gap:4px;align-items:center;height:48px;padding:8px 16px 8px 12px;pointer-events:none}.bp-WaveformGeneratingIndicator-bars{display:flex;flex:0 0 24px;align-items:center;justify-content:center;width:24px;height:24px}.bp-WaveformGeneratingIndicator-bar{width:2px;height:10px;background:rgba(255,255,255,.3);border-radius:6px;animation:bp-WaveformGeneratingIndicator-pulse .66s ease-in-out infinite}.bp-WaveformGeneratingIndicator-bar:nth-child(2){margin-left:2px;animation-delay:.1s}.bp-WaveformGeneratingIndicator-bar:last-child{margin-left:2px;animation-delay:.2s}.bp-WaveformGeneratingIndicator-label{color:#fff;font-weight:normal;font-size:14px;line-height:22px;white-space:nowrap}@keyframes bp-WaveformGeneratingIndicator-pulse{0%,80%,100%{background:rgba(255,255,255,.3);transform:scaleY(1.2)}40%{background:#fff;transform:scaleY(1.6)}}@media(prefers-reduced-motion: reduce){.bp-WaveformGeneratingIndicator-bar{animation:none;background:#fff;transform:none}}
|
|
64
64
|
.bp-WaveformShuttle{position:absolute;top:48px;left:50%;z-index:6;display:flex;gap:4px;align-items:center;height:48px;padding:8px 16px;color:#fff;background:rgba(255,255,255,.1);border-radius:24px;box-shadow:0 2px 12px rgba(0,0,0,.08);transform:translateX(-50%);backdrop-filter:blur(60px);pointer-events:none;-webkit-user-select:none;user-select:none}.bp-WaveformShuttle-glyph{display:block;flex:0 0 auto;width:19px;height:11px}.bp-WaveformShuttle.bp-is-reverse .bp-WaveformShuttle-glyph{transform:scaleX(-1)}.bp-WaveformShuttle-rate{font-weight:500;font-size:14px;line-height:22px;white-space:nowrap}
|
|
65
|
-
.bp-WaveformRange{position:absolute;inset:0;z-index:2;pointer-events:none}.bp-WaveformRange-region{position:absolute;top:50%;box-sizing:border-box;height:150px;pointer-events:none;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.4);border-radius:10px;box-shadow:0 0 0 1px #222;transform:translateY(-50%);transition:border-width 100ms ease,border-color 100ms ease}.bp-WaveformRange--swiping .bp-WaveformRange-region{visibility:hidden}.bp-WaveformRange--highlight .bp-WaveformRange-region,.bp-WaveformRange:has(.bp-WaveformRange-handle:hover) .bp-WaveformRange-region,.bp-WaveformRange:has(.bp-WaveformRange-handle--dragging) .bp-WaveformRange-region{border-width:2px;border-color:#fff}.bp-WaveformRange-handle{position:absolute;top:50%;z-index:1;width:24px;height:150px;pointer-events:auto;cursor:ew-resize;touch-action:none;transform:translate(-50%, -50%)}.bp-WaveformRange-handle--end{z-index:2}.bp-WaveformRange-handleGrip{position:absolute;top:50%;left:50%;width:8px;height:20px;background:#fff;border:1px solid #222;border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.4);opacity:0;pointer-events:none;transform:translate(-50%, -50%) scale(0.5);transition:opacity 100ms ease-in,transform 100ms ease-in}.bp-WaveformRange-handle:hover .bp-WaveformRange-handleGrip,.bp-WaveformRange-handle:focus-visible .bp-WaveformRange-handleGrip,.bp-WaveformRange-handle--dragging .bp-WaveformRange-handleGrip{opacity:1;transform:translate(-50%, -50%) scale(1);transition:opacity 150ms ease-out,transform 150ms ease-out}.bp-WaveformRange-comment{position:absolute;top:calc(50% - 75px);z-index:5;display:inline-flex;gap:8px;align-items:center;justify-content:center;box-sizing:border-box;height:48px;padding:8px 14px;color:rgba(255,255,255,.8);font-weight:normal;font-size:14px;font-family:Lato,Arial,sans-serif;line-height:22px;letter-spacing:.1px;white-space:nowrap;background:rgba(0,0,0,.8);border:0;backdrop-filter:blur(12px);border-radius:46px;box-shadow:0 2px 4px 0 rgba(0,0,0,.12);transform:translate(-50%, calc(-100% - 36px));cursor:pointer;appearance:none;pointer-events:auto}.bp-WaveformRange-commentIcon{display:block;flex:0 0 auto;width:20px;height:20px}.bp-WaveformView--tape .bp-WaveformRange-comment{top:calc(50% - (100% + 10px) / 2)}.bp-WaveformRange-tooltip{position:absolute;top:100%;z-index:3;margin-top:4px;pointer-events:none;transform:translateX(-50%)}.bp-WaveformRange-tooltipTime{padding:4px 10px;color:#fff;font-weight:normal;font-size:14px;font-family:Lato,Arial,sans-serif;line-height:20px;letter-spacing:.3px;white-space:nowrap;background:rgba(34,34,34,.92);border:1px solid rgba(255,255,255,.18);border-radius:8px}@media(prefers-reduced-motion: reduce){.bp-WaveformRange-region,.bp-WaveformRange-handleGrip{transition:none}}
|
|
66
|
-
.bp-WaveformView{box-sizing:border-box;width:100%;height:206px;min-height:206px;padding:0 60px;overflow:visible;background:none;-webkit-tap-highlight-color:transparent}.bp-WaveformView.bp-WaveformView--zoomed,.bp-WaveformView.bp-WaveformView--tape{padding:0;touch-action:none}.bp-WaveformView.bp-WaveformView--zoomed .bp-WaveformView-canvas,.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-canvas{overflow:hidden;mask-image:linear-gradient(to right, transparent, #000 92px, #000 calc(100% - 92px), transparent)}.bp-WaveformView.bp-WaveformView--zoomed .bp-WaveformView-canvas>*::part(scroll),.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-canvas>*::part(scroll){overscroll-behavior-x:none}.bp-WaveformView.bp-WaveformView--tape{flex:1 1 auto;height:100%;min-height:0}.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-canvas{height:100%}.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-canvas>*::part(scroll){scrollbar-width:none}.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-playhead,.bp-WaveformView.bp-WaveformView--tape .bp-WaveformRange-region,.bp-WaveformView.bp-WaveformView--tape .bp-WaveformRange-handle{height:calc(100% + 10px)}.bp-WaveformView-track{position:relative;display:flex;align-items:center;width:100%;height:100%;cursor:pointer}.bp-WaveformView-canvas{z-index:0;width:100%;height:140px}.bp-WaveformView-playhead{position:absolute;top:50%;left:0;z-index:1;width:2px;height:150px;pointer-events:none;background:linear-gradient(#2487ff, #006bed);border-radius:1px;box-shadow:0 0 0 1px #222,0 0 10px 0 rgba(36,135,255,.3);transform:translate(-50%, -50%)}.bp-WaveformView-hover{position:absolute;top:100%;z-index:2;margin-top:4px;pointer-events:none;transform:translateX(-50%)}.bp-WaveformView-hover--tape{top:-24px;left:50%;z-index:5;margin-top:0;transform:translate(-50%, -50%)}.bp-WaveformView-hoverTime{padding:4px 10px;color:#fff;font-weight:normal;font-size:14px;font-family:Lato,Arial,sans-serif;line-height:20px;letter-spacing:.3px;white-space:nowrap;background:rgba(34,34,34,.92);border:1px solid rgba(255,255,255,.18);border-radius:8px}.bp-WaveformView--inert{pointer-events:none}.bp-WaveformView--inert .bp-WaveformView-track{cursor:default}.bp-WaveformView--inert .bp-WaveformRange-handle,.bp-WaveformView--inert .bp-WaveformRange-comment{pointer-events:none;cursor:default}.bp-WaveformView:not(:hover) .bp-WaveformRange:not(.bp-WaveformRange--persist){opacity:.4}
|
|
65
|
+
.bp-WaveformRange{position:absolute;inset:0;z-index:2;pointer-events:none}.bp-WaveformRange-region{position:absolute;top:50%;box-sizing:border-box;height:150px;pointer-events:none;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.4);border-radius:10px;box-shadow:0 0 0 1px #222;transform:translateY(-50%);transition:border-width 100ms ease,border-color 100ms ease}.bp-WaveformRange--swiping .bp-WaveformRange-region{visibility:hidden}.bp-WaveformRange--highlight .bp-WaveformRange-region,.bp-WaveformRange:has(.bp-WaveformRange-handle:hover) .bp-WaveformRange-region,.bp-WaveformRange:has(.bp-WaveformRange-handle--dragging) .bp-WaveformRange-region{border-width:2px;border-color:#fff}.bp-WaveformRange-handle{position:absolute;top:50%;z-index:1;width:24px;height:150px;pointer-events:auto;cursor:ew-resize;touch-action:none;transform:translate(-50%, -50%)}.bp-WaveformRange-handle--end{z-index:2}.bp-WaveformRange-handleGrip{position:absolute;top:50%;left:50%;width:8px;height:20px;background:#fff;border:1px solid #222;border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.4);opacity:0;pointer-events:none;transform:translate(-50%, -50%) scale(0.5);transition:opacity 100ms ease-in,transform 100ms ease-in}.bp-WaveformRange-handle:hover .bp-WaveformRange-handleGrip,.bp-WaveformRange-handle:focus-visible .bp-WaveformRange-handleGrip,.bp-WaveformRange-handle--dragging .bp-WaveformRange-handleGrip{opacity:1;transform:translate(-50%, -50%) scale(1);transition:opacity 150ms ease-out,transform 150ms ease-out}.bp-WaveformRange-comment{position:absolute;top:calc(50% - 75px);z-index:5;display:inline-flex;gap:8px;align-items:center;justify-content:center;box-sizing:border-box;height:48px;padding:8px 14px;color:rgba(255,255,255,.8);font-weight:normal;font-size:14px;font-family:Lato,Arial,sans-serif;line-height:22px;letter-spacing:.1px;white-space:nowrap;background:rgba(0,0,0,.8);border:0;backdrop-filter:blur(12px);border-radius:46px;box-shadow:0 2px 4px 0 rgba(0,0,0,.12);transform:translate(-50%, calc(-100% - 36px));cursor:pointer;appearance:none;pointer-events:auto}.bp-WaveformRange-comment--withClear{gap:4px;padding:8px 8px 8px 12px;cursor:default}.bp-WaveformRange-comment--clearOnly{width:48px;height:48px;padding:0;border-radius:50%}.bp-WaveformRange-commentLabel,.bp-WaveformRange-commentClear{display:inline-flex;align-items:center;justify-content:center;padding:0;color:inherit;font:inherit;letter-spacing:inherit;background:transparent;border:0;cursor:pointer;appearance:none}.bp-WaveformRange-commentLabel{gap:8px;height:32px;padding:0 6px}.bp-WaveformRange-commentDivider{flex:0 0 auto;width:1px;height:16px;background:rgba(255,255,255,.4)}.bp-WaveformRange-commentClear{width:32px;height:32px;border-radius:50%}.bp-WaveformRange-commentIcon{display:block;flex:0 0 auto;width:20px;height:20px;fill:currentcolor}.bp-WaveformView--tape .bp-WaveformRange-comment{top:calc(50% - (100% + 10px) / 2)}.bp-WaveformRange-tooltip{position:absolute;top:100%;z-index:3;margin-top:4px;pointer-events:none;transform:translateX(-50%)}.bp-WaveformRange-tooltipTime{padding:4px 10px;color:#fff;font-weight:normal;font-size:14px;font-family:Lato,Arial,sans-serif;line-height:20px;letter-spacing:.3px;white-space:nowrap;background:rgba(34,34,34,.92);border:1px solid rgba(255,255,255,.18);border-radius:8px}@media(prefers-reduced-motion: reduce){.bp-WaveformRange-region,.bp-WaveformRange-handleGrip{transition:none}}
|
|
66
|
+
.bp-WaveformView{box-sizing:border-box;width:100%;height:206px;min-height:206px;padding:0 60px;overflow:visible;background:none;-webkit-tap-highlight-color:transparent}.bp-WaveformView.bp-WaveformView--zoomed,.bp-WaveformView.bp-WaveformView--tape{padding:0;touch-action:none}.bp-WaveformView.bp-WaveformView--zoomed .bp-WaveformView-canvas,.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-canvas{overflow:hidden;mask-image:linear-gradient(to right, transparent, #000 92px, #000 calc(100% - 92px), transparent)}.bp-WaveformView.bp-WaveformView--zoomed .bp-WaveformView-canvas>*::part(scroll),.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-canvas>*::part(scroll){overscroll-behavior-x:none}.bp-WaveformView.bp-WaveformView--tape{flex:1 1 auto;height:100%;min-height:0;-webkit-touch-callout:none}.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-canvas{height:100%}.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-canvas>*::part(scroll){scrollbar-width:none}.bp-WaveformView.bp-WaveformView--tape .bp-WaveformView-playhead,.bp-WaveformView.bp-WaveformView--tape .bp-WaveformRange-region,.bp-WaveformView.bp-WaveformView--tape .bp-WaveformRange-handle{height:calc(100% + 10px)}.bp-WaveformView-track{position:relative;display:flex;align-items:center;width:100%;height:100%;cursor:pointer}.bp-WaveformView-canvas{z-index:0;width:100%;height:140px}.bp-WaveformView-playhead{position:absolute;top:50%;left:0;z-index:1;width:2px;height:150px;pointer-events:none;background:linear-gradient(#2487ff, #006bed);border-radius:1px;box-shadow:0 0 0 1px #222,0 0 10px 0 rgba(36,135,255,.3);transform:translate(-50%, -50%)}.bp-WaveformView-hover{position:absolute;top:100%;z-index:2;margin-top:4px;pointer-events:none;transform:translateX(-50%)}.bp-WaveformView-hover--tape{top:-24px;left:50%;z-index:5;margin-top:0;transform:translate(-50%, -50%)}.bp-WaveformView-hoverTime{padding:4px 10px;color:#fff;font-weight:normal;font-size:14px;font-family:Lato,Arial,sans-serif;line-height:20px;letter-spacing:.3px;white-space:nowrap;background:rgba(34,34,34,.92);border:1px solid rgba(255,255,255,.18);border-radius:8px}.bp-WaveformView--inert{pointer-events:none}.bp-WaveformView--inert .bp-WaveformView-track{cursor:default}.bp-WaveformView--inert .bp-WaveformRange-handle,.bp-WaveformView--inert .bp-WaveformRange-comment,.bp-WaveformView--inert .bp-WaveformRange-commentLabel,.bp-WaveformView--inert .bp-WaveformRange-commentClear{pointer-events:none;cursor:default}.bp-WaveformView:not(:hover) .bp-WaveformRange:not(.bp-WaveformRange--persist){opacity:.4}
|
|
67
67
|
.bp-SliderControl{outline:0;position:relative;cursor:pointer}.bp-SliderControl:focus:not(:disabled){box-shadow:inset 0 0 0 1px rgba(211,211,211,.5),0 1px 2px rgba(0,0,0,.1)}.bp-SliderControl: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-SliderControl:focus:not(:focus-visible){box-shadow:none}.bp-SliderControl-thumb{position:absolute;top:calc(50% - 6px);width:12px;height:12px;margin-left:-6px;background:#0061d5;border:0;border-radius:12px;cursor:pointer}.bp-SliderControl-track{position:absolute;inset:0;height:3px;margin:auto 3px;background:transparent linear-gradient(#fff, #fff) no-repeat center border-box}
|
|
68
68
|
.bp-WaveformZoomControl{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:flex-end;width:48px;height:48px;padding:4px;overflow:hidden;background:rgba(255,255,255,.1);border-radius:32px;box-shadow:0 2px 12px rgba(0,0,0,.08);backdrop-filter:blur(60px);transition:width 150ms ease-out,gap 150ms ease-out}.bp-WaveformZoomControl.bp-has-multiplier{padding:4px 4px 4px 12px}.bp-WaveformZoomControl.bp-has-multiplier:not(.bp-is-open){width:88px}.bp-WaveformZoomControl.bp-is-open{gap:8px;width:207px}.bp-WaveformZoomControl.bp-is-open.bp-has-multiplier{width:264px}.bp-WaveformZoomControl-multiplier{display:flex;flex:0 0 32px;order:-3;align-items:center;justify-content:center;width:32px;height:32px;color:#fff;font-weight:500;font-size:14px;line-height:22px;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap}.bp-WaveformZoomControl-divider{display:none;flex:0 0 1px;order:-2;width:1px;height:28px;background:rgba(255,255,255,.3)}.bp-WaveformZoomControl.bp-is-open.bp-has-multiplier .bp-WaveformZoomControl-divider{display:block}.bp-WaveformZoomControl-flyout{display:flex;flex:0 0 auto;order:-1;gap:8px;align-items:center;width:0;height:40px;overflow:hidden;transition:width 150ms ease-out}.bp-WaveformZoomControl-flyout.bp-is-open{width:151px}.bp-WaveformZoomControl-slider{width:103px;height:8px}.bp-WaveformZoomControl-slider .bp-SliderControl-track{height:8px;margin:0;background:rgba(255,255,255,.3);background-image:none;border-radius:20px}.bp-WaveformZoomControl-slider .bp-SliderControl-track::after{position:absolute;top:0;left:0;width:calc(8px + 95px * var(--bp-zoom-t, 0));height:8px;background:rgba(255,255,255,.9);border-radius:20px;content:""}.bp-WaveformZoomControl-slider .bp-SliderControl-thumb{display:none}.bp-WaveformZoomControl-button{position:relative;z-index:1;display:flex;flex:0 0 40px;align-items:center;justify-content:center;width:40px;height:40px;padding:0;color:#fff;background:transparent;border:0;border-radius:50%;cursor:pointer}.bp-WaveformZoomControl-button[aria-disabled=true]{cursor:default;opacity:.3}.bp-WaveformZoomControl-button svg{width:20px;height:20px;padding:0}@media(prefers-reduced-motion: reduce){.bp-WaveformZoomControl,.bp-WaveformZoomControl-flyout{transition:none}}
|
|
69
69
|
.bp-MP3ControlsRoot:has(.bp-MP3ControlsV2){position:absolute;inset:0;width:100%;height:100%;transform:none;pointer-events:none}.bp-MP3ControlsV2{--bp-waveform-bar-min: 140px;position:relative;width:100%;max-width:none;height:100%;background:transparent;pointer-events:none}.bp-MP3ControlsV2-stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:0;pointer-events:none}.bp-MP3ControlsV2-stage .bp-WaveformView,.bp-MP3ControlsV2-stage .bp-MP3ControlsV2-waveform,.bp-MP3ControlsV2-stage .bp-WaveformCommentMarkers{pointer-events:auto}.bp-MP3ControlsV2-waveform{position:relative;width:100%;overflow:visible}.bp-MP3ControlsV2-stage:has(.bp-WaveformView--tape) .bp-MP3ControlsV2-waveform{display:flex;flex-direction:column;height:max(var(--bp-waveform-bar-min, 140px), 25%);min-height:0}.bp-MP3ControlsV2-waveformZoom{position:absolute;top:48px;right:48px;z-index:4;pointer-events:none}.bp-MP3ControlsV2-waveformZoom .bp-WaveformZoomControl{pointer-events:auto}.bp-MP3ControlsV2-playOverlay{position:absolute;top:50%;left:50%;z-index:2;display:flex;align-items:center;justify-content:center;width:80px;height:80px;padding:0;background:rgba(0,0,0,.5);border:0;border-radius:50%;transform:translate(-50%, -50%);cursor:pointer;pointer-events:auto}.bp-MP3ControlsV2-playOverlay svg{width:48px;height:48px;fill:#fff}.bp-MP3ControlsV2-stage .bp-media-buffering-spinner{z-index:2;pointer-events:none}.bp-MP3ControlsV2-bar{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;align-items:center;justify-content:space-between;min-height:32px;padding:30px 58px 25px;background:linear-gradient(to top, black, rgba(0, 0, 0, 0));pointer-events:auto}.bp-MP3ControlsV2-group{display:flex;gap:12px;align-items:center}.bp-MP3ControlsV2-divider{width:1px;height:24px;background-color:rgba(255,255,255,.1);border-radius:1px}.bp-MP3ControlsV2 .bp-MP3Controls-settings{position:relative}.bp-MP3ControlsV2 .bp-MP3Controls-settings .bp-SettingsFlyout{right:15px}.bp-MP3ControlsV2 .bp-MP3Controls-settings .bp-SettingsToggle-button{width:36px;height:40px}
|
package/dist/lib/index.js
CHANGED
|
@@ -1029,7 +1029,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
1029
1029
|
const CLIENT_NAME = "box-content-preview"; // eslint-disable-line no-undef
|
|
1030
1030
|
const CLIENT_NAME_KEY = 'box_client_name';
|
|
1031
1031
|
const CLIENT_VERSION_KEY = 'box_client_version';
|
|
1032
|
-
const CLIENT_VERSION = "3.
|
|
1032
|
+
const CLIENT_VERSION = "3.100.0"; // eslint-disable-line no-undef
|
|
1033
1033
|
const HEADER_CLIENT_NAME = 'X-Box-Client-Name';
|
|
1034
1034
|
const HEADER_CLIENT_VERSION = 'X-Box-Client-Version';
|
|
1035
1035
|
const PROMISE_MAP = {};
|
|
@@ -2027,6 +2027,29 @@ function IconChevronUpMedium24(props) {
|
|
|
2027
2027
|
|
|
2028
2028
|
/***/ },
|
|
2029
2029
|
|
|
2030
|
+
/***/ 8950
|
|
2031
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
2032
|
+
|
|
2033
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
2034
|
+
/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
2035
|
+
/* harmony export */ });
|
|
2036
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1649);
|
|
2037
|
+
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); }
|
|
2038
|
+
|
|
2039
|
+
function IconExit24(props) {
|
|
2040
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({
|
|
2041
|
+
focusable: "false",
|
|
2042
|
+
height: 24,
|
|
2043
|
+
viewBox: "0 0 19 19",
|
|
2044
|
+
width: 24
|
|
2045
|
+
}, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
|
|
2046
|
+
d: "m10 8.232 5.227-5.227a.625.625 0 0 1 .884 0l.884.884a.625.625 0 0 1 0 .884L11.767 10l5.228 5.227a.625.625 0 0 1 0 .884l-.884.884a.625.625 0 0 1-.884 0L10 11.767l-5.227 5.228a.625.625 0 0 1-.884 0l-.884-.884a.625.625 0 0 1 0-.884L8.233 10 3.005 4.772a.625.625 0 0 1 0-.883l.884-.884a.625.625 0 0 1 .884 0L10 8.233z"
|
|
2047
|
+
}));
|
|
2048
|
+
}
|
|
2049
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (IconExit24);
|
|
2050
|
+
|
|
2051
|
+
/***/ },
|
|
2052
|
+
|
|
2030
2053
|
/***/ 7502
|
|
2031
2054
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
2032
2055
|
|
|
@@ -5648,6 +5671,8 @@ function IconComment24(props) {
|
|
|
5648
5671
|
}));
|
|
5649
5672
|
}
|
|
5650
5673
|
/* harmony default export */ const icons_IconComment24 = (IconComment24);
|
|
5674
|
+
// EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconExit24.tsx
|
|
5675
|
+
var IconExit24 = __webpack_require__(8950);
|
|
5651
5676
|
;// ./src/lib/viewers/media/waveform/WaveformRangeSelection.scss
|
|
5652
5677
|
// extracted by mini-css-extract-plugin
|
|
5653
5678
|
|
|
@@ -5660,6 +5685,10 @@ function IconComment24(props) {
|
|
|
5660
5685
|
|
|
5661
5686
|
|
|
5662
5687
|
|
|
5688
|
+
|
|
5689
|
+
function stopRangeEvent(event) {
|
|
5690
|
+
event.stopPropagation();
|
|
5691
|
+
}
|
|
5663
5692
|
function offsetLeftCss(base, offsetPx) {
|
|
5664
5693
|
if (!offsetPx) {
|
|
5665
5694
|
return base;
|
|
@@ -5690,6 +5719,7 @@ function applyRegion(el, startSec, endSec, durationSec, viewport, collapsed) {
|
|
|
5690
5719
|
el.style.width = `calc(${end} - ${start} + ${constants/* WAVEFORM_RANGE_HANDLE_LINE_PX */.h1}px)`;
|
|
5691
5720
|
}
|
|
5692
5721
|
const WaveformRangeSelection = /*#__PURE__*/(0,external_react_.forwardRef)(function WaveformRangeSelection({
|
|
5722
|
+
cameraMode = 'desktop',
|
|
5693
5723
|
currentTimeSec = 0,
|
|
5694
5724
|
durationSec,
|
|
5695
5725
|
getPlayheadSec,
|
|
@@ -5697,11 +5727,12 @@ const WaveformRangeSelection = /*#__PURE__*/(0,external_react_.forwardRef)(funct
|
|
|
5697
5727
|
interactive = true,
|
|
5698
5728
|
isHighlighted = false,
|
|
5699
5729
|
keepHighlight = true,
|
|
5700
|
-
onDragCreate,
|
|
5701
5730
|
onDragChange,
|
|
5731
|
+
onDragCreate,
|
|
5702
5732
|
onDragPointerX,
|
|
5703
5733
|
onPreviewChange,
|
|
5704
5734
|
onRangeChange,
|
|
5735
|
+
onRangeClear,
|
|
5705
5736
|
range,
|
|
5706
5737
|
readOnly = false,
|
|
5707
5738
|
viewport
|
|
@@ -5712,6 +5743,8 @@ const WaveformRangeSelection = /*#__PURE__*/(0,external_react_.forwardRef)(funct
|
|
|
5712
5743
|
const endHandleRef = (0,external_react_.useRef)(null);
|
|
5713
5744
|
const tooltipRef = (0,external_react_.useRef)(null);
|
|
5714
5745
|
const commentRef = (0,external_react_.useRef)(null);
|
|
5746
|
+
const commentButtonRef = commentRef;
|
|
5747
|
+
const commentPillRef = commentRef;
|
|
5715
5748
|
const dragRef = (0,external_react_.useRef)(null);
|
|
5716
5749
|
const replayDragRef = (0,external_react_.useRef)(() => undefined);
|
|
5717
5750
|
const rangeRef = (0,external_react_.useRef)(range);
|
|
@@ -5737,7 +5770,9 @@ const WaveformRangeSelection = /*#__PURE__*/(0,external_react_.forwardRef)(funct
|
|
|
5737
5770
|
const durationMs = (0,waveform_range/* durationMsFromSec */.uH)(durationSec);
|
|
5738
5771
|
const displayed = dragRange ?? (0,waveform_range/* resolveRange */.Ss)(range, durationMs);
|
|
5739
5772
|
displayedRef.current = displayed;
|
|
5740
|
-
const
|
|
5773
|
+
const isRangeOpen = displayed.startMs !== displayed.endMs && activeHandle == null;
|
|
5774
|
+
const showCommentButton = !readOnly && Boolean(onDragCreate) && isRangeOpen;
|
|
5775
|
+
const showClearOnly = cameraMode === 'tape' && readOnly && onRangeClear != null && isRangeOpen;
|
|
5741
5776
|
const syncPositions = (0,external_react_.useCallback)((next, nextViewport, nextDurationSec) => {
|
|
5742
5777
|
displayedRef.current = next;
|
|
5743
5778
|
const collapsed = next.startMs === next.endMs;
|
|
@@ -5771,7 +5806,7 @@ const WaveformRangeSelection = /*#__PURE__*/(0,external_react_.forwardRef)(funct
|
|
|
5771
5806
|
}), [refreshRangePositions]);
|
|
5772
5807
|
(0,external_react_.useLayoutEffect)(() => {
|
|
5773
5808
|
syncPositions(displayedRef.current, viewportRef.current, durationSec);
|
|
5774
|
-
}, [activeHandle, displayed.endMs, displayed.startMs, durationSec, showCommentButton, syncPositions]);
|
|
5809
|
+
}, [activeHandle, displayed.endMs, displayed.startMs, durationSec, showClearOnly, showCommentButton, syncPositions]);
|
|
5775
5810
|
(0,external_react_.useLayoutEffect)(() => {
|
|
5776
5811
|
const next = (0,waveform_viewport/* createWaveformViewport */.eq)({
|
|
5777
5812
|
durationSec: viewport.durationSec,
|
|
@@ -5954,22 +5989,67 @@ const WaveformRangeSelection = /*#__PURE__*/(0,external_react_.forwardRef)(funct
|
|
|
5954
5989
|
const tooltipMs = tooltipHandle === 'start' ? displayed.startMs : displayed.endMs;
|
|
5955
5990
|
const collapsed = displayed.startMs === displayed.endMs;
|
|
5956
5991
|
const highlight = isHighlighted || collapsed;
|
|
5957
|
-
const
|
|
5958
|
-
ref: commentRef,
|
|
5959
|
-
className: "bp-WaveformRange-comment",
|
|
5960
|
-
"data-testid": "bp-waveform-range-comment",
|
|
5961
|
-
onClick: event => {
|
|
5962
|
-
event.stopPropagation();
|
|
5963
|
-
onDragCreate();
|
|
5964
|
-
},
|
|
5965
|
-
onPointerDown: event => {
|
|
5966
|
-
event.stopPropagation();
|
|
5967
|
-
},
|
|
5968
|
-
type: "button"
|
|
5969
|
-
}, /*#__PURE__*/external_react_["default"].createElement(icons_IconComment24, {
|
|
5992
|
+
const commentLabel = /*#__PURE__*/external_react_["default"].createElement(external_react_["default"].Fragment, null, /*#__PURE__*/external_react_["default"].createElement(icons_IconComment24, {
|
|
5970
5993
|
"aria-hidden": "true",
|
|
5971
5994
|
className: "bp-WaveformRange-commentIcon"
|
|
5972
|
-
}), "Comment")
|
|
5995
|
+
}), "Comment");
|
|
5996
|
+
const isTapeClearAvailable = cameraMode === 'tape' && onRangeClear != null;
|
|
5997
|
+
let commentButton = null;
|
|
5998
|
+
if (showClearOnly && onRangeClear) {
|
|
5999
|
+
commentButton = /*#__PURE__*/external_react_["default"].createElement("button", {
|
|
6000
|
+
ref: commentButtonRef,
|
|
6001
|
+
"aria-label": "Clear",
|
|
6002
|
+
className: "bp-WaveformRange-comment bp-WaveformRange-comment--clearOnly",
|
|
6003
|
+
"data-testid": "bp-waveform-range-clear",
|
|
6004
|
+
onClick: event => {
|
|
6005
|
+
stopRangeEvent(event);
|
|
6006
|
+
onRangeClear();
|
|
6007
|
+
},
|
|
6008
|
+
onPointerDown: stopRangeEvent,
|
|
6009
|
+
onPointerUp: stopRangeEvent,
|
|
6010
|
+
type: "button"
|
|
6011
|
+
}, /*#__PURE__*/external_react_["default"].createElement(IconExit24/* default */.A, {
|
|
6012
|
+
"aria-hidden": "true",
|
|
6013
|
+
className: "bp-WaveformRange-commentIcon"
|
|
6014
|
+
}));
|
|
6015
|
+
} else if (showCommentButton && onDragCreate) {
|
|
6016
|
+
const commentAction = /*#__PURE__*/external_react_["default"].createElement("button", {
|
|
6017
|
+
ref: isTapeClearAvailable ? undefined : commentButtonRef,
|
|
6018
|
+
className: isTapeClearAvailable ? 'bp-WaveformRange-commentLabel' : 'bp-WaveformRange-comment',
|
|
6019
|
+
"data-testid": "bp-waveform-range-comment",
|
|
6020
|
+
onClick: event => {
|
|
6021
|
+
stopRangeEvent(event);
|
|
6022
|
+
onDragCreate();
|
|
6023
|
+
},
|
|
6024
|
+
onPointerDown: stopRangeEvent,
|
|
6025
|
+
onPointerUp: stopRangeEvent,
|
|
6026
|
+
type: "button"
|
|
6027
|
+
}, commentLabel);
|
|
6028
|
+
commentButton = isTapeClearAvailable ? /*#__PURE__*/external_react_["default"].createElement("div", {
|
|
6029
|
+
ref: commentPillRef,
|
|
6030
|
+
className: "bp-WaveformRange-comment bp-WaveformRange-comment--withClear",
|
|
6031
|
+
"data-testid": "bp-waveform-range-comment-pill",
|
|
6032
|
+
onPointerDown: stopRangeEvent,
|
|
6033
|
+
onPointerUp: stopRangeEvent
|
|
6034
|
+
}, commentAction, /*#__PURE__*/external_react_["default"].createElement("span", {
|
|
6035
|
+
"aria-hidden": "true",
|
|
6036
|
+
className: "bp-WaveformRange-commentDivider"
|
|
6037
|
+
}), /*#__PURE__*/external_react_["default"].createElement("button", {
|
|
6038
|
+
"aria-label": "Clear",
|
|
6039
|
+
className: "bp-WaveformRange-commentClear",
|
|
6040
|
+
"data-testid": "bp-waveform-range-clear",
|
|
6041
|
+
onClick: event => {
|
|
6042
|
+
stopRangeEvent(event);
|
|
6043
|
+
onRangeClear();
|
|
6044
|
+
},
|
|
6045
|
+
onPointerDown: stopRangeEvent,
|
|
6046
|
+
onPointerUp: stopRangeEvent,
|
|
6047
|
+
type: "button"
|
|
6048
|
+
}, /*#__PURE__*/external_react_["default"].createElement(IconExit24/* default */.A, {
|
|
6049
|
+
"aria-hidden": "true",
|
|
6050
|
+
className: "bp-WaveformRange-commentIcon"
|
|
6051
|
+
}))) : commentAction;
|
|
6052
|
+
}
|
|
5973
6053
|
return /*#__PURE__*/external_react_["default"].createElement("div", {
|
|
5974
6054
|
ref: rootRef,
|
|
5975
6055
|
className: classnames_default()('bp-WaveformRange', {
|
|
@@ -6267,8 +6347,10 @@ function WaveformView({
|
|
|
6267
6347
|
const isRangeDraggingRef = (0,external_react_.useRef)(false);
|
|
6268
6348
|
const rangeRef = (0,external_react_.useRef)(range); // latest committed draft; drag-create must not start on top of an open span
|
|
6269
6349
|
const createDragRef = (0,external_react_.useRef)(null);
|
|
6350
|
+
const tapeRangeHoldRef = (0,external_react_.useRef)(false); // a tape long-press is waiting to draw; touch must not scroll
|
|
6270
6351
|
const rangeDragPointerXRef = (0,external_react_.useRef)(null); // clientX while a handle or create-drag is down
|
|
6271
6352
|
const removeCreateDragListenersRef = (0,external_react_.useRef)(null);
|
|
6353
|
+
const removeTapeContextMenuRef = (0,external_react_.useRef)(null);
|
|
6272
6354
|
const skipNextSeekRef = (0,external_react_.useRef)(false); // ignore the click fired when a handle is released
|
|
6273
6355
|
const lastSetTimeSecRef = (0,external_react_.useRef)(null);
|
|
6274
6356
|
const [isRangeHovered, setIsRangeHovered] = (0,external_react_.useState)(false);
|
|
@@ -6293,6 +6375,8 @@ function WaveformView({
|
|
|
6293
6375
|
const activeRange = (isRangeDragging ? previewRange ?? createRange : createRange) ?? range;
|
|
6294
6376
|
const activeRangeRef = (0,external_react_.useRef)(activeRange);
|
|
6295
6377
|
activeRangeRef.current = activeRange;
|
|
6378
|
+
const viewedRangeRef = (0,external_react_.useRef)(false);
|
|
6379
|
+
viewedRangeRef.current = rangeReadOnly && createRange == null;
|
|
6296
6380
|
const durationMs = (0,waveform_range/* durationMsFromSec */.uH)(durationSec);
|
|
6297
6381
|
const rangeStartMs = activeRange?.startMs;
|
|
6298
6382
|
const rangeEndMs = activeRange?.endMs;
|
|
@@ -6378,6 +6462,20 @@ function WaveformView({
|
|
|
6378
6462
|
widthPx: viewport.widthPx,
|
|
6379
6463
|
zoomLevel: viewport.zoomLevel
|
|
6380
6464
|
});
|
|
6465
|
+
const drag = createDragRef.current;
|
|
6466
|
+
const clientX = rangeDragPointerXRef.current;
|
|
6467
|
+
const track = trackRef.current;
|
|
6468
|
+
if (!drag?.active || clientX == null || !track) {
|
|
6469
|
+
return;
|
|
6470
|
+
}
|
|
6471
|
+
const playheadSec = mediaElRef.current ? mediaElRef.current.currentTime : currentTimeRef.current;
|
|
6472
|
+
const drawn = drawnRangeFromMove(drag, clientX, track, viewportRef.current, playheadSec, durationSecRef.current);
|
|
6473
|
+
if (drawn.startMs === drag.range?.startMs && drawn.endMs === drag.range?.endMs) {
|
|
6474
|
+
return;
|
|
6475
|
+
}
|
|
6476
|
+
drag.range = drawn;
|
|
6477
|
+
setCreateRange(drawn);
|
|
6478
|
+
setPreviewRange(drawn);
|
|
6381
6479
|
}, [viewport]);
|
|
6382
6480
|
const setZoomLevel = (0,external_react_.useCallback)(nextZoom => {
|
|
6383
6481
|
const zoom = (0,waveform_viewport/* clampWaveformZoom */.ii)(nextZoom, maxZoom);
|
|
@@ -6555,7 +6653,8 @@ function WaveformView({
|
|
|
6555
6653
|
}
|
|
6556
6654
|
const rangeDraft = activeRangeRef.current;
|
|
6557
6655
|
const timeSec = relativeX * durationSecRef.current;
|
|
6558
|
-
|
|
6656
|
+
// A tape draft dismisses from the pill. A viewed range, and desktop, still clear on click-outside.
|
|
6657
|
+
if ((cameraModeRef.current !== 'tape' || viewedRangeRef.current) && rangeDraft && !(0,waveform_range/* isRangeCollapsed */.BT)(rangeDraft)) {
|
|
6559
6658
|
const pointerX = (0,waveform_viewport/* positionPxFromTime */.TO)(timeSec, viewportRef.current);
|
|
6560
6659
|
if (!(0,waveform_range/* isPointerOverRange */.H5)({
|
|
6561
6660
|
pointerX,
|
|
@@ -6840,6 +6939,10 @@ function WaveformView({
|
|
|
6840
6939
|
markPointerZoom();
|
|
6841
6940
|
};
|
|
6842
6941
|
const onTouchMove = event => {
|
|
6942
|
+
// A tape hold or range drag owns the touch. A desktop press can still scroll.
|
|
6943
|
+
if (cameraModeRef.current === 'tape' && (tapeRangeHoldRef.current || createDragRef.current)) {
|
|
6944
|
+
event.preventDefault();
|
|
6945
|
+
}
|
|
6843
6946
|
const pinch = pinchStartRef.current;
|
|
6844
6947
|
if (!interactiveRef.current || !hasZoomHandlersRef.current || !pinch || event.touches.length !== 2 || !(pinch.distance > 0)) {
|
|
6845
6948
|
return;
|
|
@@ -6982,6 +7085,7 @@ function WaveformView({
|
|
|
6982
7085
|
(0,external_react_.useEffect)(() => {
|
|
6983
7086
|
return () => {
|
|
6984
7087
|
removeCreateDragListenersRef.current?.();
|
|
7088
|
+
removeTapeContextMenuRef.current?.();
|
|
6985
7089
|
if (createDragRef.current?.active) {
|
|
6986
7090
|
createDragRef.current = null;
|
|
6987
7091
|
onRangeDragChangeRef.current?.(false);
|
|
@@ -6994,26 +7098,20 @@ function WaveformView({
|
|
|
6994
7098
|
}
|
|
6995
7099
|
setCreateRange(current => current == null ? current : null);
|
|
6996
7100
|
}, [range]);
|
|
6997
|
-
const
|
|
6998
|
-
if (cameraModeRef.current === 'tape' || !interactiveRef.current || event.button > 0 || event.ctrlKey || event.metaKey || isRangeDraggingRef.current || createDragRef.current) {
|
|
6999
|
-
return;
|
|
7000
|
-
}
|
|
7001
|
-
const {
|
|
7002
|
-
target
|
|
7003
|
-
} = event;
|
|
7004
|
-
if (target instanceof Element && target.closest('[data-testid="bp-waveform-range-handle-start"], [data-testid="bp-waveform-range-handle-end"], [data-testid="bp-waveform-range-comment"]')) {
|
|
7005
|
-
return;
|
|
7006
|
-
}
|
|
7007
|
-
const drag = rangeCreateDragFromEvent(event, {
|
|
7008
|
-
durationSec: durationSecRef.current,
|
|
7009
|
-
range: rangeRef.current,
|
|
7010
|
-
track: trackRef.current,
|
|
7011
|
-
viewport: viewportRef.current
|
|
7012
|
-
});
|
|
7013
|
-
if (!drag) {
|
|
7014
|
-
return;
|
|
7015
|
-
}
|
|
7101
|
+
const startRangeCreateDrag = (0,external_react_.useCallback)((drag, capture) => {
|
|
7016
7102
|
createDragRef.current = drag;
|
|
7103
|
+
rangeDragPointerXRef.current = drag.originX;
|
|
7104
|
+
const track = trackRef.current;
|
|
7105
|
+
if (capture && track && typeof track.setPointerCapture === 'function') {
|
|
7106
|
+
try {
|
|
7107
|
+
track.setPointerCapture(drag.pointerId);
|
|
7108
|
+
} catch (error) {
|
|
7109
|
+
const lostPointer = error instanceof DOMException && (error.name === 'NotFoundError' || error.name === 'InvalidStateError');
|
|
7110
|
+
if (!lostPointer) {
|
|
7111
|
+
console.warn('Pointer capture failed', error); // eslint-disable-line no-console
|
|
7112
|
+
}
|
|
7113
|
+
}
|
|
7114
|
+
}
|
|
7017
7115
|
const onMove = moveEvent => {
|
|
7018
7116
|
if (createDragRef.current !== drag || moveEvent.pointerId !== drag.pointerId) {
|
|
7019
7117
|
return;
|
|
@@ -7021,16 +7119,24 @@ function WaveformView({
|
|
|
7021
7119
|
if (!Number.isFinite(moveEvent.clientX)) {
|
|
7022
7120
|
return;
|
|
7023
7121
|
}
|
|
7122
|
+
// Capture runs before WaveSurfer's document drag, which stops the event after a few pixels.
|
|
7123
|
+
if (capture) {
|
|
7124
|
+
moveEvent.preventDefault();
|
|
7125
|
+
moveEvent.stopPropagation();
|
|
7126
|
+
}
|
|
7127
|
+
rangeDragPointerXRef.current = moveEvent.clientX;
|
|
7024
7128
|
if (!drag.active && Math.abs(moveEvent.clientX - drag.originX) < constants/* WAVEFORM_RANGE_CREATE_DRAG_PX */.B4) {
|
|
7025
7129
|
return;
|
|
7026
7130
|
}
|
|
7027
|
-
const
|
|
7028
|
-
if (!
|
|
7131
|
+
const moveTrack = trackRef.current;
|
|
7132
|
+
if (!moveTrack) {
|
|
7029
7133
|
return;
|
|
7030
7134
|
}
|
|
7031
|
-
|
|
7135
|
+
if (!capture) {
|
|
7136
|
+
moveEvent.preventDefault();
|
|
7137
|
+
}
|
|
7032
7138
|
const playheadSec = mediaElRef.current ? mediaElRef.current.currentTime : currentTimeRef.current;
|
|
7033
|
-
drag.range = drawnRangeFromMove(drag, moveEvent.clientX,
|
|
7139
|
+
drag.range = drawnRangeFromMove(drag, moveEvent.clientX, moveTrack, viewportRef.current, playheadSec, durationSecRef.current);
|
|
7034
7140
|
if (!drag.active) {
|
|
7035
7141
|
drag.active = true;
|
|
7036
7142
|
handleRangeDragChange(true);
|
|
@@ -7040,9 +7146,13 @@ function WaveformView({
|
|
|
7040
7146
|
};
|
|
7041
7147
|
let onUp = () => undefined;
|
|
7042
7148
|
const removeListeners = () => {
|
|
7043
|
-
window.removeEventListener('pointermove', onMove);
|
|
7044
|
-
window.removeEventListener('pointerup', onUp);
|
|
7045
|
-
window.removeEventListener('pointercancel', onUp);
|
|
7149
|
+
window.removeEventListener('pointermove', onMove, capture);
|
|
7150
|
+
window.removeEventListener('pointerup', onUp, capture);
|
|
7151
|
+
window.removeEventListener('pointercancel', onUp, capture);
|
|
7152
|
+
const captured = trackRef.current;
|
|
7153
|
+
if (capture && captured && typeof captured.hasPointerCapture === 'function' && captured.hasPointerCapture(drag.pointerId)) {
|
|
7154
|
+
captured.releasePointerCapture(drag.pointerId);
|
|
7155
|
+
}
|
|
7046
7156
|
if (removeCreateDragListenersRef.current === removeListeners) {
|
|
7047
7157
|
removeCreateDragListenersRef.current = null;
|
|
7048
7158
|
}
|
|
@@ -7056,6 +7166,8 @@ function WaveformView({
|
|
|
7056
7166
|
createDragRef.current = null;
|
|
7057
7167
|
removeListeners();
|
|
7058
7168
|
if (!wasActive || !drawn) {
|
|
7169
|
+
// This pointerup still reaches the tape track. Swallow it so a still hold does not play.
|
|
7170
|
+
suppressTapToPlayPause();
|
|
7059
7171
|
return;
|
|
7060
7172
|
}
|
|
7061
7173
|
const committed = (0,waveform_range/* commitRangeChange */.dG)(drawn);
|
|
@@ -7066,10 +7178,107 @@ function WaveformView({
|
|
|
7066
7178
|
handleRangeDragChange(false);
|
|
7067
7179
|
};
|
|
7068
7180
|
removeCreateDragListenersRef.current = removeListeners;
|
|
7069
|
-
window.addEventListener('pointermove', onMove);
|
|
7070
|
-
window.addEventListener('pointerup', onUp);
|
|
7071
|
-
window.addEventListener('pointercancel', onUp);
|
|
7072
|
-
}, [handleRangeDragChange]);
|
|
7181
|
+
window.addEventListener('pointermove', onMove, capture);
|
|
7182
|
+
window.addEventListener('pointerup', onUp, capture);
|
|
7183
|
+
window.addEventListener('pointercancel', onUp, capture);
|
|
7184
|
+
}, [handleRangeDragChange, suppressTapToPlayPause]);
|
|
7185
|
+
const onTrackPointerDown = (0,external_react_.useCallback)(event => {
|
|
7186
|
+
if (!interactiveRef.current || event.button > 0 || event.ctrlKey || event.metaKey || isRangeDraggingRef.current || createDragRef.current) {
|
|
7187
|
+
return;
|
|
7188
|
+
}
|
|
7189
|
+
const {
|
|
7190
|
+
target
|
|
7191
|
+
} = event;
|
|
7192
|
+
if (target instanceof Element && target.closest('.bp-WaveformRange-handle, .bp-WaveformRange-comment')) {
|
|
7193
|
+
return;
|
|
7194
|
+
}
|
|
7195
|
+
const drag = rangeCreateDragFromEvent(event, {
|
|
7196
|
+
durationSec: durationSecRef.current,
|
|
7197
|
+
range: rangeRef.current,
|
|
7198
|
+
track: trackRef.current,
|
|
7199
|
+
viewport: viewportRef.current
|
|
7200
|
+
});
|
|
7201
|
+
if (!drag) {
|
|
7202
|
+
return;
|
|
7203
|
+
}
|
|
7204
|
+
if (cameraModeRef.current !== 'tape') {
|
|
7205
|
+
startRangeCreateDrag(drag, false);
|
|
7206
|
+
return;
|
|
7207
|
+
}
|
|
7208
|
+
const suppressContextMenu = menuEvent => {
|
|
7209
|
+
menuEvent.preventDefault();
|
|
7210
|
+
};
|
|
7211
|
+
let endPointer = () => undefined;
|
|
7212
|
+
const removeContextMenu = () => {
|
|
7213
|
+
window.removeEventListener('contextmenu', suppressContextMenu, true);
|
|
7214
|
+
window.removeEventListener('pointerup', endPointer, true);
|
|
7215
|
+
window.removeEventListener('pointercancel', endPointer, true);
|
|
7216
|
+
if (removeTapeContextMenuRef.current === removeContextMenu) {
|
|
7217
|
+
removeTapeContextMenuRef.current = null;
|
|
7218
|
+
}
|
|
7219
|
+
};
|
|
7220
|
+
endPointer = endEvent => {
|
|
7221
|
+
if (endEvent.pointerId !== drag.pointerId) {
|
|
7222
|
+
return;
|
|
7223
|
+
}
|
|
7224
|
+
removeContextMenu();
|
|
7225
|
+
};
|
|
7226
|
+
removeTapeContextMenuRef.current = removeContextMenu;
|
|
7227
|
+
window.addEventListener('contextmenu', suppressContextMenu, true);
|
|
7228
|
+
window.addEventListener('pointerup', endPointer, true);
|
|
7229
|
+
window.addEventListener('pointercancel', endPointer, true);
|
|
7230
|
+
const originY = event.clientY;
|
|
7231
|
+
let holdPending = true;
|
|
7232
|
+
let longPressTimer = 0;
|
|
7233
|
+
let onHoldMove = () => undefined;
|
|
7234
|
+
let onHoldEnd = () => undefined;
|
|
7235
|
+
const cancelHold = () => {
|
|
7236
|
+
if (!holdPending) {
|
|
7237
|
+
return;
|
|
7238
|
+
}
|
|
7239
|
+
holdPending = false;
|
|
7240
|
+
tapeRangeHoldRef.current = false;
|
|
7241
|
+
window.clearTimeout(longPressTimer);
|
|
7242
|
+
window.removeEventListener('pointermove', onHoldMove, true);
|
|
7243
|
+
window.removeEventListener('pointerup', onHoldEnd, true);
|
|
7244
|
+
window.removeEventListener('pointercancel', onHoldEnd, true);
|
|
7245
|
+
if (removeCreateDragListenersRef.current === cancelHold) {
|
|
7246
|
+
removeCreateDragListenersRef.current = null;
|
|
7247
|
+
}
|
|
7248
|
+
};
|
|
7249
|
+
onHoldMove = moveEvent => {
|
|
7250
|
+
if (!holdPending || moveEvent.pointerId !== drag.pointerId) {
|
|
7251
|
+
return;
|
|
7252
|
+
}
|
|
7253
|
+
const moved = Math.hypot(moveEvent.clientX - drag.originX, moveEvent.clientY - originY);
|
|
7254
|
+
if (moved >= constants/* WAVEFORM_TAPE_RANGE_LONG_PRESS_CANCEL_PX */.Oe) {
|
|
7255
|
+
cancelHold();
|
|
7256
|
+
return;
|
|
7257
|
+
}
|
|
7258
|
+
// A smaller drift must not scroll the tape. The move that cancels the hold stays a swipe.
|
|
7259
|
+
moveEvent.preventDefault();
|
|
7260
|
+
moveEvent.stopPropagation();
|
|
7261
|
+
};
|
|
7262
|
+
onHoldEnd = upEvent => {
|
|
7263
|
+
if (upEvent.pointerId !== drag.pointerId) {
|
|
7264
|
+
return;
|
|
7265
|
+
}
|
|
7266
|
+
cancelHold();
|
|
7267
|
+
};
|
|
7268
|
+
tapeRangeHoldRef.current = true;
|
|
7269
|
+
longPressTimer = window.setTimeout(() => {
|
|
7270
|
+
if (!holdPending) {
|
|
7271
|
+
return;
|
|
7272
|
+
}
|
|
7273
|
+
cancelHold();
|
|
7274
|
+
suppressTapToPlayPause();
|
|
7275
|
+
startRangeCreateDrag(drag, true);
|
|
7276
|
+
}, constants/* WAVEFORM_TAPE_RANGE_LONG_PRESS_MS */.RQ);
|
|
7277
|
+
removeCreateDragListenersRef.current = cancelHold;
|
|
7278
|
+
window.addEventListener('pointermove', onHoldMove, true);
|
|
7279
|
+
window.addEventListener('pointerup', onHoldEnd, true);
|
|
7280
|
+
window.addEventListener('pointercancel', onHoldEnd, true);
|
|
7281
|
+
}, [suppressTapToPlayPause, startRangeCreateDrag]);
|
|
7073
7282
|
const bindOverlayPortalHost = (0,external_react_.useCallback)(node => {
|
|
7074
7283
|
const host = node?.parentElement ?? null;
|
|
7075
7284
|
setOverlayPortalHost(prev => prev === host ? prev : host);
|
|
@@ -7122,6 +7331,7 @@ function WaveformView({
|
|
|
7122
7331
|
"data-testid": "bp-waveform-playhead"
|
|
7123
7332
|
}), showRangeOverlay && overlayRange && /*#__PURE__*/external_react_["default"].createElement(waveform_WaveformRangeSelection, {
|
|
7124
7333
|
ref: rangeLayerRef,
|
|
7334
|
+
cameraMode: cameraMode,
|
|
7125
7335
|
currentTimeSec: currentTime,
|
|
7126
7336
|
durationSec: durationSec,
|
|
7127
7337
|
getPlayheadSec: getPlayheadSec,
|
|
@@ -7136,6 +7346,7 @@ function WaveformView({
|
|
|
7136
7346
|
},
|
|
7137
7347
|
onPreviewChange: setPreviewRange,
|
|
7138
7348
|
onRangeChange: interactive && !isOverlayReadOnly ? onRangeChange : undefined,
|
|
7349
|
+
onRangeClear: onRangeClear,
|
|
7139
7350
|
range: overlayRange,
|
|
7140
7351
|
readOnly: isOverlayReadOnly,
|
|
7141
7352
|
viewport: viewport
|
|
@@ -7705,7 +7916,9 @@ function isFpsAvailable(player) {
|
|
|
7705
7916
|
/* harmony export */ Lu: () => (/* binding */ WAVEFORM_BAR_GAP),
|
|
7706
7917
|
/* harmony export */ MR: () => (/* binding */ WAVEFORM_RANGE_EDGE_ZONE_PX),
|
|
7707
7918
|
/* harmony export */ NM: () => (/* binding */ WAVEFORM_FOLLOW_INSET_PX),
|
|
7919
|
+
/* harmony export */ Oe: () => (/* binding */ WAVEFORM_TAPE_RANGE_LONG_PRESS_CANCEL_PX),
|
|
7708
7920
|
/* harmony export */ QD: () => (/* binding */ WAVEFORM_ZOOM_BUTTON_STEP),
|
|
7921
|
+
/* harmony export */ RQ: () => (/* binding */ WAVEFORM_TAPE_RANGE_LONG_PRESS_MS),
|
|
7709
7922
|
/* harmony export */ VS: () => (/* binding */ WAVEFORM_RANGE_EDGE_SCROLL_AUDIO_SEC_PER_SEC),
|
|
7710
7923
|
/* harmony export */ XS: () => (/* binding */ WAVEFORM_BAR_MIN_HEIGHT),
|
|
7711
7924
|
/* harmony export */ Zs: () => (/* binding */ WAVEFORM_FOLLOW_SCROLL_SETTLE_MS),
|
|
@@ -7793,6 +8006,10 @@ const WAVEFORM_RANGE_SNAP_PX = 8;
|
|
|
7793
8006
|
const WAVEFORM_RANGE_MIN_DURATION_MS = 250;
|
|
7794
8007
|
/** Pointer travel before a waveform press becomes a new draft range. Shorter presses stay click-to-seek. */
|
|
7795
8008
|
const WAVEFORM_RANGE_CREATE_DRAG_PX = 4;
|
|
8009
|
+
/** Hold on the tape waveform before a press can draw a new range. A move sooner stays a swipe. */
|
|
8010
|
+
const WAVEFORM_TAPE_RANGE_LONG_PRESS_MS = 500;
|
|
8011
|
+
/** Pointer travel during that hold that cancels it. */
|
|
8012
|
+
const WAVEFORM_TAPE_RANGE_LONG_PRESS_CANCEL_PX = 10;
|
|
7796
8013
|
/** Drag a handle inside this many CSS pixels of either view edge and the tape scrolls. */
|
|
7797
8014
|
const WAVEFORM_RANGE_EDGE_ZONE_PX = 100;
|
|
7798
8015
|
/** Audio seconds moved per wall-clock second when the pointer is on the view edge. */
|
|
@@ -24883,7 +25100,7 @@ class Browser {
|
|
|
24883
25100
|
;// ./src/lib/Logger.js
|
|
24884
25101
|
/* eslint-disable no-undef */
|
|
24885
25102
|
const CLIENT_NAME = "box-content-preview";
|
|
24886
|
-
const CLIENT_VERSION = "3.
|
|
25103
|
+
const CLIENT_VERSION = "3.100.0";
|
|
24887
25104
|
/* eslint-enable no-undef */
|
|
24888
25105
|
|
|
24889
25106
|
class Logger {
|
|
@@ -28395,20 +28612,8 @@ function IconPencilScribbleMedium24(_ref) {
|
|
|
28395
28612
|
}));
|
|
28396
28613
|
}
|
|
28397
28614
|
/* harmony default export */ const icons_IconPencilScribbleMedium24 = (IconPencilScribbleMedium24);
|
|
28398
|
-
|
|
28399
|
-
|
|
28400
|
-
|
|
28401
|
-
function IconExit24(props) {
|
|
28402
|
-
return /*#__PURE__*/external_react_.createElement("svg", IconExit24_extends({
|
|
28403
|
-
focusable: "false",
|
|
28404
|
-
height: 24,
|
|
28405
|
-
viewBox: "0 0 19 19",
|
|
28406
|
-
width: 24
|
|
28407
|
-
}, props), /*#__PURE__*/external_react_.createElement("path", {
|
|
28408
|
-
d: "m10 8.232 5.227-5.227a.625.625 0 0 1 .884 0l.884.884a.625.625 0 0 1 0 .884L11.767 10l5.228 5.227a.625.625 0 0 1 0 .884l-.884.884a.625.625 0 0 1-.884 0L10 11.767l-5.227 5.228a.625.625 0 0 1-.884 0l-.884-.884a.625.625 0 0 1 0-.884L8.233 10 3.005 4.772a.625.625 0 0 1 0-.883l.884-.884a.625.625 0 0 1 .884 0L10 8.233z"
|
|
28409
|
-
}));
|
|
28410
|
-
}
|
|
28411
|
-
/* harmony default export */ const icons_IconExit24 = (IconExit24);
|
|
28615
|
+
// EXTERNAL MODULE: ./src/lib/viewers/controls/icons/IconExit24.tsx
|
|
28616
|
+
var IconExit24 = __webpack_require__(8950);
|
|
28412
28617
|
;// ./src/lib/viewers/controls/icons/IconTextHighlightMedium24.tsx
|
|
28413
28618
|
function IconTextHighlightMedium24_extends() { return IconTextHighlightMedium24_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; }, IconTextHighlightMedium24_extends.apply(null, arguments); }
|
|
28414
28619
|
|
|
@@ -28553,7 +28758,7 @@ function AnnotationsControls({
|
|
|
28553
28758
|
mode: AnnotationMode.NONE,
|
|
28554
28759
|
onClick: handleExitClick,
|
|
28555
28760
|
title: "Exit Annotations"
|
|
28556
|
-
}, /*#__PURE__*/external_react_["default"].createElement(
|
|
28761
|
+
}, /*#__PURE__*/external_react_["default"].createElement(IconExit24/* default */.A, null)), /*#__PURE__*/external_react_["default"].createElement(annotations_AnnotationsButton, {
|
|
28557
28762
|
ref: annotationBtnRefs[AnnotationMode.DRAWING],
|
|
28558
28763
|
"data-resin-target": "draw",
|
|
28559
28764
|
"data-testid": "bp-AnnotationsControls-drawBtn",
|