@hyperframes/studio 0.8.144 → 0.8.146
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{hyperframes-player-Bw_jIaSX.js → hyperframes-player-tkxyWf5H.js} +3 -3
- package/dist/assets/{index-Cj7W_c7p.js → index-BrdqOkqP.js} +1 -1
- package/dist/assets/{index-BVM9NuWl.js → index-Cg48BxAo.js} +145 -145
- package/dist/assets/{index-DyH9dT7b.js → index-Dllxg4aU.js} +1 -1
- package/dist/{chunk-EEXSYY5F.js → chunk-C5BDT7NG.js} +0 -1
- package/dist/{chunk-PEAKCOUW.js → chunk-HZDCMUG4.js} +2 -100
- package/dist/{chunk-PZ5AY32C.js → chunk-MLKGABMK.js} +0 -1
- package/dist/{chunk-G3EDKRZH.js → chunk-PHGBG7OG.js} +100 -5
- package/dist/{chunk-Y2OHHNM2.js → chunk-PVFBY7KR.js} +0 -1
- package/dist/{chunk-3GHTHPZD.js → chunk-T43DM7Q6.js} +101 -3
- package/dist/{domEditingLayers-PYST4G45.js → domEditingLayers-SMVA3FEW.js} +3 -4
- package/dist/index.css +0 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.html +1 -1
- package/dist/index.js +509 -529
- package/dist/player.js +4 -5
- package/dist/styles/tailwind-preset.js +1 -2
- package/dist/ui.js +3 -4
- package/package.json +8 -8
- package/src/captions/components/CaptionOverlay.tsx +1 -1
- package/src/captions/hooks/useCaptionSync.ts +1 -1
- package/src/components/LinkedSelectionToggle.tsx +2 -2
- package/src/components/LintModal.tsx +1 -5
- package/src/components/MediaPreview.tsx +2 -2
- package/src/components/ProjectUnreachableBanner.tsx +1 -1
- package/src/components/StudioLeftPanels.tsx +2 -2
- package/src/components/StudioRightPanels.tsx +1 -1
- package/src/components/TimelineToolbar.test.tsx +2 -2
- package/src/components/TimelineToolbar.tsx +6 -6
- package/src/components/editor/AnimationCard.tsx +3 -3
- package/src/components/editor/AnimationCardParts.tsx +1 -1
- package/src/components/editor/BlockParamsPanel.tsx +3 -3
- package/src/components/editor/ComputedTweenNotice.tsx +2 -2
- package/src/components/editor/FileTree.tsx +1 -1
- package/src/components/editor/GsapAnimationList.tsx +1 -1
- package/src/components/editor/GsapAnimationSection.tsx +2 -2
- package/src/components/editor/LayersPanel.test.ts +4 -4
- package/src/components/editor/LayersPanel.tsx +2 -2
- package/src/components/editor/OffCanvasIndicators.tsx +1 -1
- package/src/components/editor/PromotableControl.tsx +1 -1
- package/src/components/editor/PropertyPanel.tsx +2 -2
- package/src/components/editor/SnapToolbar.tsx +2 -2
- package/src/components/editor/TopologyLens.test.tsx +5 -4
- package/src/components/editor/Transform3DCube.tsx +1 -1
- package/src/components/editor/gsapAnimationConstants.ts +2 -2
- package/src/components/editor/gsapAnimationHelpers.test.ts +1 -1
- package/src/components/editor/gsapAnimationHelpers.ts +1 -1
- package/src/components/editor/propertyPanelColorGradingControls.tsx +1 -1
- package/src/components/editor/propertyPanelFill.tsx +1 -1
- package/src/components/editor/propertyPanelFlatMotionSection.tsx +3 -3
- package/src/components/editor/propertyPanelFlatPrimitives.tsx +2 -2
- package/src/components/editor/propertyPanelFlatSelectRow.tsx +1 -1
- package/src/components/editor/propertyPanelFlatTextSection.tsx +1 -1
- package/src/components/editor/propertyPanelFont.tsx +3 -3
- package/src/components/editor/propertyPanelFxBandRuler.tsx +2 -2
- package/src/components/editor/propertyPanelFxNodeOpenBody.tsx +2 -2
- package/src/components/editor/propertyPanelTimingSection.tsx +1 -1
- package/src/components/editor/propertyPanelTransformCommit.ts +3 -3
- package/src/components/editor/useColorGradingController.ts +1 -1
- package/src/components/panels/SlideshowSubPanels.tsx +2 -2
- package/src/components/panels/VariablesBindElement.tsx +1 -1
- package/src/components/panels/VariablesPanel.tsx +3 -3
- package/src/components/renders/GpuEncodingToggle.tsx +28 -0
- package/src/components/renders/RenderQueue.test.tsx +20 -2
- package/src/components/renders/RenderQueue.tsx +15 -3
- package/src/components/renders/RenderQueuePanel.tsx +2 -1
- package/src/components/renders/renderSettings.ts +5 -2
- package/src/components/renders/useRenderQueue.ts +6 -3
- package/src/components/renders/useRenderQueueComposition.test.tsx +12 -0
- package/src/components/sidebar/AssetCard.tsx +2 -2
- package/src/components/sidebar/AudioRow.tsx +1 -1
- package/src/components/sidebar/BlocksTab.tsx +2 -2
- package/src/components/sidebar/CompositionsTab.tsx +2 -2
- package/src/components/sidebar/PromptPreviewModal.tsx +1 -1
- package/src/hooks/timelineAudioGroupCreate.ts +1 -1
- package/src/hooks/timelineEditingHelpers.ts +1 -1
- package/src/hooks/useBlockHandlers.ts +1 -1
- package/src/hooks/useConsoleErrorCapture.test.tsx +21 -2
- package/src/hooks/useConsoleErrorCapture.ts +3 -2
- package/src/hooks/useDomEditSession.ts +1 -1
- package/src/hooks/useEditorSave.ts +1 -1
- package/src/hooks/useFrameCapture.ts +1 -1
- package/src/hooks/useGestureCommit.ts +4 -4
- package/src/hooks/useGsapScriptCommits.ts +1 -1
- package/src/index.ts +1 -0
- package/src/player/components/AudioGainDialog.test.tsx +1 -1
- package/src/player/components/AudioGainDialog.tsx +2 -1
- package/src/player/components/EditModal.tsx +2 -2
- package/src/player/components/KeyframeDiamondContextMenu.tsx +1 -1
- package/src/player/components/OutOfSyncBadge.tsx +1 -1
- package/src/player/components/Player.test.ts +44 -0
- package/src/player/components/Player.tsx +12 -1
- package/src/player/components/ShortcutsPanel.tsx +2 -2
- package/src/player/components/Timeline.virtualization.test.tsx +1 -1
- package/src/player/components/TimelineAutomationLaneSlot.tsx +1 -1
- package/src/player/components/TimelineClip.tsx +1 -1
- package/src/player/components/TimelineFxButton.tsx +2 -2
- package/src/player/components/TimelineTrackHeader.test.tsx +3 -3
- package/src/player/components/timelineClipDragCommit.ts +2 -2
- package/src/player/components/trackHeaderLabelRows.tsx +1 -1
- package/src/player/lib/playbackAdapter.ts +1 -1
- package/src/player/lib/playbackTypes.ts +1 -0
- package/src/player/sceneSwap.test.ts +27 -1
- package/src/player/sceneSwap.ts +16 -2
- package/src/utils/hmrStableContext.ts +1 -1
- package/src/utils/razorSplitTransaction.ts +0 -2
- package/src/utils/sdkCutover.linkedTiming.test.ts +1 -1
- package/dist/chunk-3GHTHPZD.js.map +0 -1
- package/dist/chunk-EEXSYY5F.js.map +0 -1
- package/dist/chunk-G3EDKRZH.js.map +0 -1
- package/dist/chunk-PEAKCOUW.js.map +0 -1
- package/dist/chunk-PZ5AY32C.js.map +0 -1
- package/dist/chunk-Y2OHHNM2.js.map +0 -1
- package/dist/domEditingLayers-PYST4G45.js.map +0 -1
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/player.js.map +0 -1
- package/dist/styles/tailwind-preset.js.map +0 -1
- package/dist/ui.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as P}from"./index-
|
|
1
|
+
import{h as P}from"./index-Cg48BxAo.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 h=e[o+x]-t,_=r.some(function(g){if(g.interval===h)return g.count+=1});_||r.push({interval:h,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};
|
|
@@ -17,103 +17,13 @@ import {
|
|
|
17
17
|
normalizeTimelineCompositionSource,
|
|
18
18
|
parsePx,
|
|
19
19
|
querySelectorAllSafely,
|
|
20
|
+
studioApiFetch,
|
|
20
21
|
withSelectorIndexPass
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import {
|
|
23
|
-
__export
|
|
24
|
-
} from "./chunk-PZ5AY32C.js";
|
|
22
|
+
} from "./chunk-T43DM7Q6.js";
|
|
25
23
|
|
|
26
24
|
// src/components/editor/domEditingLayers.ts
|
|
27
25
|
import { PREVIEW_ONLY_ATTRS } from "@hyperframes/core/studio-preview-mark";
|
|
28
26
|
|
|
29
|
-
// src/components/editor/manualEditingAvailability.ts
|
|
30
|
-
var manualEditingAvailability_exports = {};
|
|
31
|
-
__export(manualEditingAvailability_exports, {
|
|
32
|
-
STUDIO_API_SAME_ORIGIN_CREDENTIALS: () => STUDIO_API_SAME_ORIGIN_CREDENTIALS,
|
|
33
|
-
STUDIO_FLAT_INSPECTOR_ENABLED: () => STUDIO_FLAT_INSPECTOR_ENABLED,
|
|
34
|
-
STUDIO_SDK_CUTOVER_ENABLED: () => STUDIO_SDK_CUTOVER_ENABLED,
|
|
35
|
-
STUDIO_SDK_CUTOVER_FAMILIES: () => STUDIO_SDK_CUTOVER_FAMILIES,
|
|
36
|
-
STUDIO_SDK_RESOLVER_SHADOW_ENABLED: () => STUDIO_SDK_RESOLVER_SHADOW_ENABLED,
|
|
37
|
-
resolveStudioBooleanEnvFlag: () => resolveStudioBooleanEnvFlag
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// src/utils/sdkCutoverPolicy.ts
|
|
41
|
-
var STUDIO_SDK_OPERATION_FAMILIES = [
|
|
42
|
-
"dom",
|
|
43
|
-
"timing",
|
|
44
|
-
"gsap-animation",
|
|
45
|
-
"gsap-keyframe",
|
|
46
|
-
"lifecycle"
|
|
47
|
-
];
|
|
48
|
-
function resolveEnabledSdkFamilies(env2, masterEnabled) {
|
|
49
|
-
if (!masterEnabled) return /* @__PURE__ */ new Set();
|
|
50
|
-
const raw = env2["VITE_STUDIO_SDK_CUTOVER_FAMILIES"];
|
|
51
|
-
if (typeof raw !== "string" || raw.trim() === "") return new Set(STUDIO_SDK_OPERATION_FAMILIES);
|
|
52
|
-
const requested = raw.split(",").map((family) => family.trim()).filter(Boolean);
|
|
53
|
-
const known = new Set(STUDIO_SDK_OPERATION_FAMILIES);
|
|
54
|
-
const unknown = requested.filter((family) => !known.has(family));
|
|
55
|
-
if (unknown.length > 0) {
|
|
56
|
-
throw new Error(`Unknown Studio SDK cutover families: ${unknown.join(", ")}`);
|
|
57
|
-
}
|
|
58
|
-
return new Set(requested);
|
|
59
|
-
}
|
|
60
|
-
function isSdkFamilyEnabled(masterEnabled, configured, family) {
|
|
61
|
-
return masterEnabled && (configured?.has(family) ?? true);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// src/components/editor/manualEditingAvailability.ts
|
|
65
|
-
var TRUTHY_ENV_VALUES = /* @__PURE__ */ new Set(["1", "true", "yes", "on", "enabled"]);
|
|
66
|
-
var FALSY_ENV_VALUES = /* @__PURE__ */ new Set(["0", "false", "no", "off", "disabled"]);
|
|
67
|
-
function resolveStudioBooleanEnvFlag(env2, names, fallback) {
|
|
68
|
-
for (const name of names) {
|
|
69
|
-
const value = env2[name];
|
|
70
|
-
if (typeof value === "boolean") return value;
|
|
71
|
-
if (typeof value !== "string") continue;
|
|
72
|
-
const normalized = value.trim().toLowerCase();
|
|
73
|
-
if (!normalized) continue;
|
|
74
|
-
if (TRUTHY_ENV_VALUES.has(normalized)) return true;
|
|
75
|
-
if (FALSY_ENV_VALUES.has(normalized)) return false;
|
|
76
|
-
}
|
|
77
|
-
return fallback;
|
|
78
|
-
}
|
|
79
|
-
var runtimeEnv = typeof window !== "undefined" ? window.__HF_STUDIO_ENV__ ?? {} : {};
|
|
80
|
-
var env = { ...import.meta.env ?? {}, ...runtimeEnv };
|
|
81
|
-
var STUDIO_SDK_CUTOVER_ENABLED = resolveStudioBooleanEnvFlag(
|
|
82
|
-
env,
|
|
83
|
-
["VITE_STUDIO_SDK_CUTOVER_ENABLED"],
|
|
84
|
-
true
|
|
85
|
-
);
|
|
86
|
-
var STUDIO_SDK_CUTOVER_FAMILIES = resolveEnabledSdkFamilies(
|
|
87
|
-
env,
|
|
88
|
-
STUDIO_SDK_CUTOVER_ENABLED
|
|
89
|
-
);
|
|
90
|
-
var STUDIO_SDK_RESOLVER_SHADOW_ENABLED = resolveStudioBooleanEnvFlag(
|
|
91
|
-
env,
|
|
92
|
-
["VITE_STUDIO_SDK_RESOLVER_SHADOW_ENABLED"],
|
|
93
|
-
true
|
|
94
|
-
);
|
|
95
|
-
var STUDIO_FLAT_INSPECTOR_ENABLED = resolveStudioBooleanEnvFlag(
|
|
96
|
-
env,
|
|
97
|
-
["VITE_STUDIO_ENABLE_FLAT_INSPECTOR", "VITE_STUDIO_FLAT_INSPECTOR_ENABLED"],
|
|
98
|
-
true
|
|
99
|
-
);
|
|
100
|
-
var STUDIO_API_SAME_ORIGIN_CREDENTIALS = resolveStudioBooleanEnvFlag(
|
|
101
|
-
env,
|
|
102
|
-
["VITE_STUDIO_API_SAME_ORIGIN_CREDENTIALS"],
|
|
103
|
-
false
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
// src/utils/studioApiFetch.ts
|
|
107
|
-
var LOOPBACK_HOSTS = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "[::1]"]);
|
|
108
|
-
function studioApiCredentials() {
|
|
109
|
-
if (STUDIO_API_SAME_ORIGIN_CREDENTIALS) return "same-origin";
|
|
110
|
-
const host = globalThis.location?.hostname;
|
|
111
|
-
return !host || LOOPBACK_HOSTS.has(host) ? "omit" : "same-origin";
|
|
112
|
-
}
|
|
113
|
-
function studioApiFetch(input, init) {
|
|
114
|
-
return globalThis.fetch(input, { ...init, credentials: studioApiCredentials() });
|
|
115
|
-
}
|
|
116
|
-
|
|
117
27
|
// src/components/editor/probeSourceElement.ts
|
|
118
28
|
function knownSourceAnswer(previous, element, sourceFile, target) {
|
|
119
29
|
if (!previous || previous.element !== element || previous.sourceFile !== sourceFile) return;
|
|
@@ -902,13 +812,6 @@ function buildDomEditPatchTarget(selection) {
|
|
|
902
812
|
}
|
|
903
813
|
|
|
904
814
|
export {
|
|
905
|
-
isSdkFamilyEnabled,
|
|
906
|
-
STUDIO_SDK_CUTOVER_ENABLED,
|
|
907
|
-
STUDIO_SDK_CUTOVER_FAMILIES,
|
|
908
|
-
STUDIO_SDK_RESOLVER_SHADOW_ENABLED,
|
|
909
|
-
STUDIO_FLAT_INSPECTOR_ENABLED,
|
|
910
|
-
manualEditingAvailability_exports,
|
|
911
|
-
studioApiFetch,
|
|
912
815
|
isElementComputedVisible,
|
|
913
816
|
getDomLayerPatchTarget,
|
|
914
817
|
resolveAllVisualDomEditTargets,
|
|
@@ -939,4 +842,3 @@ export {
|
|
|
939
842
|
readHfId,
|
|
940
843
|
buildDomEditPatchTarget
|
|
941
844
|
};
|
|
942
|
-
//# sourceMappingURL=chunk-PEAKCOUW.js.map
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
HyperframesLoader
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PVFBY7KR.js";
|
|
4
4
|
import {
|
|
5
5
|
buildProjectApiPath,
|
|
6
|
-
splitTimelineElementKey
|
|
7
|
-
|
|
6
|
+
splitTimelineElementKey,
|
|
7
|
+
studioApiFetch
|
|
8
|
+
} from "./chunk-T43DM7Q6.js";
|
|
8
9
|
|
|
9
10
|
// src/player/lib/time.ts
|
|
10
11
|
var STUDIO_PREVIEW_FPS = 30;
|
|
@@ -959,6 +960,87 @@ function whenPreviewBooted(projectId) {
|
|
|
959
960
|
});
|
|
960
961
|
}
|
|
961
962
|
|
|
963
|
+
// src/player/sceneSwap.ts
|
|
964
|
+
var SCENES_SWAPPED = "hf-scenes-swapped";
|
|
965
|
+
var SCENE_SWAP_MS = 5e3;
|
|
966
|
+
var PREVIEW_DOCUMENT_LOADED = "hf-preview-document-loaded";
|
|
967
|
+
function announcePreviewDocumentLoaded(iframe) {
|
|
968
|
+
iframe.dispatchEvent(new Event(PREVIEW_DOCUMENT_LOADED));
|
|
969
|
+
}
|
|
970
|
+
function onPreviewDocumentLoaded(iframe, onLoaded) {
|
|
971
|
+
iframe.addEventListener(PREVIEW_DOCUMENT_LOADED, onLoaded);
|
|
972
|
+
return () => iframe.removeEventListener(PREVIEW_DOCUMENT_LOADED, onLoaded);
|
|
973
|
+
}
|
|
974
|
+
function onPreviewContentReplaced(iframe, onReplaced) {
|
|
975
|
+
const stopLoaded = onPreviewDocumentLoaded(iframe, onReplaced);
|
|
976
|
+
iframe.addEventListener(SCENES_SWAPPED, onReplaced);
|
|
977
|
+
return () => {
|
|
978
|
+
stopLoaded();
|
|
979
|
+
iframe.removeEventListener(SCENES_SWAPPED, onReplaced);
|
|
980
|
+
};
|
|
981
|
+
}
|
|
982
|
+
var PREVIEW_PROMOTED = "hf-preview-promoted";
|
|
983
|
+
function announcePreviewPromoted(promotion) {
|
|
984
|
+
promotion.live.ownerDocument.dispatchEvent(
|
|
985
|
+
new CustomEvent(PREVIEW_PROMOTED, { detail: promotion })
|
|
986
|
+
);
|
|
987
|
+
}
|
|
988
|
+
function onPreviewPromoted(doc, listener) {
|
|
989
|
+
const handle = (event) => listener(event.detail);
|
|
990
|
+
doc.addEventListener(PREVIEW_PROMOTED, handle);
|
|
991
|
+
return () => doc.removeEventListener(PREVIEW_PROMOTED, handle);
|
|
992
|
+
}
|
|
993
|
+
function markScenesStale(iframe, files) {
|
|
994
|
+
const doc = iframe?.contentDocument;
|
|
995
|
+
const meta = doc?.querySelector('meta[name="hf-scene-parts"]');
|
|
996
|
+
if (!doc || !meta) return;
|
|
997
|
+
let parts;
|
|
998
|
+
try {
|
|
999
|
+
parts = JSON.parse(meta.content);
|
|
1000
|
+
} catch {
|
|
1001
|
+
return;
|
|
1002
|
+
}
|
|
1003
|
+
for (const file of files) {
|
|
1004
|
+
const hosts = doc.querySelectorAll(`[data-composition-file="${CSS.escape(file)}"]`);
|
|
1005
|
+
if (hosts.length === 0 && file.endsWith(".html")) parts.shared = "";
|
|
1006
|
+
for (const host of hosts) {
|
|
1007
|
+
const scene = host.closest("[data-hf-scene]")?.getAttribute("data-hf-scene");
|
|
1008
|
+
if (scene && scene in parts.scenes) parts.scenes[scene] = "";
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
meta.content = JSON.stringify(parts);
|
|
1012
|
+
}
|
|
1013
|
+
function sceneSwapFor(iframe) {
|
|
1014
|
+
const win = iframe.contentWindow;
|
|
1015
|
+
const swap = win?.__hfSwapScenes;
|
|
1016
|
+
if (typeof swap !== "function") return null;
|
|
1017
|
+
return async (url, isCurrent, cancel) => {
|
|
1018
|
+
if (cancel?.aborted) throw cancel.reason;
|
|
1019
|
+
const deadline = new AbortController();
|
|
1020
|
+
const timer = setTimeout(
|
|
1021
|
+
() => deadline.abort(new Error("the preview took too long to swap")),
|
|
1022
|
+
SCENE_SWAP_MS
|
|
1023
|
+
);
|
|
1024
|
+
cancel?.addEventListener("abort", () => deadline.abort(cancel.reason), { once: true });
|
|
1025
|
+
const swapping = (async () => {
|
|
1026
|
+
const response = await studioApiFetch(url, { signal: deadline.signal });
|
|
1027
|
+
if (!response.ok) throw new Error(`preview request failed with ${response.status}`);
|
|
1028
|
+
const html = await response.text();
|
|
1029
|
+
if (!isCurrent()) throw new Error("superseded by a newer reload");
|
|
1030
|
+
await swap.call(win, html, deadline.signal);
|
|
1031
|
+
})();
|
|
1032
|
+
const expired = new Promise(
|
|
1033
|
+
(_resolve, reject) => deadline.signal.addEventListener("abort", () => reject(deadline.signal.reason))
|
|
1034
|
+
);
|
|
1035
|
+
try {
|
|
1036
|
+
await Promise.race([swapping, expired]);
|
|
1037
|
+
} finally {
|
|
1038
|
+
clearTimeout(timer);
|
|
1039
|
+
}
|
|
1040
|
+
iframe.dispatchEvent(new Event(SCENES_SWAPPED));
|
|
1041
|
+
};
|
|
1042
|
+
}
|
|
1043
|
+
|
|
962
1044
|
// src/player/components/Player.tsx
|
|
963
1045
|
import { forwardRef, useEffect as useEffect2, useRef, useState } from "react";
|
|
964
1046
|
import { isLottieAnimationLoaded } from "@hyperframes/core/runtime/lottie-readiness";
|
|
@@ -1052,6 +1134,7 @@ function hasUnloadedAssets(iframe, lastResult) {
|
|
|
1052
1134
|
return lastResult;
|
|
1053
1135
|
}
|
|
1054
1136
|
}
|
|
1137
|
+
var runtimeBootedIn = (iframe) => iframe.contentWindow?.__playerReady === true;
|
|
1055
1138
|
var Player = forwardRef(
|
|
1056
1139
|
({
|
|
1057
1140
|
projectId,
|
|
@@ -1130,9 +1213,11 @@ var Player = forwardRef(
|
|
|
1130
1213
|
const loading = getShaderTransitionLoading(event);
|
|
1131
1214
|
if (loading !== null) setShaderTransitionLoading(loading);
|
|
1132
1215
|
};
|
|
1216
|
+
let loadedDocument = null;
|
|
1133
1217
|
const handleReady = () => {
|
|
1134
1218
|
setPreviewError(null);
|
|
1135
1219
|
setCompositionLoading(false);
|
|
1220
|
+
if (iframe.contentDocument && runtimeBootedIn(iframe)) handleLoad();
|
|
1136
1221
|
};
|
|
1137
1222
|
const handlePainted = () => {
|
|
1138
1223
|
setPainted(true);
|
|
@@ -1145,6 +1230,9 @@ var Player = forwardRef(
|
|
|
1145
1230
|
setCompositionLoading(false);
|
|
1146
1231
|
};
|
|
1147
1232
|
const handleLoad = () => {
|
|
1233
|
+
const doc = iframe.contentDocument;
|
|
1234
|
+
if (doc && doc === loadedDocument) return;
|
|
1235
|
+
loadedDocument = doc;
|
|
1148
1236
|
loadCountRef.current++;
|
|
1149
1237
|
setLoaded(true);
|
|
1150
1238
|
setPreviewError(null);
|
|
@@ -1159,6 +1247,7 @@ var Player = forwardRef(
|
|
|
1159
1247
|
container.addEventListener("animationend", onEnd, { once: true });
|
|
1160
1248
|
}
|
|
1161
1249
|
onLoadRef.current();
|
|
1250
|
+
announcePreviewDocumentLoaded(iframe);
|
|
1162
1251
|
if (assetPollRef.current) clearInterval(assetPollRef.current);
|
|
1163
1252
|
const isContentRefresh = loadCountRef.current > 1;
|
|
1164
1253
|
let lastUnloaded = isContentRefresh ? false : hasUnloadedAssets(iframe, false);
|
|
@@ -1171,7 +1260,7 @@ var Player = forwardRef(
|
|
|
1171
1260
|
if (!lastUnloaded || attempts > 100) {
|
|
1172
1261
|
if (lastUnloaded && attempts > 100) {
|
|
1173
1262
|
console.debug(
|
|
1174
|
-
"[studio] asset readiness poll hit the 10s cap
|
|
1263
|
+
"[studio] asset readiness poll hit the 10s cap, continuing with unloaded assets"
|
|
1175
1264
|
);
|
|
1176
1265
|
}
|
|
1177
1266
|
if (assetPollRef.current) clearInterval(assetPollRef.current);
|
|
@@ -1437,6 +1526,12 @@ export {
|
|
|
1437
1526
|
usePlayerStore,
|
|
1438
1527
|
isPreviewBooted,
|
|
1439
1528
|
whenPreviewBooted,
|
|
1529
|
+
announcePreviewDocumentLoaded,
|
|
1530
|
+
onPreviewDocumentLoaded,
|
|
1531
|
+
onPreviewContentReplaced,
|
|
1532
|
+
announcePreviewPromoted,
|
|
1533
|
+
onPreviewPromoted,
|
|
1534
|
+
markScenesStale,
|
|
1535
|
+
sceneSwapFor,
|
|
1440
1536
|
Player
|
|
1441
1537
|
};
|
|
1442
|
-
//# sourceMappingURL=chunk-G3EDKRZH.js.map
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__export
|
|
3
|
+
} from "./chunk-MLKGABMK.js";
|
|
4
|
+
|
|
1
5
|
// src/utils/sourceScopedSelectorIndex.ts
|
|
2
6
|
var activePass = null;
|
|
3
7
|
function withSelectorIndexPass(doc, run) {
|
|
@@ -615,7 +619,7 @@ function resolveStaticSeekFallback(opts) {
|
|
|
615
619
|
if (!warned.current) {
|
|
616
620
|
warned.current = true;
|
|
617
621
|
console.warn(
|
|
618
|
-
`[useTimelinePlayer] Selected adapter duration (${getAdapterDuration(bestAdapter)}s) does not cover the document duration (${docDuration}s); falling back to seek-driven playback, which never starts media elements or WebAudio. Audio will not play in preview
|
|
622
|
+
`[useTimelinePlayer] Selected adapter duration (${getAdapterDuration(bestAdapter)}s) does not cover the document duration (${docDuration}s); falling back to seek-driven playback, which never starts media elements or WebAudio. Audio will not play in preview. Extend the GSAP timeline to cover the declared data-duration.`
|
|
619
623
|
);
|
|
620
624
|
}
|
|
621
625
|
const adapter = createStaticSeekPlaybackAdapter(
|
|
@@ -1032,6 +1036,94 @@ function buildProjectApiPath(projectId, suffix = "") {
|
|
|
1032
1036
|
return `/api/projects/${encodeProjectId(projectId)}${normalizedSuffix}`;
|
|
1033
1037
|
}
|
|
1034
1038
|
|
|
1039
|
+
// src/components/editor/manualEditingAvailability.ts
|
|
1040
|
+
var manualEditingAvailability_exports = {};
|
|
1041
|
+
__export(manualEditingAvailability_exports, {
|
|
1042
|
+
STUDIO_API_SAME_ORIGIN_CREDENTIALS: () => STUDIO_API_SAME_ORIGIN_CREDENTIALS,
|
|
1043
|
+
STUDIO_FLAT_INSPECTOR_ENABLED: () => STUDIO_FLAT_INSPECTOR_ENABLED,
|
|
1044
|
+
STUDIO_SDK_CUTOVER_ENABLED: () => STUDIO_SDK_CUTOVER_ENABLED,
|
|
1045
|
+
STUDIO_SDK_CUTOVER_FAMILIES: () => STUDIO_SDK_CUTOVER_FAMILIES,
|
|
1046
|
+
STUDIO_SDK_RESOLVER_SHADOW_ENABLED: () => STUDIO_SDK_RESOLVER_SHADOW_ENABLED,
|
|
1047
|
+
resolveStudioBooleanEnvFlag: () => resolveStudioBooleanEnvFlag
|
|
1048
|
+
});
|
|
1049
|
+
|
|
1050
|
+
// src/utils/sdkCutoverPolicy.ts
|
|
1051
|
+
var STUDIO_SDK_OPERATION_FAMILIES = [
|
|
1052
|
+
"dom",
|
|
1053
|
+
"timing",
|
|
1054
|
+
"gsap-animation",
|
|
1055
|
+
"gsap-keyframe",
|
|
1056
|
+
"lifecycle"
|
|
1057
|
+
];
|
|
1058
|
+
function resolveEnabledSdkFamilies(env2, masterEnabled) {
|
|
1059
|
+
if (!masterEnabled) return /* @__PURE__ */ new Set();
|
|
1060
|
+
const raw = env2["VITE_STUDIO_SDK_CUTOVER_FAMILIES"];
|
|
1061
|
+
if (typeof raw !== "string" || raw.trim() === "") return new Set(STUDIO_SDK_OPERATION_FAMILIES);
|
|
1062
|
+
const requested = raw.split(",").map((family) => family.trim()).filter(Boolean);
|
|
1063
|
+
const known = new Set(STUDIO_SDK_OPERATION_FAMILIES);
|
|
1064
|
+
const unknown = requested.filter((family) => !known.has(family));
|
|
1065
|
+
if (unknown.length > 0) {
|
|
1066
|
+
throw new Error(`Unknown Studio SDK cutover families: ${unknown.join(", ")}`);
|
|
1067
|
+
}
|
|
1068
|
+
return new Set(requested);
|
|
1069
|
+
}
|
|
1070
|
+
function isSdkFamilyEnabled(masterEnabled, configured, family) {
|
|
1071
|
+
return masterEnabled && (configured?.has(family) ?? true);
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
// src/components/editor/manualEditingAvailability.ts
|
|
1075
|
+
var TRUTHY_ENV_VALUES = /* @__PURE__ */ new Set(["1", "true", "yes", "on", "enabled"]);
|
|
1076
|
+
var FALSY_ENV_VALUES = /* @__PURE__ */ new Set(["0", "false", "no", "off", "disabled"]);
|
|
1077
|
+
function resolveStudioBooleanEnvFlag(env2, names, fallback) {
|
|
1078
|
+
for (const name of names) {
|
|
1079
|
+
const value = env2[name];
|
|
1080
|
+
if (typeof value === "boolean") return value;
|
|
1081
|
+
if (typeof value !== "string") continue;
|
|
1082
|
+
const normalized = value.trim().toLowerCase();
|
|
1083
|
+
if (!normalized) continue;
|
|
1084
|
+
if (TRUTHY_ENV_VALUES.has(normalized)) return true;
|
|
1085
|
+
if (FALSY_ENV_VALUES.has(normalized)) return false;
|
|
1086
|
+
}
|
|
1087
|
+
return fallback;
|
|
1088
|
+
}
|
|
1089
|
+
var runtimeEnv = typeof window !== "undefined" ? window.__HF_STUDIO_ENV__ ?? {} : {};
|
|
1090
|
+
var env = { ...import.meta.env ?? {}, ...runtimeEnv };
|
|
1091
|
+
var STUDIO_SDK_CUTOVER_ENABLED = resolveStudioBooleanEnvFlag(
|
|
1092
|
+
env,
|
|
1093
|
+
["VITE_STUDIO_SDK_CUTOVER_ENABLED"],
|
|
1094
|
+
true
|
|
1095
|
+
);
|
|
1096
|
+
var STUDIO_SDK_CUTOVER_FAMILIES = resolveEnabledSdkFamilies(
|
|
1097
|
+
env,
|
|
1098
|
+
STUDIO_SDK_CUTOVER_ENABLED
|
|
1099
|
+
);
|
|
1100
|
+
var STUDIO_SDK_RESOLVER_SHADOW_ENABLED = resolveStudioBooleanEnvFlag(
|
|
1101
|
+
env,
|
|
1102
|
+
["VITE_STUDIO_SDK_RESOLVER_SHADOW_ENABLED"],
|
|
1103
|
+
true
|
|
1104
|
+
);
|
|
1105
|
+
var STUDIO_FLAT_INSPECTOR_ENABLED = resolveStudioBooleanEnvFlag(
|
|
1106
|
+
env,
|
|
1107
|
+
["VITE_STUDIO_ENABLE_FLAT_INSPECTOR", "VITE_STUDIO_FLAT_INSPECTOR_ENABLED"],
|
|
1108
|
+
true
|
|
1109
|
+
);
|
|
1110
|
+
var STUDIO_API_SAME_ORIGIN_CREDENTIALS = resolveStudioBooleanEnvFlag(
|
|
1111
|
+
env,
|
|
1112
|
+
["VITE_STUDIO_API_SAME_ORIGIN_CREDENTIALS"],
|
|
1113
|
+
false
|
|
1114
|
+
);
|
|
1115
|
+
|
|
1116
|
+
// src/utils/studioApiFetch.ts
|
|
1117
|
+
var LOOPBACK_HOSTS = /* @__PURE__ */ new Set(["localhost", "127.0.0.1", "[::1]"]);
|
|
1118
|
+
function studioApiCredentials() {
|
|
1119
|
+
if (STUDIO_API_SAME_ORIGIN_CREDENTIALS) return "same-origin";
|
|
1120
|
+
const host = globalThis.location?.hostname;
|
|
1121
|
+
return !host || LOOPBACK_HOSTS.has(host) ? "omit" : "same-origin";
|
|
1122
|
+
}
|
|
1123
|
+
function studioApiFetch(input, init) {
|
|
1124
|
+
return globalThis.fetch(input, { ...init, credentials: studioApiCredentials() });
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1035
1127
|
export {
|
|
1036
1128
|
buildProjectHash,
|
|
1037
1129
|
parseProjectHashRoute,
|
|
@@ -1100,6 +1192,12 @@ export {
|
|
|
1100
1192
|
deriveTimelineStoreKeyForDomId,
|
|
1101
1193
|
previewElementFinder,
|
|
1102
1194
|
findClipElementById,
|
|
1103
|
-
createTimelineDomNodeResolver
|
|
1195
|
+
createTimelineDomNodeResolver,
|
|
1196
|
+
isSdkFamilyEnabled,
|
|
1197
|
+
STUDIO_SDK_CUTOVER_ENABLED,
|
|
1198
|
+
STUDIO_SDK_CUTOVER_FAMILIES,
|
|
1199
|
+
STUDIO_SDK_RESOLVER_SHADOW_ENABLED,
|
|
1200
|
+
STUDIO_FLAT_INSPECTOR_ENABLED,
|
|
1201
|
+
manualEditingAvailability_exports,
|
|
1202
|
+
studioApiFetch
|
|
1104
1203
|
};
|
|
1105
|
-
//# sourceMappingURL=chunk-3GHTHPZD.js.map
|
|
@@ -19,9 +19,9 @@ import {
|
|
|
19
19
|
resolveDomEditCapabilities,
|
|
20
20
|
resolveDomEditSelection,
|
|
21
21
|
serializeDomEditTextFields
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
22
|
+
} from "./chunk-HZDCMUG4.js";
|
|
23
|
+
import "./chunk-T43DM7Q6.js";
|
|
24
|
+
import "./chunk-MLKGABMK.js";
|
|
25
25
|
export {
|
|
26
26
|
buildDefaultDomEditTextField,
|
|
27
27
|
buildDomEditPatchTarget,
|
|
@@ -44,4 +44,3 @@ export {
|
|
|
44
44
|
resolveDomEditSelection,
|
|
45
45
|
serializeDomEditTextFields
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=domEditingLayers-PYST4G45.js.map
|
package/dist/index.css
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -2692,6 +2692,7 @@ interface StartRenderOptions {
|
|
|
2692
2692
|
format?: "mp4" | "webm" | "mov";
|
|
2693
2693
|
/** `"auto"` (default) renders at the composition's authored dimensions. */
|
|
2694
2694
|
resolution?: ResolutionPreset | "auto";
|
|
2695
|
+
gpu?: boolean;
|
|
2695
2696
|
/**
|
|
2696
2697
|
* Render a specific composition file. Omit it to render the composition the
|
|
2697
2698
|
* user currently has open — only the sidebar's per-composition Render button
|
|
@@ -2728,7 +2729,7 @@ interface CompositionDimensions {
|
|
|
2728
2729
|
width: number;
|
|
2729
2730
|
height: number;
|
|
2730
2731
|
}
|
|
2731
|
-
type StartRenderHandler = (format: "mp4" | "webm" | "mov", quality: "draft" | "standard" | "high", resolution: ResolutionPreset | "auto", fps: 24 | 30 | 60) => void | Promise<void>;
|
|
2732
|
+
type StartRenderHandler = (format: "mp4" | "webm" | "mov", quality: "draft" | "standard" | "high", resolution: ResolutionPreset | "auto", fps: 24 | 30 | 60, gpu?: boolean) => void | Promise<void>;
|
|
2732
2733
|
interface RenderQueueProps {
|
|
2733
2734
|
jobs: RenderJob[];
|
|
2734
2735
|
projectId: string;
|
|
@@ -2764,9 +2765,10 @@ interface PersistedRenderSettings {
|
|
|
2764
2765
|
format: "mp4" | "webm" | "mov";
|
|
2765
2766
|
quality: "draft" | "standard" | "high";
|
|
2766
2767
|
fps: 24 | 30 | 60;
|
|
2768
|
+
gpu: boolean;
|
|
2767
2769
|
}
|
|
2768
2770
|
declare function getPersistedRenderSettings(): PersistedRenderSettings;
|
|
2769
|
-
declare function persistRenderSettings(format: PersistedRenderSettings["format"], quality: PersistedRenderSettings["quality"], fps: PersistedRenderSettings["fps"]): void;
|
|
2771
|
+
declare function persistRenderSettings(format: PersistedRenderSettings["format"], quality: PersistedRenderSettings["quality"], fps: PersistedRenderSettings["fps"], gpu?: boolean): void;
|
|
2770
2772
|
|
|
2771
2773
|
interface PickedElement {
|
|
2772
2774
|
id: string | null;
|
|
@@ -3590,6 +3592,7 @@ declare function useDomEditSession({ projectId, activeCompPath, compIdToSrc, cap
|
|
|
3590
3592
|
/** The one source for which preview is on screen: the host's iframe, then each reload promoted in its place. */
|
|
3591
3593
|
declare function useLivePreviewIframe(host: HTMLIFrameElement | null): HTMLIFrameElement | null;
|
|
3592
3594
|
|
|
3595
|
+
declare function announcePreviewDocumentLoaded(iframe: HTMLIFrameElement): void;
|
|
3593
3596
|
type PreviewPromotion = {
|
|
3594
3597
|
retired: HTMLIFrameElement | null;
|
|
3595
3598
|
live: HTMLIFrameElement;
|
|
@@ -3842,8 +3845,8 @@ interface StudioPlaybackValue {
|
|
|
3842
3845
|
refreshPreviewDocumentVersion: () => void;
|
|
3843
3846
|
}
|
|
3844
3847
|
|
|
3845
|
-
/** Studio state the panel reads; passed by hosts outside Studio's providers. Keep previewIframeRef stable
|
|
3846
|
-
*
|
|
3848
|
+
/** Studio state the panel reads; passed by hosts outside Studio's providers. Keep previewIframeRef stable;
|
|
3849
|
+
* a host with its own player calls announcePreviewDocumentLoaded on each new page, or bumps refreshKey. */
|
|
3847
3850
|
type LayersPanelHost = Pick<StudioShellValue, "previewIframeRef" | "activeCompPath" | "showToast"> & Pick<StudioPlaybackValue, "timelineElements" | "isPlaying"> & Partial<Pick<StudioPlaybackValue, "refreshKey" | "compositionLoading">>;
|
|
3848
3851
|
declare const LayersPanel: react.NamedExoticComponent<{
|
|
3849
3852
|
host?: LayersPanelHost;
|
|
@@ -4312,4 +4315,4 @@ declare function buildStudioTools(depsRef: {
|
|
|
4312
4315
|
readonly current: StudioAgentToolsDeps;
|
|
4313
4316
|
}): ModelContextTool[];
|
|
4314
4317
|
|
|
4315
|
-
export { type AgentModalAnchorPoint, type AgentPromptElementInfo, AskAgentModal, type AskAgentModalProps, AudioMeterStrip, type AudioMeterStripProps, AudioWaveform, type AudioWaveformProps, type BlockedTimelineEditIntent, type CanEditTimelineElement, ColorField, CompositionBreadcrumb, type CompositionDimensions, type CompositionLevel, CompositionThumbnail, ConnectedDomEditOverlay, type ConnectedDomEditOverlayProps, DEFAULT_SHORTCUT_SECTIONS, Dock, type DockController, type DomEditCapabilities, type DomEditCommitDeclineReason, type DomEditCommitOutcome, type DomEditGroupPathOffsetCommit, DomEditOverlay, type DomEditOverlayProps, DomEditProvider, type DomEditSelection, type DomEditZOrder, type DomGeometryCommits, type EditHistoryHandle, EditorShell, type EditorShellProps, type ExternalFileChangeBlockedState, type ExternalFileChangeCoordinatorHandle, ExternalFileConflictBanner, type FadeEdge, type FadeHandleBox, type FadeHandleClipBox, type FfmpegStatus, FileTree, GradientField, GridOverlay, ImageThumbnail, type ImageThumbnailProps, LayersPanel, type LayersPanelHost, type LinkShortcutCallbacks, type MarqueeGestures, type MarqueeGesturesDeps, MarqueeOverlay, type MarqueeOverlayProps, type Rect$1 as MarqueeRect, type ModelContextTool, NLEPreview, type PanelId, type PatchOperation, type PersistedRenderSettings, type PickedElement, PlayerControls, type PlayerHandle, type PlayerHandleElement, type PlayerHandleListener, type PlayerHandleTimeListener, type DomEditCompositionRect as PreviewCompositionRect, PreviewGuides, PreviewOverlayProvider, type PreviewOverlayProviderProps, type PreviewPromotion, PreviewReadOnlyProvider, type PreviewSnapPreferences, PropertyPanel, type RenderJob, RenderQueue, type RenderQueueProps, type ResolutionPreset, SNAP_THRESHOLD_PX, type ShortcutHint, type ShortcutSection, ShortcutsButton, type ShortcutsButtonProps, type SnapContext, type SnapEdge, type SnapGuide, SnapGuideOverlay, type SnapGuideOverlayProps, type SnapGuidesState, type Rect as SnapRect, type SnapResult, type SnapTarget, SnapToolbar, SourceEditor, type SpacingGuide, type StartRenderOptions, type StudioAgentToolsDeps, StudioApp, StudioFileConflictError, type StudioLookSnapshot, type StudioPendingEditsDrainResult, TRACK_H, type ThumbnailPriority, type ThumbnailStill, Timeline, TimelineClipMenu, type TimelineClipMenuItem, type TimelineClipRenderContext, type TimelineEditCallbacks, type TimelineEditOutcome, type TimelineEditPermission, TimelineEditPopover, TimelineEditProvider, type TimelineElement, TimelineEmptyStatePart, TimelineFrame, TimelineGapMenu, TimelineHistoryButtons, type TimelineHistoryButtonsProps, TimelineKeyframeMenu, TimelineLanes, TimelineOverlays, TimelinePane, type TimelinePaneProps, TimelinePlayhead, TimelineProvider, TimelineRazorGuide, TimelineRuler, TimelineShortcutHint, type TimelineTheme, type TimelineTimeRange$1 as TimelineTimeRange, TimelineToolbar, type TimelineToolbarProps, type TimelineTrackPadding, type TimelineZIndexReorderCommit, type ToolResult, type UseClipboardOptions, type UseDomEditSessionParams, type UseDomGeometryCommitOptions, type UseDomStyleCommitOptions, type UseEditHistoryActionsOptions, type UsePersistentEditHistoryOptions, type UsePreviewPersistenceParams, type UseProjectFileWriterOptions, type UseRenderClipContentOptions, type UseThumbnailStillOptions, type UseTimelineEditingOptions, VideoThumbnail, type ZOrderAction, applyPatch, buildCompositionSnapTarget, buildGridSnapEdges, buildPickerAgentContextPreview, buildPickerAgentPrompt, buildStudioTools, cancelNewestStudioWaitingPress, collectSnapContext, collectStudioLookScene, currentTimelineRange, dispatchLinkShortcut, displayTrackOrder, extractSnapTargets, fadeHandleBoxes, findElementBlock, flushStudioPendingEdits, formatTime, getPersistedRenderSettings, liveTime, mergeStyleIntoTag, openAudioGainDialog, parseStyleString, persistRenderSettings, resolveDomEditSelection, resolveEquidistanceGuides, resolveGuideLineRect, resolveIframe, resolveSnapAdjustment, resolveSourceFile, revertNewestStudioPendingEdit, snapEngagedForTravel, useAudioGainDialogStore, useAudioMetersVisible, useClipboard, useCompositionStack, useDockLayoutStore, useDomEditSelectionContext, useDomEditSession, useDomEditZOrder, useDomGeometryCommit, useDomStyleCommit, useEditHistoryActions, useElementPicker, useLivePreviewIframe, useMarqueeGestures, usePersistentEditHistory, usePlayerHandle, usePlayerStore, usePreviewCompositionRect, usePreviewGuidesStore, usePreviewIframeStore, usePreviewOverlayContext, usePreviewPersistence, useProjectFileWriter, useRenderClipContent, useRenderQueue, useThumbnailStill, useTimelineContext, useTimelineEditing, useTimelinePlayer, zoomTimelineToRange };
|
|
4318
|
+
export { type AgentModalAnchorPoint, type AgentPromptElementInfo, AskAgentModal, type AskAgentModalProps, AudioMeterStrip, type AudioMeterStripProps, AudioWaveform, type AudioWaveformProps, type BlockedTimelineEditIntent, type CanEditTimelineElement, ColorField, CompositionBreadcrumb, type CompositionDimensions, type CompositionLevel, CompositionThumbnail, ConnectedDomEditOverlay, type ConnectedDomEditOverlayProps, DEFAULT_SHORTCUT_SECTIONS, Dock, type DockController, type DomEditCapabilities, type DomEditCommitDeclineReason, type DomEditCommitOutcome, type DomEditGroupPathOffsetCommit, DomEditOverlay, type DomEditOverlayProps, DomEditProvider, type DomEditSelection, type DomEditZOrder, type DomGeometryCommits, type EditHistoryHandle, EditorShell, type EditorShellProps, type ExternalFileChangeBlockedState, type ExternalFileChangeCoordinatorHandle, ExternalFileConflictBanner, type FadeEdge, type FadeHandleBox, type FadeHandleClipBox, type FfmpegStatus, FileTree, GradientField, GridOverlay, ImageThumbnail, type ImageThumbnailProps, LayersPanel, type LayersPanelHost, type LinkShortcutCallbacks, type MarqueeGestures, type MarqueeGesturesDeps, MarqueeOverlay, type MarqueeOverlayProps, type Rect$1 as MarqueeRect, type ModelContextTool, NLEPreview, type PanelId, type PatchOperation, type PersistedRenderSettings, type PickedElement, PlayerControls, type PlayerHandle, type PlayerHandleElement, type PlayerHandleListener, type PlayerHandleTimeListener, type DomEditCompositionRect as PreviewCompositionRect, PreviewGuides, PreviewOverlayProvider, type PreviewOverlayProviderProps, type PreviewPromotion, PreviewReadOnlyProvider, type PreviewSnapPreferences, PropertyPanel, type RenderJob, RenderQueue, type RenderQueueProps, type ResolutionPreset, SNAP_THRESHOLD_PX, type ShortcutHint, type ShortcutSection, ShortcutsButton, type ShortcutsButtonProps, type SnapContext, type SnapEdge, type SnapGuide, SnapGuideOverlay, type SnapGuideOverlayProps, type SnapGuidesState, type Rect as SnapRect, type SnapResult, type SnapTarget, SnapToolbar, SourceEditor, type SpacingGuide, type StartRenderOptions, type StudioAgentToolsDeps, StudioApp, StudioFileConflictError, type StudioLookSnapshot, type StudioPendingEditsDrainResult, TRACK_H, type ThumbnailPriority, type ThumbnailStill, Timeline, TimelineClipMenu, type TimelineClipMenuItem, type TimelineClipRenderContext, type TimelineEditCallbacks, type TimelineEditOutcome, type TimelineEditPermission, TimelineEditPopover, TimelineEditProvider, type TimelineElement, TimelineEmptyStatePart, TimelineFrame, TimelineGapMenu, TimelineHistoryButtons, type TimelineHistoryButtonsProps, TimelineKeyframeMenu, TimelineLanes, TimelineOverlays, TimelinePane, type TimelinePaneProps, TimelinePlayhead, TimelineProvider, TimelineRazorGuide, TimelineRuler, TimelineShortcutHint, type TimelineTheme, type TimelineTimeRange$1 as TimelineTimeRange, TimelineToolbar, type TimelineToolbarProps, type TimelineTrackPadding, type TimelineZIndexReorderCommit, type ToolResult, type UseClipboardOptions, type UseDomEditSessionParams, type UseDomGeometryCommitOptions, type UseDomStyleCommitOptions, type UseEditHistoryActionsOptions, type UsePersistentEditHistoryOptions, type UsePreviewPersistenceParams, type UseProjectFileWriterOptions, type UseRenderClipContentOptions, type UseThumbnailStillOptions, type UseTimelineEditingOptions, VideoThumbnail, type ZOrderAction, announcePreviewDocumentLoaded, applyPatch, buildCompositionSnapTarget, buildGridSnapEdges, buildPickerAgentContextPreview, buildPickerAgentPrompt, buildStudioTools, cancelNewestStudioWaitingPress, collectSnapContext, collectStudioLookScene, currentTimelineRange, dispatchLinkShortcut, displayTrackOrder, extractSnapTargets, fadeHandleBoxes, findElementBlock, flushStudioPendingEdits, formatTime, getPersistedRenderSettings, liveTime, mergeStyleIntoTag, openAudioGainDialog, parseStyleString, persistRenderSettings, resolveDomEditSelection, resolveEquidistanceGuides, resolveGuideLineRect, resolveIframe, resolveSnapAdjustment, resolveSourceFile, revertNewestStudioPendingEdit, snapEngagedForTravel, useAudioGainDialogStore, useAudioMetersVisible, useClipboard, useCompositionStack, useDockLayoutStore, useDomEditSelectionContext, useDomEditSession, useDomEditZOrder, useDomGeometryCommit, useDomStyleCommit, useEditHistoryActions, useElementPicker, useLivePreviewIframe, useMarqueeGestures, usePersistentEditHistory, usePlayerHandle, usePlayerStore, usePreviewCompositionRect, usePreviewGuidesStore, usePreviewIframeStore, usePreviewOverlayContext, usePreviewPersistence, useProjectFileWriter, useRenderClipContent, useRenderQueue, useThumbnailStill, useTimelineContext, useTimelineEditing, useTimelinePlayer, zoomTimelineToRange };
|
package/dist/index.html
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
document.documentElement.dataset.theme = "paper";
|
|
15
15
|
}
|
|
16
16
|
</script>
|
|
17
|
-
<script type="module" crossorigin src="/assets/index-
|
|
17
|
+
<script type="module" crossorigin src="/assets/index-Cg48BxAo.js"></script>
|
|
18
18
|
<link rel="stylesheet" crossorigin href="/assets/index-CVd4O6eH.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|