@remotion/studio 4.0.472 → 4.0.473

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 (133) hide show
  1. package/dist/api/rename-static-file.d.ts +6 -0
  2. package/dist/api/rename-static-file.js +18 -0
  3. package/dist/components/AssetSelector.js +45 -4
  4. package/dist/components/AssetSelectorItem.js +153 -27
  5. package/dist/components/Canvas.js +60 -11
  6. package/dist/components/ConfirmationDialog-types.d.ts +8 -0
  7. package/dist/components/ConfirmationDialog-types.js +2 -0
  8. package/dist/components/ConfirmationDialog.d.ts +7 -0
  9. package/dist/components/ConfirmationDialog.js +103 -0
  10. package/dist/components/ContextMenu.d.ts +9 -1
  11. package/dist/components/ContextMenu.js +49 -5
  12. package/dist/components/CurrentAsset.d.ts +1 -0
  13. package/dist/components/CurrentAsset.js +13 -2
  14. package/dist/components/EditorContent.js +15 -2
  15. package/dist/components/EditorContexts.js +2 -1
  16. package/dist/components/EditorRuler/Ruler.js +2 -0
  17. package/dist/components/ExplorerPanel.d.ts +0 -4
  18. package/dist/components/ExplorerPanel.js +8 -4
  19. package/dist/components/ExplorerPanelRef.d.ts +4 -0
  20. package/dist/components/ExplorerPanelRef.js +5 -0
  21. package/dist/components/FilePreview.d.ts +1 -1
  22. package/dist/components/InitialCompositionLoader.d.ts +0 -1
  23. package/dist/components/InitialCompositionLoader.js +5 -27
  24. package/dist/components/Menu/MenuItem.js +7 -1
  25. package/dist/components/Menu/SubMenu.js +5 -1
  26. package/dist/components/Menu/portals.js +17 -8
  27. package/dist/components/MenuToolbar.js +5 -1
  28. package/dist/components/ModalContainer.js +6 -1
  29. package/dist/components/Modals.js +6 -2
  30. package/dist/components/NewComposition/ComboBox.js +8 -2
  31. package/dist/components/NewComposition/DeleteStaticFile.d.ts +4 -0
  32. package/dist/components/NewComposition/DeleteStaticFile.js +44 -0
  33. package/dist/components/NewComposition/RenameStaticFile.d.ts +4 -0
  34. package/dist/components/NewComposition/RenameStaticFile.js +118 -0
  35. package/dist/components/OptionsPanel.js +5 -1
  36. package/dist/components/OutlineToggle.d.ts +2 -0
  37. package/dist/components/OutlineToggle.js +20 -0
  38. package/dist/components/Preview.d.ts +0 -2
  39. package/dist/components/Preview.js +23 -33
  40. package/dist/components/PreviewToolbar.js +19 -6
  41. package/dist/components/RenderButton.js +8 -2
  42. package/dist/components/RenderPreview.js +2 -2
  43. package/dist/components/SelectedOutlineOverlay.d.ts +24 -0
  44. package/dist/components/SelectedOutlineOverlay.js +190 -22
  45. package/dist/components/ShowOutlinesProvider.d.ts +4 -0
  46. package/dist/components/ShowOutlinesProvider.js +24 -0
  47. package/dist/components/SizeSelector.js +3 -3
  48. package/dist/components/Splitter/SplitterHandle.js +2 -0
  49. package/dist/components/StaticFilePreview.js +2 -2
  50. package/dist/components/Timeline/KeyframeSettingsModal.d.ts +15 -0
  51. package/dist/components/Timeline/KeyframeSettingsModal.js +150 -0
  52. package/dist/components/Timeline/Timeline.js +3 -13
  53. package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +25 -2
  54. package/dist/components/Timeline/TimelineClipboardKeybindings.js +234 -20
  55. package/dist/components/Timeline/TimelineDeleteKeybindings.js +12 -2
  56. package/dist/components/Timeline/TimelineEffectItem.js +1 -0
  57. package/dist/components/Timeline/TimelineEffectPropItem.js +52 -2
  58. package/dist/components/Timeline/TimelineKeyframeControls.js +5 -15
  59. package/dist/components/Timeline/TimelineKeyframeDiamond.js +24 -21
  60. package/dist/components/Timeline/TimelineKeyframeDiamondIcon.d.ts +6 -0
  61. package/dist/components/Timeline/TimelineKeyframeDiamondIcon.js +14 -0
  62. package/dist/components/Timeline/TimelineKeyframeDragState.d.ts +17 -0
  63. package/dist/components/Timeline/TimelineKeyframeDragState.js +39 -0
  64. package/dist/components/Timeline/TimelineList.js +2 -2
  65. package/dist/components/Timeline/TimelineMediaInfo.d.ts +0 -13
  66. package/dist/components/Timeline/TimelineMediaInfo.js +8 -73
  67. package/dist/components/Timeline/TimelineScaleField.js +1 -1
  68. package/dist/components/Timeline/TimelineSequenceItem.d.ts +1 -0
  69. package/dist/components/Timeline/TimelineSequenceItem.js +276 -22
  70. package/dist/components/Timeline/TimelineSequencePropItem.js +81 -16
  71. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +25 -28
  72. package/dist/components/Timeline/apply-effect-response-to-code-values.d.ts +5 -0
  73. package/dist/components/Timeline/apply-effect-response-to-code-values.js +19 -0
  74. package/dist/components/Timeline/call-add-keyframe.js +2 -0
  75. package/dist/components/Timeline/call-move-keyframe.d.ts +19 -0
  76. package/dist/components/Timeline/call-move-keyframe.js +71 -0
  77. package/dist/components/Timeline/call-update-keyframe-settings.d.ts +22 -0
  78. package/dist/components/Timeline/call-update-keyframe-settings.js +52 -0
  79. package/dist/components/Timeline/delete-selected-timeline-item.d.ts +7 -4
  80. package/dist/components/Timeline/delete-selected-timeline-item.js +33 -21
  81. package/dist/components/Timeline/duplicate-selected-timeline-item.d.ts +4 -2
  82. package/dist/components/Timeline/duplicate-selected-timeline-item.js +39 -34
  83. package/dist/components/Timeline/get-bounded-keyframe-drag-delta.d.ts +8 -0
  84. package/dist/components/Timeline/get-bounded-keyframe-drag-delta.js +12 -0
  85. package/dist/components/Timeline/get-keyframe-navigation.d.ts +2 -2
  86. package/dist/components/Timeline/get-keyframe-navigation.js +14 -6
  87. package/dist/components/Timeline/reset-selected-timeline-props.js +3 -2
  88. package/dist/components/Timeline/save-effect-prop.d.ts +14 -3
  89. package/dist/components/Timeline/save-effect-prop.js +36 -18
  90. package/dist/components/Timeline/save-prop-queue.d.ts +2 -1
  91. package/dist/components/Timeline/save-prop-queue.js +5 -2
  92. package/dist/components/Timeline/save-sequence-prop.d.ts +2 -7
  93. package/dist/components/Timeline/save-sequence-prop.js +33 -30
  94. package/dist/components/Timeline/should-clear-selection-on-pointer-down.d.ts +3 -0
  95. package/dist/components/Timeline/should-clear-selection-on-pointer-down.js +7 -0
  96. package/dist/components/Timeline/timeline-asset-link.d.ts +13 -0
  97. package/dist/components/Timeline/timeline-asset-link.js +37 -0
  98. package/dist/components/Timeline/timeline-translate-utils.js +4 -1
  99. package/dist/components/Timeline/use-timeline-keyframe-drag.d.ts +10 -0
  100. package/dist/components/Timeline/use-timeline-keyframe-drag.js +378 -0
  101. package/dist/components/import-assets.d.ts +16 -0
  102. package/dist/components/import-assets.js +155 -18
  103. package/dist/components/load-canvas-content-from-url.d.ts +1 -0
  104. package/dist/components/load-canvas-content-from-url.js +9 -3
  105. package/dist/components/use-select-asset.d.ts +1 -0
  106. package/dist/components/use-select-asset.js +30 -0
  107. package/dist/error-overlay/error-origin.d.ts +3 -0
  108. package/dist/error-overlay/error-origin.js +42 -0
  109. package/dist/error-overlay/react-overlay/listen-to-runtime-errors.js +6 -2
  110. package/dist/error-overlay/remotion-overlay/ErrorLoader.js +38 -0
  111. package/dist/error-overlay/remotion-overlay/ShortcutHint.js +1 -1
  112. package/dist/error-overlay/remotion-overlay/log-studio-error.d.ts +3 -0
  113. package/dist/error-overlay/remotion-overlay/log-studio-error.js +27 -0
  114. package/dist/esm/{chunk-48grt472.js → chunk-q0jkt0zq.js} +21961 -19299
  115. package/dist/esm/internals.mjs +21961 -19299
  116. package/dist/esm/previewEntry.mjs +20600 -17914
  117. package/dist/esm/renderEntry.mjs +1 -1
  118. package/dist/helpers/get-asset-metadata.js +2 -2
  119. package/dist/helpers/get-preview-file-type.d.ts +2 -0
  120. package/dist/helpers/get-preview-file-type.js +33 -0
  121. package/dist/helpers/install-required-package.d.ts +1 -0
  122. package/dist/helpers/install-required-package.js +39 -0
  123. package/dist/helpers/remote-asset-drag.d.ts +4 -0
  124. package/dist/helpers/remote-asset-drag.js +73 -0
  125. package/dist/helpers/use-asset-drag-events.d.ts +5 -2
  126. package/dist/helpers/use-asset-drag-events.js +13 -2
  127. package/dist/hot-middleware-client/client.js +6 -0
  128. package/dist/state/editor-outlines.d.ts +8 -0
  129. package/dist/state/editor-outlines.js +18 -0
  130. package/dist/state/modals.d.ts +19 -2
  131. package/package.json +10 -10
  132. package/dist/helpers/detect-file-type.d.ts +0 -69
  133. package/dist/helpers/detect-file-type.js +0 -278
