@hyperframes/studio 0.7.109 → 0.7.111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/assets/{hyperframes-player-BYgqAPib.js → hyperframes-player-DDIlvdLL.js} +1 -1
  2. package/dist/assets/index-8lDGbNjx.css +1 -0
  3. package/dist/assets/{index-CfBGQdrX.js → index-B6B3bUGG.js} +132 -132
  4. package/dist/assets/{index-CIRxodzK.js → index-COUW8ONf.js} +1 -1
  5. package/dist/assets/{index-Blxia-Lt.js → index-DB9iM545.js} +1 -1
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.html +2 -2
  8. package/dist/index.js +3916 -3834
  9. package/dist/index.js.map +1 -1
  10. package/package.json +7 -7
  11. package/src/components/StudioRightPanel.tsx +8 -50
  12. package/src/components/StudioRightPanel.types.ts +55 -0
  13. package/src/player/components/PlayerControls.tsx +7 -56
  14. package/src/player/components/TimelineAutomationLane.tsx +0 -175
  15. package/src/player/components/TimelineAutomationLaneSlot.test.tsx +1 -1
  16. package/src/player/components/TimelineAutomationLaneSlot.tsx +187 -0
  17. package/src/player/components/TimelineLanes.tsx +1 -1
  18. package/src/player/components/VolumeControl.styles.test.ts +22 -0
  19. package/src/player/components/VolumeControl.test.tsx +86 -0
  20. package/src/player/components/VolumeControl.tsx +104 -0
  21. package/src/player/hooks/useTimelinePlayer.ts +9 -3
  22. package/src/player/lib/playbackScrub.ts +1 -1
  23. package/src/player/lib/timelineIframeHelpers.test.ts +40 -2
  24. package/src/player/lib/timelineIframeHelpers.ts +23 -3
  25. package/src/player/store/playerStore.test.ts +17 -1
  26. package/src/player/store/playerStore.ts +8 -0
  27. package/src/styles/studio.css +69 -0
  28. package/src/utils/studioUiPreferences.test.ts +3 -0
  29. package/src/utils/studioUiPreferences.ts +9 -0
  30. package/dist/assets/index-DNkh9mbV.css +0 -1
@@ -1,4 +1,4 @@
1
- import{n as Qi}from"./index-CfBGQdrX.js";/*!
1
+ import{n as Qi}from"./index-B6B3bUGG.js";/*!
2
2
  * Copyright (c) 2026-present, Vanilagy and contributors
3
3
  *
4
4
  * This Source Code Form is subject to the terms of the Mozilla Public
@@ -1 +1 @@
1
- import{g as P}from"./index-CfBGQdrX.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var g=e[o+x]-t,_=r.some(function(h){if(h.interval===g)return h.count+=1});_||r.push({interval:g,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};
1
+ import{g as P}from"./index-B6B3bUGG.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var g=e[o+x]-t,_=r.some(function(h){if(h.interval===g)return h.count+=1});_||r.push({interval:g,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};
package/dist/index.d.ts CHANGED
@@ -280,6 +280,7 @@ interface PlayerState extends KeyframeSlice, AutomationSelectionSlice, Thumbnail
280
280
  selectedElementId: string | null;
281
281
  playbackRate: number;
282
282
  audioMuted: boolean;
283
+ audioVolume: number;
283
284
  loopEnabled: boolean;
284
285
  /** Timeline zoom: 'fit' auto-scales to viewport, 'manual' uses manualZoomPercent */
285
286
  zoomMode: ZoomMode;
@@ -346,6 +347,7 @@ interface PlayerState extends KeyframeSlice, AutomationSelectionSlice, Thumbnail
346
347
  setDuration: (duration: number) => void;
347
348
  setPlaybackRate: (rate: number) => void;
348
349
  setAudioMuted: (muted: boolean) => void;
350
+ setAudioVolume: (volume: number) => void;
349
351
  setLoopEnabled: (enabled: boolean) => void;
350
352
  setTimelineReady: (ready: boolean) => void;
351
353
  setBeatDragging: (dragging: boolean) => void;
package/dist/index.html CHANGED
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
6
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
7
  <title>HyperFrames Studio</title>
8
- <script type="module" crossorigin src="/assets/index-CfBGQdrX.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-DNkh9mbV.css">
8
+ <script type="module" crossorigin src="/assets/index-B6B3bUGG.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-8lDGbNjx.css">
10
10
  </head>
11
11
  <body>
12
12
  <div data-hf-id="hf-aph5" id="root"></div>