@remotion/studio 4.0.505 → 4.0.507
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/api/copy-render-output-to-asset.d.ts +4 -0
- package/dist/api/copy-render-output-to-asset.js +11 -0
- package/dist/api/install-package.d.ts +2 -3
- package/dist/api/install-package.js +1 -3
- package/dist/api/visual-control.d.ts +3 -0
- package/dist/api/visual-control.js +3 -0
- package/dist/components/AssetSelector.js +19 -4
- package/dist/components/AssetSelectorItem.js +3 -3
- package/dist/components/Canvas.js +2 -0
- package/dist/components/CodingAgentIcon.d.ts +4 -0
- package/dist/components/CodingAgentIcon.js +17 -0
- package/dist/components/CompositionSelector.js +1 -1
- package/dist/components/CompositionSelectorItem.js +1 -1
- package/dist/components/ConfigureDefaultEditorModal.d.ts +1 -1
- package/dist/components/ConfigureDefaultEditorModal.js +117 -69
- package/dist/components/ConfigureLicenseModal.d.ts +1 -3
- package/dist/components/ConfigureLicenseModal.js +105 -89
- package/dist/components/ConfirmationDialog.js +2 -2
- package/dist/components/ContextMenu.js +10 -8
- package/dist/components/Editor.js +2 -0
- package/dist/components/EditorContexts.js +6 -5
- package/dist/components/EffectPickerModal.js +1 -1
- package/dist/components/ExpandedTracksProvider.js +10 -53
- package/dist/components/GlobalKeybindings.js +3 -2
- package/dist/components/InlineCaptionInspector.d.ts +2 -2
- package/dist/components/InlineDropdown.d.ts +2 -1
- package/dist/components/InlineDropdown.js +10 -4
- package/dist/components/InspectorLocationCopy.js +8 -8
- package/dist/components/InspectorOpenInEditor.d.ts +2 -0
- package/dist/components/InspectorOpenInEditor.js +63 -49
- package/dist/components/InspectorPanel/AlignmentControls.js +5 -2
- package/dist/components/InspectorPanel/CompositionInspector.js +15 -1
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +1 -1
- package/dist/components/InspectorPanel/EasingInspector.js +7 -4
- package/dist/components/InspectorPanel/KeyframeInspector.js +5 -1
- package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -0
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +22 -4
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -1
- package/dist/components/InspectorPanel/common.d.ts +1 -0
- package/dist/components/InspectorPanel/common.js +2 -2
- package/dist/components/InspectorPanel/use-composition-actions.js +4 -1
- package/dist/components/InspectorSequenceSection.js +4 -4
- package/dist/components/InstallPackage.js +1 -1
- package/dist/components/Menu/MenuSectionHeader.d.ts +4 -0
- package/dist/components/Menu/MenuSectionHeader.js +20 -0
- package/dist/components/Menu/SubMenu.js +13 -2
- package/dist/components/Menu/menu-tree-context.d.ts +3 -0
- package/dist/components/Menu/menu-tree-context.js +13 -0
- package/dist/components/MenuBuildIndicator.js +1 -0
- package/dist/components/MenuToolbar.js +1 -1
- package/dist/components/ModalFooter.d.ts +1 -0
- package/dist/components/ModalFooter.js +6 -2
- package/dist/components/ModalHeader.js +1 -1
- package/dist/components/Modals.js +18 -7
- package/dist/components/ModalsProvider.js +5 -6
- package/dist/components/NewComposition/CodemodFooter.js +1 -1
- package/dist/components/NewComposition/ComboBox.d.ts +6 -1
- package/dist/components/NewComposition/DismissableModal.js +1 -1
- package/dist/components/NewComposition/MenuContent.js +27 -19
- package/dist/components/NewComposition/RenameStaticFile.js +1 -1
- package/dist/components/NewComposition/menu-typeahead.js +2 -2
- package/dist/components/OverrideInputProps.js +1 -1
- package/dist/components/PlayPause.js +2 -1
- package/dist/components/PlaybackKeyboardShortcutsManager.js +7 -5
- package/dist/components/Preview.js +29 -4
- package/dist/components/PreviewToolbarOverflowButton.js +4 -2
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -1
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
- package/dist/components/RenderButton.d.ts +3 -3
- package/dist/components/RenderButton.js +42 -7
- package/dist/components/RenderModal/RenderStatusModal.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.d.ts +1 -0
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +3 -3
- package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +1 -1
- package/dist/components/RenderModal/ServerRenderModal.js +5 -1
- package/dist/components/RenderModal/WebRenderModal.js +3 -2
- package/dist/components/RenderQueue/RenderQueueError.js +1 -1
- package/dist/components/RenderQueue/RenderQueueItem.js +8 -2
- package/dist/components/RenderQueue/RenderQueueItemStatus.js +1 -1
- package/dist/components/RenderQueue/RenderQueueProgressMessage.js +1 -1
- package/dist/components/RenderQueue/RenderQueueRepeat.js +1 -1
- package/dist/components/RenderQueue/actions.d.ts +4 -2
- package/dist/components/RenderQueue/actions.js +4 -2
- package/dist/components/RenderQueue/index.js +3 -4
- package/dist/components/RenderQueue/use-render-output-file-drag.d.ts +8 -0
- package/dist/components/RenderQueue/use-render-output-file-drag.js +121 -0
- package/dist/components/SegmentedControl.js +0 -1
- package/dist/components/SelectedOutlineElement.d.ts +14 -17
- package/dist/components/SelectedOutlineElement.js +113 -931
- package/dist/components/SelectedOutlineKeyboardControls.d.ts +7 -0
- package/dist/components/SelectedOutlineKeyboardControls.js +261 -0
- package/dist/components/SelectedOutlineOverlay.d.ts +6 -13
- package/dist/components/SelectedOutlineOverlay.js +360 -832
- package/dist/components/SelectedOutlinePolygon.d.ts +25 -0
- package/dist/components/SelectedOutlinePolygon.js +359 -0
- package/dist/components/SelectedOutlineRenderer.d.ts +18 -0
- package/dist/components/SelectedOutlineRenderer.js +208 -0
- package/dist/components/SelectedOutlineRotationCornerHandle.d.ts +16 -0
- package/dist/components/SelectedOutlineRotationCornerHandle.js +269 -0
- package/dist/components/SelectedOutlineScaleEdgeLine.d.ts +16 -0
- package/dist/components/SelectedOutlineScaleEdgeLine.js +211 -0
- package/dist/components/SelectedOutlineSnapIndicators.d.ts +9 -0
- package/dist/components/SelectedOutlineSnapIndicators.js +29 -0
- package/dist/components/SelectedOutlineTransformOriginHandle.d.ts +9 -0
- package/dist/components/SelectedOutlineTransformOriginHandle.js +286 -0
- package/dist/components/SelectedOutlineUvControls.d.ts +3 -9
- package/dist/components/SelectedOutlineUvControls.js +57 -12
- package/dist/components/SettingsContext.d.ts +15 -0
- package/dist/components/SettingsContext.js +116 -0
- package/dist/components/SettingsModal.d.ts +7 -0
- package/dist/components/SettingsModal.js +56 -0
- package/dist/components/SettingsModalFooter.d.ts +2 -0
- package/dist/components/SettingsModalFooter.js +44 -0
- package/dist/components/ShowOutlinesProvider.js +2 -3
- package/dist/components/SidebarRenderButton.js +1 -1
- package/dist/components/SvgImportDialog.js +2 -2
- package/dist/components/TimeValue.js +1 -1
- package/dist/components/Timeline/EasingEditorModal.js +66 -22
- package/dist/components/Timeline/Timeline.js +23 -5
- package/dist/components/Timeline/TimelineAssetField.js +1 -1
- package/dist/components/Timeline/TimelineDragHandler.js +3 -3
- package/dist/components/Timeline/TimelineDuplicateCount.d.ts +4 -0
- package/dist/components/Timeline/TimelineDuplicateCount.js +28 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +5 -3
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +3 -23
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +4 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.d.ts +4 -2
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +11 -1
- package/dist/components/Timeline/TimelineFontFamilyField.js +3 -1
- package/dist/components/Timeline/TimelineKeyframeControls.js +1 -0
- package/dist/components/Timeline/TimelineSelection.js +1 -0
- package/dist/components/Timeline/TimelineSequence.js +28 -25
- package/dist/components/Timeline/TimelineSequenceItem.js +74 -58
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +1 -1
- package/dist/components/Timeline/TimelineTrack.js +2 -1
- package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +6 -3
- package/dist/components/Timeline/get-sequence-context-menu-items.js +58 -53
- package/dist/components/Timeline/reset-selected-timeline-props.js +1 -1
- package/dist/components/Timeline/should-subscribe-to-sequence-props.d.ts +1 -1
- package/dist/components/Timeline/timeline-asset-link.d.ts +2 -2
- package/dist/components/Timeline/timeline-asset-link.js +2 -2
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +38 -2
- package/dist/components/Timeline/{use-open-sequence-in-editor.d.ts → use-open-sequence-in-apps.d.ts} +4 -1
- package/dist/components/Timeline/{use-open-sequence-in-editor.js → use-open-sequence-in-apps.js} +20 -4
- package/dist/components/Timeline/use-timeline-asset-drop.js +1 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +5 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.js +50 -1
- package/dist/components/Timeline/use-timeline-height.js +20 -0
- package/dist/components/TimelineInOutToggle.js +5 -1
- package/dist/components/TopPanel.js +16 -0
- package/dist/components/UpdateCheck.js +1 -1
- package/dist/components/effect-drag-and-drop.js +1 -1
- package/dist/components/get-open-in-menu-items.d.ts +12 -0
- package/dist/components/get-open-in-menu-items.js +83 -0
- package/dist/components/handle-drop.d.ts +2 -1
- package/dist/components/handle-drop.js +12 -2
- package/dist/components/import-assets.d.ts +18 -6
- package/dist/components/import-assets.js +76 -32
- package/dist/components/selected-outline-measurement.d.ts +2 -2
- package/dist/components/selected-outline-order.d.ts +12 -0
- package/dist/components/selected-outline-order.js +251 -0
- package/dist/components/selected-outline-types.d.ts +9 -10
- package/dist/components/svg-point-to-client-point.d.ts +2 -0
- package/dist/components/svg-point-to-client-point.js +10 -0
- package/dist/components/use-auto-save-config.d.ts +8 -0
- package/dist/components/use-auto-save-config.js +74 -0
- package/dist/components/use-default-editor-info.d.ts +1 -0
- package/dist/components/use-default-editor-info.js +10 -30
- package/dist/esm/{chunk-jefhcs5z.js → chunk-fgedsvhb.js} +1 -2
- package/dist/esm/{chunk-7pgk8h5m.js → chunk-ptnd65a9.js} +14596 -12725
- package/dist/esm/internals.mjs +14595 -12724
- package/dist/esm/previewEntry.mjs +12726 -10855
- package/dist/esm/renderEntry.mjs +2 -2
- package/dist/helpers/are-sequence-node-path-infos-equal.d.ts +2 -0
- package/dist/helpers/are-sequence-node-path-infos-equal.js +27 -0
- package/dist/helpers/calculate-timeline.js +3 -3
- package/dist/helpers/client-id.d.ts +3 -1
- package/dist/helpers/client-id.js +28 -4
- package/dist/helpers/format-file-location.d.ts +1 -1
- package/dist/helpers/format-file-location.js +3 -3
- package/dist/helpers/install-required-package.d.ts +3 -3
- package/dist/helpers/install-required-package.js +1 -6
- package/dist/helpers/migrate-expanded-tracks-for-subscription-key.js +3 -3
- package/dist/helpers/open-in-editor.d.ts +1 -0
- package/dist/helpers/open-in-editor.js +5 -1
- package/dist/helpers/studio-fit-padding.d.ts +1 -1
- package/dist/helpers/studio-fit-padding.js +1 -1
- package/dist/helpers/studio-runtime-config.js +3 -0
- package/dist/helpers/timeline-layout.d.ts +2 -1
- package/dist/helpers/timeline-layout.js +5 -2
- package/dist/helpers/timeline-node-path-key.d.ts +2 -0
- package/dist/helpers/timeline-node-path-key.js +3 -1
- package/dist/helpers/use-asset-drag-events.d.ts +2 -1
- package/dist/helpers/use-asset-drag-events.js +14 -6
- package/dist/helpers/use-menu-structure.js +25 -35
- package/dist/helpers/use-runtime-values.d.ts +9 -0
- package/dist/helpers/use-runtime-values.js +76 -0
- package/dist/icons/apps.d.ts +2 -0
- package/dist/icons/apps.js +7 -0
- package/dist/icons/browse-elements.d.ts +4 -0
- package/dist/icons/browse-elements.js +10 -0
- package/dist/state/modals.d.ts +5 -6
- package/dist/state/modals.js +5 -3
- package/dist/state/timeline-sequence-hover.d.ts +9 -3
- package/dist/state/timeline-sequence-hover.js +63 -12
- package/package.json +12 -12
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.orderOutlinesForRendering = void 0;
|
|
4
|
+
const outlinePointEqualityTolerance = 0.5;
|
|
5
|
+
const outlineAreaEqualityTolerance = 0.5;
|
|
6
|
+
const outlineBoundsOverlapTolerance = 0.5;
|
|
7
|
+
const outlinePointsAreEquivalent = (a, b) => {
|
|
8
|
+
return (Math.abs(a.x - b.x) <= outlinePointEqualityTolerance &&
|
|
9
|
+
Math.abs(a.y - b.y) <= outlinePointEqualityTolerance);
|
|
10
|
+
};
|
|
11
|
+
const outlinesHaveEquivalentHitArea = (a, b) => {
|
|
12
|
+
if (a.points.length !== b.points.length) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
for (let startIndex = 0; startIndex < b.points.length; startIndex++) {
|
|
16
|
+
for (const direction of [1, -1]) {
|
|
17
|
+
const pointsMatch = a.points.every((point, index) => {
|
|
18
|
+
const bIndex = (startIndex + direction * index + b.points.length) % b.points.length;
|
|
19
|
+
return outlinePointsAreEquivalent(point, b.points[bIndex]);
|
|
20
|
+
});
|
|
21
|
+
if (pointsMatch) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
};
|
|
28
|
+
const getOutlineHitArea = (outline) => {
|
|
29
|
+
let area = 0;
|
|
30
|
+
for (let i = 0; i < outline.points.length; i++) {
|
|
31
|
+
const current = outline.points[i];
|
|
32
|
+
const next = outline.points[(i + 1) % outline.points.length];
|
|
33
|
+
area += current.x * next.y - next.x * current.y;
|
|
34
|
+
}
|
|
35
|
+
return Math.abs(area) / 2;
|
|
36
|
+
};
|
|
37
|
+
const getOutlineBounds = (outline) => {
|
|
38
|
+
const xs = outline.points.map((point) => point.x);
|
|
39
|
+
const ys = outline.points.map((point) => point.y);
|
|
40
|
+
return {
|
|
41
|
+
maxX: Math.max(...xs),
|
|
42
|
+
maxY: Math.max(...ys),
|
|
43
|
+
minX: Math.min(...xs),
|
|
44
|
+
minY: Math.min(...ys),
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
const outlineBoundsOverlap = (a, b) => {
|
|
48
|
+
const aBounds = getOutlineBounds(a);
|
|
49
|
+
const bBounds = getOutlineBounds(b);
|
|
50
|
+
return (aBounds.minX <= bBounds.maxX + outlineBoundsOverlapTolerance &&
|
|
51
|
+
aBounds.maxX + outlineBoundsOverlapTolerance >= bBounds.minX &&
|
|
52
|
+
aBounds.minY <= bBounds.maxY + outlineBoundsOverlapTolerance &&
|
|
53
|
+
aBounds.maxY + outlineBoundsOverlapTolerance >= bBounds.minY);
|
|
54
|
+
};
|
|
55
|
+
const getSequenceId = (target) => {
|
|
56
|
+
var _a;
|
|
57
|
+
var _b;
|
|
58
|
+
return (_b = (_a = target === null || target === void 0 ? void 0 : target.sequence) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;
|
|
59
|
+
};
|
|
60
|
+
const getParentBySequenceId = ({ sequences, targetsByKey, }) => {
|
|
61
|
+
const parentBySequenceId = new Map();
|
|
62
|
+
for (const sequence of sequences) {
|
|
63
|
+
parentBySequenceId.set(sequence.id, sequence.parent);
|
|
64
|
+
}
|
|
65
|
+
for (const target of targetsByKey.values()) {
|
|
66
|
+
const sequenceId = getSequenceId(target);
|
|
67
|
+
if (sequenceId !== null && !parentBySequenceId.has(sequenceId)) {
|
|
68
|
+
parentBySequenceId.set(sequenceId, target.sequence.parent);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return parentBySequenceId;
|
|
72
|
+
};
|
|
73
|
+
const isAncestorTarget = ({ ancestor, descendant, parentBySequenceId, }) => {
|
|
74
|
+
var _a;
|
|
75
|
+
var _b, _c;
|
|
76
|
+
const ancestorId = getSequenceId(ancestor);
|
|
77
|
+
if (ancestorId === null) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
let parentId = (_b = (_a = descendant.sequence) === null || _a === void 0 ? void 0 : _a.parent) !== null && _b !== void 0 ? _b : null;
|
|
81
|
+
while (parentId !== null) {
|
|
82
|
+
if (parentId === ancestorId) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
parentId = (_c = parentBySequenceId.get(parentId)) !== null && _c !== void 0 ? _c : null;
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
};
|
|
89
|
+
const orderOutlineGroup = ({ outlines, parentBySequenceId, targetsByKey, }) => {
|
|
90
|
+
var _a;
|
|
91
|
+
var _b, _c, _d, _e;
|
|
92
|
+
const incomingEdges = new Map();
|
|
93
|
+
const outgoingEdges = new Map();
|
|
94
|
+
const outlinesByKey = new Map(outlines.map((outline) => [outline.key, outline]));
|
|
95
|
+
for (const outline of outlines) {
|
|
96
|
+
incomingEdges.set(outline.key, new Set());
|
|
97
|
+
outgoingEdges.set(outline.key, new Set());
|
|
98
|
+
}
|
|
99
|
+
const hasPath = ({ fromKey, seen, toKey, }) => {
|
|
100
|
+
var _a;
|
|
101
|
+
if (fromKey === toKey) {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
if (seen.has(fromKey)) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
seen.add(fromKey);
|
|
108
|
+
for (const nextKey of (_a = outgoingEdges.get(fromKey)) !== null && _a !== void 0 ? _a : []) {
|
|
109
|
+
if (hasPath({ fromKey: nextKey, seen, toKey })) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
};
|
|
115
|
+
const addEdge = (before, after, options) => {
|
|
116
|
+
if (before.key === after.key) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const incoming = incomingEdges.get(after.key);
|
|
120
|
+
const outgoing = outgoingEdges.get(before.key);
|
|
121
|
+
if (incoming === undefined || outgoing === undefined) {
|
|
122
|
+
throw new Error('Expected outline to be registered before adding edge');
|
|
123
|
+
}
|
|
124
|
+
if (outgoing.has(after.key)) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (hasPath({ fromKey: after.key, seen: new Set(), toKey: before.key })) {
|
|
128
|
+
if (options === null || options === void 0 ? void 0 : options.skipIfCycle) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
throw new Error('Could not determine a stable outline rendering order');
|
|
132
|
+
}
|
|
133
|
+
incoming.add(before.key);
|
|
134
|
+
outgoing.add(after.key);
|
|
135
|
+
};
|
|
136
|
+
const addAncestorConstraint = ({ ancestor, descendant, descendantContainsSelection, equivalentHitArea, }) => {
|
|
137
|
+
// Usually, children should be above parents so nested elements are directly
|
|
138
|
+
// selectable. If an unselected child has the same hit area as its parent, put
|
|
139
|
+
// it below the parent so the wrapper can be selected. Once the child or
|
|
140
|
+
// one of its properties is selected, keep it above the parent so it remains
|
|
141
|
+
// directly draggable.
|
|
142
|
+
if (equivalentHitArea && !descendantContainsSelection) {
|
|
143
|
+
addEdge(descendant, ancestor);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
addEdge(ancestor, descendant);
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
const outlineBySequenceId = new Map();
|
|
150
|
+
for (const outline of outlines) {
|
|
151
|
+
const sequenceId = getSequenceId(targetsByKey.get(outline.key));
|
|
152
|
+
if (sequenceId !== null) {
|
|
153
|
+
outlineBySequenceId.set(sequenceId, outline);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Only constrain each outline against its nearest rendered ancestor. The
|
|
157
|
+
// resulting graph follows the sequence tree, so pairwise subpixel equivalence
|
|
158
|
+
// cannot introduce contradictory edges across three nested outlines.
|
|
159
|
+
for (const descendant of outlines) {
|
|
160
|
+
const descendantTarget = targetsByKey.get(descendant.key);
|
|
161
|
+
let parentId = (_b = (_a = descendantTarget === null || descendantTarget === void 0 ? void 0 : descendantTarget.sequence) === null || _a === void 0 ? void 0 : _a.parent) !== null && _b !== void 0 ? _b : null;
|
|
162
|
+
while (parentId !== null) {
|
|
163
|
+
const ancestor = outlineBySequenceId.get(parentId);
|
|
164
|
+
if (ancestor !== undefined) {
|
|
165
|
+
addAncestorConstraint({
|
|
166
|
+
ancestor,
|
|
167
|
+
descendant,
|
|
168
|
+
descendantContainsSelection: ((_c = descendantTarget === null || descendantTarget === void 0 ? void 0 : descendantTarget.selected) !== null && _c !== void 0 ? _c : false) ||
|
|
169
|
+
((_d = descendantTarget === null || descendantTarget === void 0 ? void 0 : descendantTarget.containsSelection) !== null && _d !== void 0 ? _d : false),
|
|
170
|
+
equivalentHitArea: outlinesHaveEquivalentHitArea(ancestor, descendant),
|
|
171
|
+
});
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
parentId = (_e = parentBySequenceId.get(parentId)) !== null && _e !== void 0 ? _e : null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// For unrelated overlapping outlines, put broader hit targets below
|
|
178
|
+
// smaller ones so a large selected sequence cannot swallow clicks on
|
|
179
|
+
// a more specific element in the same canvas area.
|
|
180
|
+
for (let i = 0; i < outlines.length; i++) {
|
|
181
|
+
for (let j = i + 1; j < outlines.length; j++) {
|
|
182
|
+
const a = outlines[i];
|
|
183
|
+
const b = outlines[j];
|
|
184
|
+
const aTarget = targetsByKey.get(a.key);
|
|
185
|
+
const bTarget = targetsByKey.get(b.key);
|
|
186
|
+
if (aTarget === undefined || bTarget === undefined) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
const aAncestorOfB = isAncestorTarget({
|
|
190
|
+
ancestor: aTarget,
|
|
191
|
+
descendant: bTarget,
|
|
192
|
+
parentBySequenceId,
|
|
193
|
+
});
|
|
194
|
+
const bAncestorOfA = isAncestorTarget({
|
|
195
|
+
ancestor: bTarget,
|
|
196
|
+
descendant: aTarget,
|
|
197
|
+
parentBySequenceId,
|
|
198
|
+
});
|
|
199
|
+
if (aAncestorOfB || bAncestorOfA || !outlineBoundsOverlap(a, b)) {
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
const aArea = getOutlineHitArea(a);
|
|
203
|
+
const bArea = getOutlineHitArea(b);
|
|
204
|
+
if (Math.abs(aArea - bArea) <= outlineAreaEqualityTolerance) {
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
if (aArea > bArea) {
|
|
208
|
+
addEdge(a, b, { skipIfCycle: true });
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
addEdge(b, a, { skipIfCycle: true });
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const emitted = new Set();
|
|
216
|
+
const visiting = new Set();
|
|
217
|
+
const ordered = [];
|
|
218
|
+
const visit = (outline) => {
|
|
219
|
+
var _a;
|
|
220
|
+
if (emitted.has(outline.key)) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (visiting.has(outline.key)) {
|
|
224
|
+
throw new Error('Could not determine a stable outline rendering order');
|
|
225
|
+
}
|
|
226
|
+
visiting.add(outline.key);
|
|
227
|
+
for (const dependencyKey of (_a = incomingEdges.get(outline.key)) !== null && _a !== void 0 ? _a : []) {
|
|
228
|
+
const dependency = outlinesByKey.get(dependencyKey);
|
|
229
|
+
if (dependency === undefined) {
|
|
230
|
+
throw new Error('Expected outline dependency to exist');
|
|
231
|
+
}
|
|
232
|
+
visit(dependency);
|
|
233
|
+
}
|
|
234
|
+
visiting.delete(outline.key);
|
|
235
|
+
emitted.add(outline.key);
|
|
236
|
+
ordered.push(outline);
|
|
237
|
+
};
|
|
238
|
+
for (const outline of outlines) {
|
|
239
|
+
visit(outline);
|
|
240
|
+
}
|
|
241
|
+
return ordered;
|
|
242
|
+
};
|
|
243
|
+
const orderOutlinesForRendering = ({ outlines, sequences, targetsByKey, }) => {
|
|
244
|
+
const parentBySequenceId = getParentBySequenceId({ sequences, targetsByKey });
|
|
245
|
+
return orderOutlineGroup({
|
|
246
|
+
outlines,
|
|
247
|
+
parentBySequenceId,
|
|
248
|
+
targetsByKey,
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
exports.orderOutlinesForRendering = orderOutlinesForRendering;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import type { CanUpdateSequencePropStatus, CanUpdateSequencePropStatusKeyframed, CanUpdateSequencePropStatusStatic, InteractivitySchema, InteractivitySchemaField, SequencePropsSubscriptionKey, TSequence } from 'remotion';
|
|
2
2
|
import type { SequenceNodePathInfo } from '../helpers/get-timeline-sequence-sort-key';
|
|
3
3
|
import type { ComboboxValue } from './NewComposition/ComboBox';
|
|
4
|
-
import type { SelectedOutlineUvHandle } from './selected-outline-uv';
|
|
5
4
|
import type { TimelineSelection } from './Timeline/TimelineSelection';
|
|
6
5
|
export type SelectedOutlineContextMenuOpenResult = false | readonly ComboboxValue[];
|
|
7
6
|
export type SelectedOutlineContextMenuOpenHandler = () => SelectedOutlineContextMenuOpenResult | Promise<SelectedOutlineContextMenuOpenResult>;
|
|
8
|
-
export type
|
|
7
|
+
export type SelectedOutlineLayoutTarget = {
|
|
9
8
|
readonly key: string;
|
|
10
|
-
readonly canCrop: boolean;
|
|
11
9
|
readonly containsSelection: boolean;
|
|
12
|
-
readonly
|
|
10
|
+
readonly keyframeDisplayOffset: number;
|
|
13
11
|
readonly nodePathInfo: SequenceNodePathInfo;
|
|
14
12
|
readonly ref: React.RefObject<Element | null>;
|
|
15
13
|
readonly selected: boolean;
|
|
14
|
+
readonly selectedForCrop: boolean;
|
|
15
|
+
readonly selectedForTransformOrigin: boolean;
|
|
16
|
+
readonly selectedForUvHandles: boolean;
|
|
17
|
+
readonly showSelectedOutline: boolean;
|
|
16
18
|
readonly selection: TimelineSelection;
|
|
17
19
|
readonly sequence: TSequence;
|
|
18
20
|
readonly crop: {
|
|
@@ -21,12 +23,14 @@ export type SelectedOutlineTarget = {
|
|
|
21
23
|
readonly top: number;
|
|
22
24
|
readonly bottom: number;
|
|
23
25
|
};
|
|
26
|
+
};
|
|
27
|
+
export type SelectedOutlineTarget = SelectedOutlineLayoutTarget & {
|
|
28
|
+
readonly canCrop: boolean;
|
|
24
29
|
readonly cropDrag: SelectedOutlineCropDragTarget | null;
|
|
25
30
|
readonly drag: SelectedOutlineDragTarget | null;
|
|
26
31
|
readonly scaleDrag: SelectedOutlineScaleDragTarget | null;
|
|
27
32
|
readonly rotationDrag: SelectedOutlineRotationDragTarget | null;
|
|
28
33
|
readonly transformOriginDrag: SelectedOutlineTransformOriginDragTarget | null;
|
|
29
|
-
readonly uvHandles: readonly SelectedOutlineUvHandle[];
|
|
30
34
|
};
|
|
31
35
|
export declare const cropFieldKeys: {
|
|
32
36
|
readonly left: "cropLeft";
|
|
@@ -62,11 +66,6 @@ export type SelectedOutlineCropDragTarget = {
|
|
|
62
66
|
readonly value: string;
|
|
63
67
|
} | null;
|
|
64
68
|
};
|
|
65
|
-
export type SelectedOutlineEffectDropTarget = {
|
|
66
|
-
readonly clientId: string;
|
|
67
|
-
readonly fileName: string;
|
|
68
|
-
readonly nodePath: SequencePropsSubscriptionKey;
|
|
69
|
-
};
|
|
70
69
|
export type SelectedOutlineDragTarget = {
|
|
71
70
|
readonly propStatus: CanUpdateSequencePropStatusStatic | CanUpdateSequencePropStatusKeyframed;
|
|
72
71
|
readonly clientId: string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.svgPointToClientPoint = void 0;
|
|
4
|
+
const svgPointToClientPoint = (point, rect) => {
|
|
5
|
+
return {
|
|
6
|
+
x: point.x + rect.left,
|
|
7
|
+
y: point.y + rect.top,
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
exports.svgPointToClientPoint = svgPointToClientPoint;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ConfigUpdate } from '@remotion/studio-shared';
|
|
2
|
+
export declare const useAutoSaveConfig: ({ enabled, onError, ready, syncRevision, updates, }: {
|
|
3
|
+
readonly enabled: boolean;
|
|
4
|
+
readonly onError: (error: string | null) => void;
|
|
5
|
+
readonly ready: boolean;
|
|
6
|
+
readonly syncRevision: number;
|
|
7
|
+
readonly updates: ConfigUpdate[];
|
|
8
|
+
}) => void;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useAutoSaveConfig = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const client_id_1 = require("../helpers/client-id");
|
|
6
|
+
const call_api_1 = require("./call-api");
|
|
7
|
+
const useAutoSaveConfig = ({ enabled, onError, ready, syncRevision, updates, }) => {
|
|
8
|
+
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
9
|
+
const serializedUpdates = (0, react_1.useMemo)(() => JSON.stringify(updates), [updates]);
|
|
10
|
+
const initialUpdates = (0, react_1.useRef)(null);
|
|
11
|
+
const lastQueuedUpdates = (0, react_1.useRef)(null);
|
|
12
|
+
const lastSyncRevision = (0, react_1.useRef)(null);
|
|
13
|
+
const syncGeneration = (0, react_1.useRef)(0);
|
|
14
|
+
const saveQueue = (0, react_1.useRef)(Promise.resolve());
|
|
15
|
+
const mounted = (0, react_1.useRef)(true);
|
|
16
|
+
(0, react_1.useEffect)(() => {
|
|
17
|
+
mounted.current = true;
|
|
18
|
+
return () => {
|
|
19
|
+
mounted.current = false;
|
|
20
|
+
};
|
|
21
|
+
}, []);
|
|
22
|
+
(0, react_1.useEffect)(() => {
|
|
23
|
+
if (!ready) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (initialUpdates.current === null ||
|
|
27
|
+
lastSyncRevision.current !== syncRevision) {
|
|
28
|
+
initialUpdates.current = serializedUpdates;
|
|
29
|
+
lastQueuedUpdates.current = serializedUpdates;
|
|
30
|
+
lastSyncRevision.current = syncRevision;
|
|
31
|
+
syncGeneration.current++;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!enabled ||
|
|
35
|
+
previewServerState.type !== 'connected' ||
|
|
36
|
+
lastQueuedUpdates.current === serializedUpdates) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
lastQueuedUpdates.current = serializedUpdates;
|
|
40
|
+
onError(null);
|
|
41
|
+
const generation = syncGeneration.current;
|
|
42
|
+
saveQueue.current = saveQueue.current.then(async () => {
|
|
43
|
+
if (generation !== syncGeneration.current) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const response = await (0, call_api_1.callApi)('/api/update-config', {
|
|
48
|
+
clientId: previewServerState.clientId,
|
|
49
|
+
updates,
|
|
50
|
+
});
|
|
51
|
+
if (!response.success &&
|
|
52
|
+
mounted.current &&
|
|
53
|
+
lastQueuedUpdates.current === serializedUpdates) {
|
|
54
|
+
onError(response.reason);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if (mounted.current &&
|
|
59
|
+
lastQueuedUpdates.current === serializedUpdates) {
|
|
60
|
+
onError(err.message);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}, [
|
|
65
|
+
enabled,
|
|
66
|
+
onError,
|
|
67
|
+
previewServerState,
|
|
68
|
+
ready,
|
|
69
|
+
serializedUpdates,
|
|
70
|
+
syncRevision,
|
|
71
|
+
updates,
|
|
72
|
+
]);
|
|
73
|
+
};
|
|
74
|
+
exports.useAutoSaveConfig = useAutoSaveConfig;
|
|
@@ -2,3 +2,4 @@ import type { EditorPickerId, GetDefaultEditorInfoResponse } from '@remotion/stu
|
|
|
2
2
|
export declare const canUseEditorPicker: (previewServerConnected: boolean) => boolean;
|
|
3
3
|
export declare const getPreferredEditorId: (editorInfo: GetDefaultEditorInfoResponse | null) => EditorPickerId | null;
|
|
4
4
|
export declare const useDefaultEditorInfo: (enabled: boolean) => GetDefaultEditorInfoResponse | null;
|
|
5
|
+
export declare const useDefaultCodingAgentInfo: (enabled: boolean) => import("@remotion/studio-shared").GetDefaultCodingAgentInfoResponse | null;
|
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useDefaultEditorInfo = exports.getPreferredEditorId = exports.canUseEditorPicker = void 0;
|
|
4
|
-
const react_1 = require("react");
|
|
3
|
+
exports.useDefaultCodingAgentInfo = exports.useDefaultEditorInfo = exports.getPreferredEditorId = exports.canUseEditorPicker = void 0;
|
|
5
4
|
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
6
|
-
const
|
|
7
|
-
let editorInfoPromise = null;
|
|
8
|
-
const loadDefaultEditorInfo = () => {
|
|
9
|
-
editorInfoPromise !== null && editorInfoPromise !== void 0 ? editorInfoPromise : (editorInfoPromise = (0, call_api_1.callApi)('/api/default-editor-info', {}).catch((err) => {
|
|
10
|
-
editorInfoPromise = null;
|
|
11
|
-
throw err;
|
|
12
|
-
}));
|
|
13
|
-
return editorInfoPromise;
|
|
14
|
-
};
|
|
5
|
+
const SettingsContext_1 = require("./SettingsContext");
|
|
15
6
|
const canUseEditorPicker = (previewServerConnected) => {
|
|
16
7
|
return (previewServerConnected &&
|
|
17
8
|
!window.remotion_isReadOnlyStudio &&
|
|
@@ -21,27 +12,16 @@ exports.canUseEditorPicker = canUseEditorPicker;
|
|
|
21
12
|
const getPreferredEditorId = (editorInfo) => {
|
|
22
13
|
var _a;
|
|
23
14
|
var _b;
|
|
24
|
-
return ((_b = (_a = editorInfo === null || editorInfo === void 0 ? void 0 : editorInfo.installedEditors.find((editor) => editor.
|
|
15
|
+
return ((_b = (_a = editorInfo === null || editorInfo === void 0 ? void 0 : editorInfo.installedEditors.find((editor) => editor.nameWithType === window.remotion_editorName)) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null);
|
|
25
16
|
};
|
|
26
17
|
exports.getPreferredEditorId = getPreferredEditorId;
|
|
27
18
|
const useDefaultEditorInfo = (enabled) => {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
if (!enabled) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
let cancelled = false;
|
|
34
|
-
loadDefaultEditorInfo()
|
|
35
|
-
.then((response) => {
|
|
36
|
-
if (!cancelled) {
|
|
37
|
-
setEditorInfo(response);
|
|
38
|
-
}
|
|
39
|
-
})
|
|
40
|
-
.catch(() => undefined);
|
|
41
|
-
return () => {
|
|
42
|
-
cancelled = true;
|
|
43
|
-
};
|
|
44
|
-
}, [enabled]);
|
|
45
|
-
return editorInfo;
|
|
19
|
+
const { editorInfo } = (0, SettingsContext_1.useSettings)();
|
|
20
|
+
return enabled ? editorInfo : null;
|
|
46
21
|
};
|
|
47
22
|
exports.useDefaultEditorInfo = useDefaultEditorInfo;
|
|
23
|
+
const useDefaultCodingAgentInfo = (enabled) => {
|
|
24
|
+
const { codingAgentInfo } = (0, SettingsContext_1.useSettings)();
|
|
25
|
+
return enabled ? codingAgentInfo : null;
|
|
26
|
+
};
|
|
27
|
+
exports.useDefaultCodingAgentInfo = useDefaultCodingAgentInfo;
|
|
@@ -98,7 +98,6 @@ var TIMELINE_DROP_BLUE_ALPHA_16 = "rgba(0, 155, 255, 0.16)";
|
|
|
98
98
|
var TIMELINE_DROP_BLUE_ALPHA_75 = "rgba(0, 155, 255, 0.75)";
|
|
99
99
|
var TIMELINE_MARQUEE_BLUE_ALPHA_16 = "rgba(70, 130, 255, 0.16)";
|
|
100
100
|
var TIMELINE_MARQUEE_BLUE_ALPHA_75 = "rgba(70, 130, 255, 0.75)";
|
|
101
|
-
var EASING_SELECTED_BACKGROUND = "rgba(11, 132, 243, 0.18)";
|
|
102
101
|
var INFO_BLUE_BACKGROUND = "rgba(59, 130, 246, 0.15)";
|
|
103
102
|
var BORDER_BLACK = `1px solid ${BLACK_HEX}`;
|
|
104
103
|
var BORDER_WHITE = `1px solid ${WHITE_HEX}`;
|
|
@@ -161,4 +160,4 @@ var getBackgroundFromHoverState = ({
|
|
|
161
160
|
return TRANSPARENT;
|
|
162
161
|
};
|
|
163
162
|
|
|
164
|
-
export { __toESM, __require, BLACK, WHITE, RED, TRANSPARENT, CURRENT_COLOR, CURRENT_COLOR_LOWERCASE, WHITE_HEX, WHITE_FULL_HEX, BLACK_HEX, BLACK_FULL_HEX, BACKGROUND, BACKGROUND_HEX, BACKGROUND__TRANSPARENT, INPUT_BACKGROUND, LIGHT_COLOR, SELECTED_BACKGROUND, LIGHT_TEXT, RULER_COLOR, WHITE_ALPHA_05, WHITE_ALPHA_06, WHITE_ALPHA_08, WHITE_ALPHA_10, WHITE_ALPHA_12, WHITE_ALPHA_15, WHITE_ALPHA_20, WHITE_ALPHA_25, WHITE_ALPHA_30, WHITE_ALPHA_35, WHITE_ALPHA_40, WHITE_ALPHA_45, WHITE_ALPHA_50, WHITE_ALPHA_60, WHITE_ALPHA_70, WHITE_ALPHA_72, WHITE_ALPHA_80, BLACK_ALPHA_30, BLACK_ALPHA_40, BLACK_ALPHA_50, BLACK_ALPHA_60, BLACK_ALPHA_85, FAIL_COLOR, WARNING_COLOR, BLUE, BLUE_HOVERED, BLUE_DISABLED, UNSELECTED_GUIDE, SELECTED_GUIDE, LINE_COLOR, TIMELINE_TRACK_SEPARATOR, LIGHT_GRAY, KEYBOARD_SHORTCUT_KEY_COLOR, NOTIFICATION_BACKGROUND, RENDER_STATUS_BACKGROUND, ERROR_CODE_FRAME_BACKGROUND, ERROR_CODE_FRAME_LINE_BACKGROUND, ERROR_LINK_COLOR, INFO_BLUE, SERVER_DISCONNECTED_BACKGROUND, TIMELINE_BACKGROUND_COLOR, TIMELINE_SELECTED_BACKGROUND_COLOR, TIMELINE_SELECTED_LABEL_BACKGROUND_COLOR, TIMELINE_BLUE, TIMELINE_PLAYHEAD_COLOR, TIMELINE_DROP_BLUE_ALPHA_12, TIMELINE_DROP_BLUE_ALPHA_16, TIMELINE_MARQUEE_BLUE_ALPHA_16,
|
|
163
|
+
export { __toESM, __require, BLACK, WHITE, RED, TRANSPARENT, CURRENT_COLOR, CURRENT_COLOR_LOWERCASE, WHITE_HEX, WHITE_FULL_HEX, BLACK_HEX, BLACK_FULL_HEX, BACKGROUND, BACKGROUND_HEX, BACKGROUND__TRANSPARENT, INPUT_BACKGROUND, LIGHT_COLOR, SELECTED_BACKGROUND, LIGHT_TEXT, RULER_COLOR, WHITE_ALPHA_05, WHITE_ALPHA_06, WHITE_ALPHA_08, WHITE_ALPHA_10, WHITE_ALPHA_12, WHITE_ALPHA_15, WHITE_ALPHA_20, WHITE_ALPHA_25, WHITE_ALPHA_30, WHITE_ALPHA_35, WHITE_ALPHA_40, WHITE_ALPHA_45, WHITE_ALPHA_50, WHITE_ALPHA_60, WHITE_ALPHA_70, WHITE_ALPHA_72, WHITE_ALPHA_80, BLACK_ALPHA_30, BLACK_ALPHA_40, BLACK_ALPHA_50, BLACK_ALPHA_60, BLACK_ALPHA_85, FAIL_COLOR, WARNING_COLOR, BLUE, BLUE_HOVERED, BLUE_DISABLED, UNSELECTED_GUIDE, SELECTED_GUIDE, LINE_COLOR, TIMELINE_TRACK_SEPARATOR, LIGHT_GRAY, KEYBOARD_SHORTCUT_KEY_COLOR, NOTIFICATION_BACKGROUND, RENDER_STATUS_BACKGROUND, ERROR_CODE_FRAME_BACKGROUND, ERROR_CODE_FRAME_LINE_BACKGROUND, ERROR_LINK_COLOR, INFO_BLUE, SERVER_DISCONNECTED_BACKGROUND, TIMELINE_BACKGROUND_COLOR, TIMELINE_SELECTED_BACKGROUND_COLOR, TIMELINE_SELECTED_LABEL_BACKGROUND_COLOR, TIMELINE_BLUE, TIMELINE_PLAYHEAD_COLOR, TIMELINE_DROP_BLUE_ALPHA_12, TIMELINE_DROP_BLUE_ALPHA_16, TIMELINE_MARQUEE_BLUE_ALPHA_16, INFO_BLUE_BACKGROUND, BORDER_BLACK, BORDER_WHITE, BORDER_WHITE_2PX, BORDER_CURRENT_COLOR, BORDER_TRANSPARENT_2PX, BORDER_BLACK_ALPHA_50, BORDER_BLACK_ALPHA_60, BORDER_WHITE_ALPHA_12, BORDER_WHITE_ALPHA_20, BORDER_INFO_BLUE, BORDER_STACK_FRAME_BLUE, BORDER_TIMELINE_DROP_BLUE, BORDER_TIMELINE_MARQUEE_BLUE, SHADOW_BLACK, SHADOW_BLACK_ALPHA_50_TOWARDS_BOTTOM, SHADOW_BLACK_ALPHA_50_TOWARDS_TOP, NOTIFICATION_SHADOW, SERVER_DISCONNECTED_SHADOW, COLOR_PICKER_POPUP_SHADOW, COLOR_PICKER_HANDLE_SHADOW, NOTIFICATION_BORDER, FOCUS_BOX_SHADOW, CHECKERBOARD_BACKGROUND_IMAGE, COLOR_PICKER_CHECKER_BACKGROUND_IMAGE, COLOR_PICKER_CHECKER_BACKGROUND_COLOR, COLOR_PICKER_SATURATION_VALUE_GRADIENT, COLOR_PICKER_SATURATION_BLACK_GRADIENT, COLOR_PICKER_ALPHA_TRANSPARENT, COLOR_PICKER_HUE_GRADIENT, ERROR_MESSAGE_MASK_IMAGE, SELECTED_OUTLINE_DROP_SHADOW, SELECTED_OUTLINE_UV_DROP_SHADOW, LOOPED_INDICATOR_DROP_SHADOW, TIMELINE_AUDIO_GRADIENT, TIMELINE_VIDEO_GRADIENT, TIMELINE_IMAGE_GRADIENT, getBackgroundFromHoverState };
|