@@ -40,49 +40,52 @@ const remotion_1 = require("remotion");
40
40
  const colors_1 = require("../../helpers/colors");
41
41
  const get_left_of_timeline_slider_1 = require("../../helpers/get-left-of-timeline-slider");
42
42
  const timeline_layout_1 = require("../../helpers/timeline-layout");
43
+ const TimelineKeyframeDiamondIcon_1 = require("./TimelineKeyframeDiamondIcon");
44
+ const TimelineKeyframeDragState_1 = require("./TimelineKeyframeDragState");
43
45
  const TimelineSelection_1 = require("./TimelineSelection");
44
46
  const TimelineWidthProvider_1 = require("./TimelineWidthProvider");
47
+ const use_timeline_keyframe_drag_1 = require("./use-timeline-keyframe-drag");
48
+ const diamondSize = 12;
45
49
  const diamondBase = {
50
+ alignItems: 'center',
51
+ background: 'none',
52
+ border: 'none',
53
+ display: 'flex',
54
+ height: diamondSize,
55
+ justifyContent: 'center',
56
+ padding: 0,
46
57
  position: 'absolute',
47
- width: 8,
48
- height: 8,
49
- backgroundColor: colors_1.LIGHT_TEXT,
50
- borderRadius: 1,
51
- boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.4)',
58
+ width: diamondSize,
52
59
  };
53
60
  const TimelineKeyframeDiamondUnmemoized = ({ frame, rowHeight, nodePathInfo }) => {
54
61
  const videoConfig = (0, remotion_1.useVideoConfig)();
55
62
  const timelineWidth = (0, react_1.useContext)(TimelineWidthProvider_1.TimelineWidthContext);
56
63
  const { selected, onSelect, selectable } = (0, TimelineSelection_1.useTimelineKeyframeSelection)(nodePathInfo, frame);
64
+ const { isKeyframeDragging } = (0, TimelineKeyframeDragState_1.useTimelineKeyframeDragState)();
65
+ const visuallySelected = selected || isKeyframeDragging({ nodePathInfo, frame });
57
66
  const style = (0, react_1.useMemo)(() => {
58
67
  if (timelineWidth === null) {
59
68
  return null;
60
69
  }
61
70
  return {
62
71
  ...diamondBase,
63
- backgroundColor: colors_1.LIGHT_TEXT,
64
- outline: selected ? '2px solid ' + colors_1.BLUE : 'none',
65
- border: 'none',
66
72
  cursor: 'pointer',
67
73
  left: (0, get_left_of_timeline_slider_1.getXPositionOfItemInTimelineImperatively)(frame, videoConfig.durationInFrames, timelineWidth) - timeline_layout_1.TIMELINE_PADDING,
68
- padding: 0,
69
74
  pointerEvents: 'auto',
70
75
  top: rowHeight / 2,
71
- transform: 'translate(-50%, -50%) rotate(45deg)',
76
+ transform: 'translate(-50%, -50%)',
72
77
  };
73
- }, [frame, rowHeight, selected, timelineWidth, videoConfig.durationInFrames]);
74
- const onPointerDown = (0, react_1.useCallback)((e) => {
75
- if (e.button === 0) {
76
- e.stopPropagation();
77
- onSelect({
78
- shiftKey: e.shiftKey,
79
- toggleKey: e.metaKey || e.ctrlKey,
80
- });
81
- }
82
- }, [onSelect]);
78
+ }, [frame, rowHeight, timelineWidth, videoConfig.durationInFrames]);
79
+ const onPointerDown = (0, use_timeline_keyframe_drag_1.useTimelineKeyframeDrag)({
80
+ frame,
81
+ nodePathInfo,
82
+ onSelect,
83
+ selectable,
84
+ selected,
85
+ });
83
86
  if (style === null) {
84
87
  return null;
85
88
  }
86
- return (jsx_runtime_1.jsx("button", { type: "button", style: style, title: `Keyframe at frame ${frame}`, "aria-label": `Select keyframe at frame ${frame}`, onPointerDown: selectable ? onPointerDown : undefined }));
89
+ return (jsx_runtime_1.jsx("button", { type: "button", style: style, title: `Keyframe at frame ${frame}`, "aria-label": `Select keyframe at frame ${frame}`, onPointerDown: selectable ? onPointerDown : undefined, children: jsx_runtime_1.jsx(TimelineKeyframeDiamondIcon_1.TimelineKeyframeDiamondIcon, { color: colors_1.LIGHT_TEXT, selected: visuallySelected, size: diamondSize }) }));
87
90
  };
88
91
  exports.TimelineKeyframeDiamond = react_1.default.memo(TimelineKeyframeDiamondUnmemoized);
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const TimelineKeyframeDiamondIcon: React.FC<{
3
+ readonly color: string;
4
+ readonly selected?: boolean;
5
+ readonly size: number;
6
+ }>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimelineKeyframeDiamondIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const colors_1 = require("../../helpers/colors");
6
+ const svgStyle = {
7
+ display: 'block',
8
+ overflow: 'visible',
9
+ };
10
+ const TimelineKeyframeDiamondIcon = ({ color, selected = false, size }) => {
11
+ return (jsx_runtime_1.jsxs("svg", { width: size, height: size, viewBox: "0 0 12 12", style: svgStyle, "aria-hidden": "true", focusable: "false", children: [selected ? (jsx_runtime_1.jsx("polygon", { points: "6 0.75 11.25 6 6 11.25 0.75 6", fill: "none", stroke: colors_1.BLUE, strokeWidth: "1.5", strokeLinejoin: "round" })) : null, jsx_runtime_1.jsx("polygon", { points: "6 1.5 10.5 6 6 10.5 1.5 6", fill: color, stroke: "rgba(0, 0, 0, 0.4)", strokeWidth: "1", strokeLinejoin: "round" })
12
+ ] }));
13
+ };
14
+ exports.TimelineKeyframeDiamondIcon = TimelineKeyframeDiamondIcon;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { SequenceNodePathInfo } from '../../helpers/get-timeline-sequence-sort-key';
3
+ export type TimelineDraggedKeyframe = {
4
+ readonly nodePathInfo: SequenceNodePathInfo;
5
+ readonly frame: number;
6
+ };
7
+ export declare const getTimelineKeyframeDragKey: ({ nodePathInfo, frame, }: TimelineDraggedKeyframe) => string;
8
+ type TimelineKeyframeDragStateContextValue = {
9
+ readonly clearDraggedKeyframes: () => void;
10
+ readonly isKeyframeDragging: (keyframe: TimelineDraggedKeyframe) => boolean;
11
+ readonly setDraggedKeyframes: (keyframes: readonly TimelineDraggedKeyframe[]) => void;
12
+ };
13
+ export declare const TimelineKeyframeDragStateProvider: React.FC<{
14
+ readonly children: React.ReactNode;
15
+ }>;
16
+ export declare const useTimelineKeyframeDragState: () => TimelineKeyframeDragStateContextValue;
17
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useTimelineKeyframeDragState = exports.TimelineKeyframeDragStateProvider = exports.getTimelineKeyframeDragKey = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const timeline_node_path_key_1 = require("../../helpers/timeline-node-path-key");
7
+ const emptyDraggedKeyframes = new Set();
8
+ const getTimelineKeyframeDragKey = ({ nodePathInfo, frame, }) => {
9
+ return `${(0, timeline_node_path_key_1.timelineNodePathInfoToKey)(nodePathInfo)}.keyframe.${frame}`;
10
+ };
11
+ exports.getTimelineKeyframeDragKey = getTimelineKeyframeDragKey;
12
+ const TimelineKeyframeDragStateContext = (0, react_1.createContext)({
13
+ clearDraggedKeyframes: () => undefined,
14
+ isKeyframeDragging: () => false,
15
+ setDraggedKeyframes: () => undefined,
16
+ });
17
+ const TimelineKeyframeDragStateProvider = ({ children }) => {
18
+ const [draggedKeys, setDraggedKeys] = (0, react_1.useState)(emptyDraggedKeyframes);
19
+ const setDraggedKeyframes = (0, react_1.useCallback)((keyframes) => {
20
+ setDraggedKeys(new Set(keyframes.map(exports.getTimelineKeyframeDragKey)));
21
+ }, []);
22
+ const clearDraggedKeyframes = (0, react_1.useCallback)(() => {
23
+ setDraggedKeys(emptyDraggedKeyframes);
24
+ }, []);
25
+ const isKeyframeDragging = (0, react_1.useCallback)((keyframe) => {
26
+ return draggedKeys.has((0, exports.getTimelineKeyframeDragKey)(keyframe));
27
+ }, [draggedKeys]);
28
+ const value = (0, react_1.useMemo)(() => ({
29
+ clearDraggedKeyframes,
30
+ isKeyframeDragging,
31
+ setDraggedKeyframes,
32
+ }), [clearDraggedKeyframes, isKeyframeDragging, setDraggedKeyframes]);
33
+ return (jsx_runtime_1.jsx(TimelineKeyframeDragStateContext.Provider, { value: value, children: children }));
34
+ };
35
+ exports.TimelineKeyframeDragStateProvider = TimelineKeyframeDragStateProvider;
36
+ const useTimelineKeyframeDragState = () => {
37
+ return (0, react_1.useContext)(TimelineKeyframeDragStateContext);
38
+ };
39
+ exports.useTimelineKeyframeDragState = useTimelineKeyframeDragState;
@@ -11,8 +11,8 @@ const container = {
11
11
  };
12
12
  const TimelineList = ({ timeline }) => {
13
13
  return (jsx_runtime_1.jsxs("div", { style: container, children: [
14
- jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimePadding, {}), timeline.map((track) => {
15
- return (jsx_runtime_1.jsx("div", { children: jsx_runtime_1.jsx(TimelineSequenceItem_1.TimelineSequenceItem, { nestedDepth: track.depth, sequence: track.sequence, nodePathInfo: track.nodePathInfo, keyframeDisplayOffset: track.keyframeDisplayOffset }, track.sequence.id) }, track.sequence.id));
14
+ jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimePadding, {}), timeline.map((track, trackIndex) => {
15
+ return (jsx_runtime_1.jsx("div", { children: jsx_runtime_1.jsx(TimelineSequenceItem_1.TimelineSequenceItem, { trackIndex: trackIndex, nestedDepth: track.depth, sequence: track.sequence, nodePathInfo: track.nodePathInfo, keyframeDisplayOffset: track.keyframeDisplayOffset }, track.sequence.id) }, track.sequence.id));
16
16
  })] }));
17
17
  };
18
18
  exports.TimelineList = TimelineList;
@@ -1,17 +1,4 @@
1
1
  import React from 'react';
2
- type LinkInfo = {
3
- kind: 'local';
4
- assetPath: string;
5
- title: string;
6
- } | {
7
- kind: 'remote';
8
- href: string;
9
- title: string;
10
- } | null;
11
- export type TimelineAssetLinkInfo = Exclude<LinkInfo, null>;
12
- export declare const getTimelineAssetLinkInfo: (src: string) => LinkInfo;
13
- export declare const openTimelineAssetLink: (linkInfo: TimelineAssetLinkInfo, setCanvasContent: React.Dispatch<React.SetStateAction<import("remotion").CanvasContent | null>>) => void;
14
2
  export declare const TimelineMediaInfo: React.FC<{
15
3
  readonly src: string;
16
4
  }>;
17
- export {};
@@ -1,44 +1,12 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.TimelineMediaInfo = exports.openTimelineAssetLink = exports.getTimelineAssetLinkInfo = void 0;
3
+ exports.TimelineMediaInfo = void 0;
37
4
  const jsx_runtime_1 = require("react/jsx-runtime");
38
- const react_1 = __importStar(require("react"));
5
+ const react_1 = require("react");
39
6
  const remotion_1 = require("remotion");
40
7
  const colors_1 = require("../../helpers/colors");
41
- const url_state_1 = require("../../helpers/url-state");
8
+ const use_select_asset_1 = require("../use-select-asset");
9
+ const timeline_asset_link_1 = require("./timeline-asset-link");
42
10
  const TimelineSelection_1 = require("./TimelineSelection");
43
11
  const lineStyle = {
44
12
  whiteSpace: 'nowrap',
@@ -49,43 +17,10 @@ const lineStyle = {
49
17
  color: colors_1.VERY_LIGHT_TEXT,
50
18
  display: 'inline-block',
51
19
  };
52
- const getTimelineAssetLinkInfo = (src) => {
53
- const staticBase = typeof window === 'undefined' ? null : window.remotion_staticBase;
54
- if (staticBase && src.startsWith(staticBase + '/')) {
55
- const assetPath = src.slice(staticBase.length + 1);
56
- return {
57
- kind: 'local',
58
- assetPath: decodeURIComponent(assetPath),
59
- title: decodeURIComponent(assetPath),
60
- };
61
- }
62
- if (src.startsWith('http://') ||
63
- src.startsWith('https://') ||
64
- src.startsWith('//')) {
65
- try {
66
- const url = new URL(src.startsWith('//') ? 'https:' + src : src);
67
- return { kind: 'remote', href: src, title: url.hostname };
68
- }
69
- catch (_a) {
70
- return { kind: 'remote', href: src, title: src };
71
- }
72
- }
73
- return null;
74
- };
75
- exports.getTimelineAssetLinkInfo = getTimelineAssetLinkInfo;
76
- const openTimelineAssetLink = (linkInfo, setCanvasContent) => {
77
- if (linkInfo.kind === 'local') {
78
- setCanvasContent({ type: 'asset', asset: linkInfo.assetPath });
79
- (0, url_state_1.pushUrl)(`/assets/${linkInfo.assetPath}`);
80
- return;
81
- }
82
- window.open(linkInfo.href, '_blank', 'noopener,noreferrer');
83
- };
84
- exports.openTimelineAssetLink = openTimelineAssetLink;
85
20
  const useAssetLink = (src) => {
86
- const { setCanvasContent } = react_1.default.useContext(remotion_1.Internals.CompositionSetters);
21
+ const selectAsset = (0, use_select_asset_1.useSelectAsset)();
87
22
  const [hovered, setHovered] = (0, react_1.useState)(false);
88
- const linkInfo = (0, react_1.useMemo)(() => (0, exports.getTimelineAssetLinkInfo)(src), [src]);
23
+ const linkInfo = (0, react_1.useMemo)(() => (0, timeline_asset_link_1.getTimelineAssetLinkInfo)(src), [src]);
89
24
  const interactive = !TimelineSelection_1.SELECTION_ENABLED && linkInfo !== null;
90
25
  const onClick = (0, react_1.useCallback)((e) => {
91
26
  if (!linkInfo) {
@@ -93,8 +28,8 @@ const useAssetLink = (src) => {
93
28
  }
94
29
  e.preventDefault();
95
30
  e.stopPropagation();
96
- (0, exports.openTimelineAssetLink)(linkInfo, setCanvasContent);
97
- }, [linkInfo, setCanvasContent]);
31
+ (0, timeline_asset_link_1.openTimelineAssetLink)(linkInfo, selectAsset);
32
+ }, [linkInfo, selectAsset]);
98
33
  const onPointerEnter = (0, react_1.useCallback)(() => setHovered(true), []);
99
34
  const onPointerLeave = (0, react_1.useCallback)(() => setHovered(false), []);
100
35
  const fileNameStyle = (0, react_1.useMemo)(() => ({
@@ -308,7 +308,7 @@ const TimelineScaleField = ({ field, propStatus, effectiveValue, onSave, onDragV
308
308
  });
309
309
  }, [field.key, linked, scaleLockNodePath, setScaleLockState]);
310
310
  return (jsx_runtime_1.jsxs("span", { style: containerStyle, children: [
311
- jsx_runtime_1.jsx(LinkToggle, { linked: linked, onToggle: onToggleLink }), jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragX !== null && dragX !== void 0 ? dragX : codeX, style: leftDraggerStyle, status: "ok", small: true, onValueChange: onXChange, onValueChangeEnd: onXChangeEnd, onTextChange: onXTextChange, min: min, max: max, step: step, formatter: formatter, rightAlign: false }), jsx_runtime_1.jsx("div", { style: gapStyle }), jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragY !== null && dragY !== void 0 ? dragY : codeY, style: rightDraggerStyle, status: "ok", small: true, onValueChange: onYChange, onValueChangeEnd: onYChangeEnd, onTextChange: onYTextChange, min: min, max: max, step: step, formatter: formatter, rightAlign: false })
311
+ jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragX !== null && dragX !== void 0 ? dragX : codeX, style: leftDraggerStyle, status: "ok", small: true, onValueChange: onXChange, onValueChangeEnd: onXChangeEnd, onTextChange: onXTextChange, min: min, max: max, step: step, formatter: formatter, rightAlign: false }), jsx_runtime_1.jsx("div", { style: gapStyle }), jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragY !== null && dragY !== void 0 ? dragY : codeY, style: rightDraggerStyle, status: "ok", small: true, onValueChange: onYChange, onValueChangeEnd: onYChangeEnd, onTextChange: onYTextChange, min: min, max: max, step: step, formatter: formatter, rightAlign: false }), jsx_runtime_1.jsx(LinkToggle, { linked: linked, onToggle: onToggleLink })
312
312
  ] }));
313
313
  };
314
314
  exports.TimelineScaleField = TimelineScaleField;
@@ -6,4 +6,5 @@ export declare const TimelineSequenceItem: React.FC<{
6
6
  readonly nestedDepth: number;
7
7
  readonly nodePathInfo: SequenceNodePathInfo | null;
8
8
  readonly keyframeDisplayOffset: number;
9
+ readonly trackIndex: number;
9
10
  }>;